Iris
Computer Vision System for PC's

	The field of computer vision has given rise to many vision systems designed specifically for high performance parallel processing machines.  These systems usually include algorithms that are optimized for performance under the parallel architectures.  Although there are many scientists developing new ways of optimizing performance on these machines, there seems to be a deficit of research on how to achieve optimal performance from the most common computing machine, the PC.  There does however exist a large body of research knowledge on how to increase the speed of processing of many computer vision algorithms without subtracting from the functionality or usefulness of the system as a whole.  This project will serve as a vehicle for the implementation of image processing algorithms tailored for less powerful machines.  The reason behind this is that the PC is an easily accessible, low cost unit that most people are already familiar with.  The PC also has the advantage of already being in use in manufacturing plants, and other potential customers of imaging software.  This advantage definitely aids in the technology transfer of imaging systems to the commercial sector.  
	The image processing system will demonstrate the algorithms of edge finding, thresholding, histogram operations, shape from shading, object labeling, and simple recognition of objects given a training set.  The edge detection algorithms of the program will feature four different edge finding operations.  Each operation differs both in speed and quality of results.  The thresholding operations are also varied to enable the user to customize the system according to needs.  The most detailed operation of the thresholding options utilizes statistical analysis of the histogram of the image being processed.  The object recognition procedures construct a library of training objects from on image and compare the qualities to a second library built from another image.  The latest addition to the system is the derivation of three dimensional data from a single two dimensional image.
	Image filtering and template mathcing are two of the most processing intensive tasks accomplished by image processing systems.  In order to achieve results in an amount of time that is acceptable in many different applications, there needs to be a way of tweaking the algorithm to achieve a result that is generated in real time.  By localizing the coordinates of the rectangular processing area, a speed up can be achieved.  This localization is used initially in the graphical user interface to allow the user to select an initial area to process.  By selecting two pairs of x,y coordinates, the user may preview the effect of an operation or combination of operations on a small area that will be processed in minimal time.  Then once the user has the desired configuration, the image can be reloaded and the coordinates can be changed to encompass a larger area.  A future addition to this localization process will the automation of coordinate pair selection by the rubber-banding method of area selection.  The interface for choosing the localized coordinates is shown in Figure 1.

	 Edge finding describes the gradient change in pixel intensity so as to define an objects boundaries.  Two edge finding algorithms, the Sobel and Roberts operators, find edges within the picture by applying two different templates to the image.  The summation of the product of each element in a template and its corresponding image pixel is calculated.  This total is then used along with the total of the second template to give an output image displaying edges or the direction of edges depending on which option was chosen from the user interface.  There are three different double template operators for finding edges.  The first one is a Roberts 2 X 2 operator which finds an edge using a two element by two element template.  The second and the third are 3 X 3 and 5 X 5 Sobel operators respectively.  The Sobel operator will give a more defined edge than the Roberts operator.  The Roberts operator on the other hand is much faster than the Sobel operator.  A third algorithm, the Laplacian operator, uses a single template to help discern edges.  Since it does a lot less computations, and it's result is easily scalable, it is very useful to detect edges.  The only drawbacks to using the Laplacian operator are its poor corner response, and its inability to give information on the direction of edges.  The following figures show the results of the different edge operators.
	Once an edge operator is applied to the image, a second image is created that contains either edges of a magnitude proportional to the degree of change of an edge, or edges of a gradient intensity that corresponds to the direction of the edge.  The image pixel numbers are calculated and put into a histogram.  This histogram can then be used to find a threshold for seperating the edges from non-edges.  The seperation of the pixels is done according to the threshold option chosen from the user interface.  All edges above the threshold are turned white, and those below are turned black.  If the autothresh feature is selected, then the histogram data will be used to choose an optimal threshold level by first averaging the data and then selecting a local minimum from between the maximum and zero.
	Now if the expansion procedure has been selected, every white pixel will be expanded in the eight directions to bridge gaps between edges.  This is usually used in conjunction with the thin option.  The thin option recursively thins the multiple pixel edges from four different directions until every edge in the picture is only one pixel thick.
	A major area of focus in object recognition is the segmentation of regions into usable data.  By decomposing the image into physical components, operations such as counting and classifying can be done with a variety of distinguishing features.  The system's procedure for regionizing the data performs in two distinct ways.  Both of these methods for region extraction use the thresholding function so a threshold option must be chosen from the user interface along with the object option.  If the user needs to do extraction of simple regions, then the object option should be selected from the user interface.  If the source image has overlapping regions that need to be seperated from eachother, an edge operator should be chosen in addition to the objects option.  Simple region extraction is achieved by finding the minimum bounding rectangle of an object.  This is done by thresholding the entire image and flood filling each individual object with a different color label.  These color labels are then used to find the minimum bounding rectangle of a single object.  Once this is found, the dimensions of the object are the maximum and minimum x and y coordinate sets.  To make sure no other region is accidently extracted along with the object, the pixels that don't belong to the labeled region are removed from the captured object.  More complex extraction is achieved by using the same method as the simple region extraction with one addition.  In complex region extraction, the user selects an edge function to go along with the object option.  This will enable the user to extract overlapping objects.  This is done by using the edge information to divide areas after thresholding, but before labeling.  The result of this kind of regionization is the seperation of multiple connected regions from their background, and from eachother.


