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 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.
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 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.
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.
| 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 |
| 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 |