PICLAB-XFP for DOS

Advanced Image Processing Library for MS-C or BORLAND C

Features


General description

The PICLAB image processing software libraries have been designed and written especially for industrial projects or other applications requesting quantification of image contents (e.g. particle analysis of microscopy).
PICLAB concentrates on binary image analysis and basically consists of two groups of functions:

- image pre-processing operations,
- binary object analysis operations.

In general, image processing with PICLAB is aimed at transposing an input camera grey-scale image into an optimal binary image (pre-processing), and to pick up/select and measure/identify any single binary object it contains (binary object analysis).
The image pre-processing functions are set to approach the input image (or sections of it) still independent of content. They are merely to binarize the information attained in form of a grey-scale image, for the second group of functions bases its processing operations on binary objects only.
The initial grey-scale image may contain pixels of any intensity level between 0 and 255, whereas the binary image resulting is reduced to black (0) and/or white (255) pixels.
The binary object is defined as a quantity of coherent white pixels on black background. Thus, the objects of interest are being clearly isolated.

Image pre-processing functions

Image enhancement
Supposed a frame is disturbed by single error-pixels (caused by camera noise, shot noise etc.), a 5x5 Median neighborhood operator can achieve a remarkable enhancement of the input image. Unlike a simple average operator, the Median filter causes no flattening of edges but merely eliminates eventual single random pixels.

Edge extraction
As, for binary image processing, a frame's essential information is provided by areas of obvious intensity changes, two functions will extract such (frame) edges from the uniform background, and thus help to accentuate the spots of interest.
This on one hand simplifies the following binarization and on the other, a reduction of information often necessary for grey-scale image processing can be achieved.
Edge extraction is performed by 3x3 neighborhood operators, which are realized as a Sobel filter and a user defined matrix.

Binarization
Two binarizing functions will then convert the already brushed up grey-scale image into the final binary image. To do so, these functions use a threshold to separate the object from the background. The threshold is user definable.
This kind of binarization bases on the assumption, that a grey-scale image essentially has two intensity distributions, whose peak value will clearly separate in a histogram. This allows to definitely split the prepared grey-scale image into distinct binary objects and background. The first function creates a histogram of the grey-scale image to be binarized, and automatically determines the peak values. The center between these peak values is accepted as threshold and the image binarized accordingly.
As for the second function, the user may install two thresholds, hence splitting the image into 3 intensity ranges. This allows binarization, even when the histogram can not provide two evident thresholds.
Both functions may be set to pick up either light objects on dark background, or dark objects on light background.

Binary operations
These four binary operations request a binary image input: an image which consists of only black and/or white pixels (0 and/or 255). The output of these functions will be a modified binary image that again will serve as input for the operations of the object analysis itself.
The first couple of functions reduces or expands a frame's or a window's binary objects by one or several shells. Thereby, a shell is defined as the connection of all border pixels of one object.
These functions are basically responsible for eliminating binarization noise at the outlines, an expansion of the object following the initial erosion.
As both the reducing and expanding operations are working independently from the object's form, the shape of the original object will turn out to be somewhat falsified, but which usually is of no importance. After all, the macroscopic shape of the binary object is basically preserved, and the unwished pixel fluctuations at the object's outlines are being eliminated. Binarizing objects, logically connected parts often become separated by camera noise, slight changes of light etc.
A third function allows to specifically search for neighbor pixels over a certain distance in all horizontal, vertical and diagonal directions, and then to independently connect them.
The analysis of 7 segment LCD displays, whose single segments haven't been dissected precisely or are falsely connected may provide a representing example: to be able to understand such a defective 7 segment numeral as one complete object, the segments must be interconnected without severely disturbing the rough outline of the numeral itself.
Whereas the expansion of objects charges the border pixels of the binary object concerned, this function only alternates the sections that happen to have a neighbor pixel within the defined distance.
The last function of this set of four, pealing down shell after shell, reduces the binary object to its central-line skeleton. Unlike the erosion explained above, the pealing of shells is subject to certain conditions, as the important connections within the object that must be preserved are to be controlled continuously.
This operation is extremely time-consuming and, depending on the object, may take several seconds or even minutes. It is of most interest for analysis of hand writing and fingerprints.

Analysis of binary objects

Object quantification functions
In a first, simple object analysis, eventual objects in the frame are located and their basic characteristics determined.
This function, from the top left all the way down to the lower right, scans the frame or a window, and registers all detached objects. Each of these identified objects will be registered under its own particular "name", as each object's entire sum of pixels (with value 255) is altered into a number, counting from 254 all the way down to 1. All pixels of the first object appearing on the top left will be labeled 254, those of the second 253 etc... Thus, 254 objects per window may be identified, numbered and analysed separately.
Now, characteristic parameters for each object will be determined (e.g. code, area, perimeter, coordinates, chain code, center of gravity, number of holes etc...).

Object analysis for object and pattern recognition
Knowledge of an object's basic characteristics may not always be sufficient for its definite identification. An extended object analysis is able to extract further parameters from the object's outlines. They are valid independently from an object's size, translation, rotation etc. and will described just below:

Fourier descriptors
The object's chain code, calculated in the basic analysis, will first undergo a Fourier analysis. The resulting Fourier descriptors of n-th order may be interpretated as description of the object's outlines.
A first operation determines a specific object's Fourier amplitudes and angles from the first to a possible sixth order.
Through this analysis, the description of an object's outlines is being reduced to a maximum 12 floating point numbers, thus tremendously simplifying the comparison of the objects, because in this stage, only the similarity of the Fourier descriptors of the same order must be checked any more.
The sum of difference between Fourier descriptors of the same order, carried out for each of the six orders, respectively, will provide a measure for the description of the objects' similarities. As the Fourier descriptors only percept the outlines of an object, all the objects' differing sizes, positions and relative rotation angles are of no importance.
Therefore, an object stored in a certain size and position will be recognized and identified in any other size or position.
Whether all six orders will be calculated and used for the final object comparison, mainly depends on the chain code of the object to be analysed. Basically, the lower orders of the Fourier descriptors (0, 1, 2...) define the object's macroscopic, rougher outlines, whereas the higher orders take care of the microscopic, refined ones. So, for example, if an application requires the object's rough outlines only, and the details and especially outline noise (caused by the camera, binarization...) shall be reduced, the Fourier descriptions of the lower orders (0...3) will do just fine.

Moment analysis
In the moment analysis, the object's description is not based on its outlines, but on its inner area information, as the moments of the zero to third order are being determined.
The moment of the zero order represents the object's area, whereas with the moments of the first and second order the object's center, its main and subordinate axis plus the rotation angle of an ellipse approaching the object are being defined.
From the moments of the second and third order, there may be derived 7 so-called "invariant moments" that, like Fourier descriptors, are not depending on an object's size and position, and may therefore be applied for object identification.
As with Fourier description, the self-installing user may decide which invariant moments will be of most significance for his own application.

Grey-scale image analysis
Unlike PICLAB's object analysis functions, that are processing binary images, these functions represent a group of their own and serve to create grey-scale line and column histograms.
With their assistance, horizontal or vertical grey-scale patterns inside a frame section can be stored away into one-dimensional arrays. A cross correlation of various patterns is very convenient for grey-scale pattern and texture recognition, as well as for positioning and tracking of objects not suitable for binary processing methods.
An example: within a certain window, there has to be traced a mostly vertical structure that is nevertheless not clearly separated into an object and a defined background. This function will now create an intensity histogram of this specific window's sum of columns (vertical lines). Finally, the distribution of the resulting histogram's intensity values will reflect all periodic vertical structures as peak values.
For positioning and tracking operations, this histogram may be evaluated directly. As for pattern comparison, the above mentioned cross correlation is just as convenient.
Yet another function, defining the center of gravity of a window's sum of objects, is especially suitable for simple and/or fast positioning operations.


PROFESS

PROFESS is based on the sophisticated image processing functions of PICLAB, handling its simple menue structure does not require programming knowledge.
For unexperienced users as well, it will be easily possible to realize pattern recognition and image quantification programs. The menue and the video image can be displayed either separately (with an additional external screen), or combined on one screen. For specific applications, the PROFESS system's entire source code, including menu programs, will additionally be delivered free.

RUSHLAB

The RUSHLAB interpreter is macro capable: any previously written command structure may be recalled and/or linked for new purposes. A graphical display of the current processor status (live or freeze, activated input and output LUTs, memory configuration etc...) allows to easily check on certain conditions. At the same time enabling RUSH(LAB)s automatic C source code generator, you may experiment with several different image modes, and automatically receive a C program file, containing all functions with their corresponding parameters. The generated C source code provides an excellent base to develop successful applications.


PICLAB FUNCTIONS

I_AVER3 3x3 average filter
I_COLSM Column sum
I_GOP3 3x3 user defined filter
I_HIST2 Grey -scale histogram
I_LINSM Line sum
I_MEDI 5x5 Median filter
I_SBL3 3x3 Sobel filter
I_DLAT Expansion of binary image
I_ERODE Erosion of binary image
I_GRAV Center of gravity
I_HANAL Bi-modal histogram analysis
I_HBIN Histogram binarization
I_OCONN Object connection and separation
I_TBIN Threshold binarization
I_FDESC Fourier descriptors
I_INVMOM Invariant moments
I_MAREA Interactive area calculation
I_MOMENT Moments of 2nd order
I_OBJECT Object analysis


Related Products

PICCOS-XFP for DOS


Hardware

AFP-AT

BFP-AT


Ordering Numbers and Options

Ordering Number Description
3'101'010 PICLAB-XFP for DOS, Image Processing Library

for MS-C and Borland-C with Window based Interpreter for AFP-AT, BFP-AT and CFP-AT


end of page.... back to leutron vision homepage