PICLAB32
Image Processing Library
PICLAB32 library covers a broad spectrum of image processing techniques that are applicable to a wide range of industrial, medical and other applications, where fast and accurate image processing is a must.
The image processing techniques in PICLAB32 include:

General Description
PICLAB32 is a 32-bit library available as:
-- DLL for Win32s, Windows 95 and Windows NT
-- Static 32-bit library for three DOS-extenders:
|
Compiler |
Extender |
||
|
Pharlap |
Power Pack |
Rational |
|
|
Borland |
Yes |
yes |
no |
|
Microsoft |
Yes |
no |
no |
|
Watcom |
Yes |
no |
yes |
PICLAB32 is based on a sophisticated ROI (Region of Interest) concept. This means that a part of source image first have to be copied to ROI-type image buffer (which has PICLAB32 internal format) and after processing have to be converted back to application dependent format (if necessary). The ROI type image buffer is designed to enable high speed as well as a high precision of the operations. Greylevel (or one color plane) pixels in ROI-type buffer are stored in 16-bit type; for certain operations like FFT even 64-bit (double) type is used to achieve optimal accuracy.
Even if most of the functions are intended to process greyscale or black& white (=binary) images, PICLAB32 can process color images as well; greyscale functions can be applied to color channels of color images, that can be held in PICLAB32 in 4 different color schemes: RGB, HSI, HSV and YUV.
PICLAB32 can be used as a framegrabber independent library; however Leutron Vision boards from xFP-AT family are directly supported in PICLAB32 and image interface functions are provided to support indirectly other boards as well.
PICLAB32 does not provide image file open/save functions since there is a lot of general image reading and writing packages available on the market. There is an implementation of Windows Device Independent Bitmap (DIB, BMP) file format reading/writing code in the sample program included with PICLAB32.
![]() |
The PICLAB32 sample Windows program
included with PICLAB32 enables to explore visually most of the PICLAB32
functions . As an input a DIB file or TWAIN source can be used. The sample
program can be used as a start framework for your application in case you
use MS Visual C++ 4.x and MFC. If you use another compiler, the sample
program can still be used as a supplementary guide showing usage of PICLAB32
functions - for this purpose most of the PICLAB32 calls are located in
separate CPP module, in which MFC is not used.
PICLAB32 is also a workhorse for another our product - Vision Trainer for Image Processing, that can be used for testing or rapid prototyping. The following list of PICLAB32 function names and brief descriptions may give you closer sight in PICLAB32 capabilities.
|
PICLAB32 Functions
Arithmetical and logical image functions
| LvArithAddConst | • Pixelwise
addition of a constant value (dst = src + const) |
| LvArithSubtConst | • Pixelwise
subtraction of a constant value (dst = src - const). |
| LvArithDivideByConst | • Pixelwise
division by a constant value (dst = src / const) |
| LvArithMultiplyByConst | • Pixelwise
multiplication by a constant value (dst = src * const) |
| LvArithAddImage | • Relative
pixelwise addition of two image buffers (dst = src1 / 2 + src2 / 2) |
| LvArithAddImageAbs | • Absolute
pixelwise addition of two image buffers (dst = src1 + src2) |
| LvArithSubImage | • Relative
pixelwise subtraction of two image buffers ( dst = ( src1 - scr2 + white ) / 2 ) |
| LvArithSubImageAbs | • Absolute
pixlewise subtraction of two image buffers (dst = abs(src1 - src2)) |
| LvArithMultiplyByImage | • Pixelwise
multiplication of two image buffers (dst = src1 * src2). |
| LvArithDivideByImage | • Pixelwise
division of two image buffers (dst = src1 / src2). |
| LvArithMaxImage | • Pixelwise
maximum value selection (dst = max(src1, src2)) |
| LvArithMinImage | • Pixelwise
minimum value selection (dst = min(src1, src2)) |
| LvBinaryAnd | • Pixelwise
"AND" operation on two (binarized) images (dst = src1 and src2) |
| LvBinaryOr | • Pixelwise
"OR" operation on two (binarized) images (dst = src1 or src2) |
| LvBinaryXor | • Pixelwise
"XOR" operation on two (binarized) images (dst = src1 xor src2) |
| LvGreyLinSum | • Calculates and returns line sums for all lines of the image buffer. |
| LvGreyColSum | • Calculates and returns column sums for all columns of the image buffer. |
| LvGreyGravity | • Calculates the center of gravity over selected pixels. |
| LvGeneralFractArea | • Calculates the covering with object (255) or background (0) pixel |
Image enhancement (filter) functions
| LvGreyFltAverage | • Executes 3x3 pixel grayscale averaging convolution. |
| LvGreyFltBiLaPlace | • Executes BiLaplace edge-sharpening greyscale convolution. |
| LvGreyFltCompass | • Executes an edge detection operation in specified direction. |
| LvGreyFltEdgeHor | • Executes a horizontal edge-enhancing operation. |
| LvGreyFltEdgeHorVer | • Executes a horizontal and vertical edge-enhancing greyscale operation. |
| LvGreyFltEdgeVer | • Executes a vertical edge-enhancing greyscale operation |
| LvGreyFltFreiChen | • Executes a Frei-Chen line filter operation. |
| LvGreyFltGauss | • Executes a Gaussian filter operation. |
| LvGreyFltKirsch | • Executes a Kirsch grey value filter operation. |
| LvGreyFltLaPlace1 | • Executes a medium-strength Laplace edge sharpening operation. |
| LvGreyFltLaPlace2 | • Executes a strong Laplace edge sharpening operation. |
| LvGreyFltLineFrei | • Executes a line filter edge detection and enhancement operation |
| LvGreyFltLocalDispersion | • Executes a filter operation for edge detection using local dispersion in a 3x3 neighbourhood. |
| LvGreyFltLowPass | • Executes a low-pass filter operation. |
| LvGreyFltMaxDiff | • Executes an edge detection by looking for the maximum difference in pixels in a 3x3 surrounding area. |
| LvGreyFltMeanDiff | • Executes a mean difference operation in a 3x3 neighbourhood. |
| LvGreyFltMedian | • Executes a 3x3 or 5x5 median filter operation. |
| LvGreyFltPrewitt | • Executes a Prewitt filter operation for line detection. |
| LvGreyFltRank | • Executes a rank order filter operation. |
| LvGreyFltRawEdge | • Executes quick&raw edge filter operation. |
| LvGreyFltRoberts | • Executes a Roberts edge filter operation. |
| LvGreyFltSharpenHigh | • Executes a strong edge sharpening operation. |
| LvGreyFltSharpenLow | • Executes a mild edge sharpening operation. |
| LvGreyFltSharpenMed | • Executes a medium-strength edge sharpening grayscale operation. |
| LvGreyFltSobel | • Executes a Sobel filter operation. |
| LvGreyFltSobelCarToPol | • Calculates the polar representation of the Sobel gradient filter operation. |
| LvGreyFltSobelDxDy | • Executes a gradient Sobel filter operation. |
| LvGreyFltSobelMagAng | • Executes Sobel filter operation and stores magnitude and angle to output buffers. |
| LvGreyFltVariance | • Executes an edge filter operation based on the variance value in 3x3 neighbourhood. |
| LvGreyMexHat | • Executes a morphological edge detection with a Mexican hat operator. |
| LvGreyMorphErosion | • Executes an erosion using a user-defined morphological operator. |
| LvGreyMorphExpansion | • Executes an expansion using a user-defined morphological operator. |
| LvGreyMorphOpen | • Executes an opening using a user-defined morphological operator |
| vGreyUserDefinedFilter | • Executes an user-defined filter operation. |
Binarization functions
| LvBinaryThresBin | • Performs a 3-level binarization of a greyscale image. |
| LvBinaryHistoBin | • Performs a histogram based automatic binarization. |
| LvBinaryCheckBinary | • Checks if the image contains binary (=black or white) pixels |
| LvColorBinarizeHSI | • Binarizes a selected color channel in HSI color scheme |
| LvColorBinarizeRGB | • Binarizes
each color channel in RGB color scheme.
Binary image edge detection and enhancement functions |
| LvBinaryInnerBoundary | • Detects inner edges of binary objects. |
| LvBinaryOuterBoundary | • Detects inner edges of binary objects. |
| LvBinaryBound4 | • Extracts and thins contours of objects |
| LvBinaryConnectPixels | • Connects or separates binary objects by searching horizontal, diagonal and/or vertical gaps between objects. |
| LvBinaryErosion | • Performs a binary object erosion |
| LvBinaryExpansion | • Performs a binary object expansion |
| LvBinaryMorphErosion | • Executes an erosion on a binarized image using a user defined morpho logical operator |
| LvBinaryMorphExpansion | • Executes an expansion on a binarized image using a user defined morphological operator |
Object analysis functions
| LvBinaryObject | • Analyzes all binary objects in the ROI and stores results in the object data structure. |
| LvBinaryEllipseEquivalent | • Calculates major and minor axis, angle and irradiance of the ellipse equivalent of an object. |
| LvBinaryObjectFilter | • Filters detected objects according to the current settings. |
| LvBinaryInvariantMoments | • Calculates the invariant moments of the third order. |
| LvBinaryMarkObject | • Marks/unmarks an object by setting the markflag in the object data structure. |
| LvBinaryObjectReset | • Clears all object data structures. |
| LvBinaryFourDesc | • Finds fourier descriptors from the object's chain code. |
| LvGetFourierDescriptors | • Gets object specific fourier descriptors. |
| LvGetObjectBins | • Returns the total number of bins and access pointer to the object bins structure. |
| LvGetObjectFeatureStatistic | • Returns access pointer to a structure with object features statistics. |
| LvGetObjectFilterCount | • Returns a count of objects found within one class. |
| LvGetObjects | • Returns a number of measured objects and access pointer to their measurements. |
| LvStatisticObjectStatistics | • Calculates field data statistics of the objects. |
| LvStatisticSortToBins | • Sorts input object data into bins. |
Fourier transfom functions
| LvGeneralSetRegionFFTany | • Sets a nonregular region on a FFT buffer. |
| LvGeneralSetRegionFFTrect | • Sets a rectangular region of a FFT magnitude buffer. |
| LvGreyFFT | • Calculates a Fourier transform. |
| LvGreyInversFFT | • Calculates an inverse Fourier transform. |
Histogram handling functions
| LvGreyHistogram | • Calculates a standard histogram and its statistical values. |
| LvGreyHistogramEqualize | • Executes a histogram equalisation of the image buffer. |
| LvGreyHistogramLocalMin | • Determines local minima in a histogram. |
| LvGreyHistogramLog | • Weights existing histogram with a natural logarithm. |
| LvGreyHistogramNormalize | • Normalizes a histogram and calculates mean value and variance. |
| LvGreyHistogramSmooth | • Executes a smoothing of a histogram by calculating the average of adjacent values. |
| LvGreyHistogramSqrt | • Weights existing histogram with the square root. |
| LvGetHistogramData | • Gets greylevel histogram data. |
| LvGetHistogramStatistic | • Gets greylevel statistic data of the histogram. |
Color functions
| LvColorBGRToHSI | • Converts image data from RGB color scheme to HSI color scheme. |
| LvColorHSIToBGR | • Converts image data from RGB color scheme to HSI color scheme |
| LvColorBGRToHSV | • Converts image data from RGB color scheme to HSV color scheme. |
| LvColorHSVToBGR | • Converts image data from RGB color scheme to HSI color scheme |
| LvColorBGRToYUV | • Converts image data from RGB color scheme to YUV color scheme |
| LvColorHistoEqRGB | • Equalizes an image in RGB color scheme |
| LvColorMaskBGRWithMeanIntensity | • Rescales image data in RGB color scheme with mean intensity values. |
| LvColorMeanIntensity | • Converts image data from RGB color scheme to Intensity (arithmetic mean). |
Image buffer handling functions
| LvGeneralCreateBuffer | • Allocates memory for ROI-type image buffer. |
| LvGeneralCreateRGBBuffer | • Allocates memory for three ROI-type image buffers, intended to hold RGB channels. |
| LvGeneralCopyBuffer | • Copies an image buffer to another image buffer. |
| LvGeneralFillBuffer | • Fills the image buffer with a constant value. |
| LvGeneralSetRegionROIany | • Sets a nonrectangular region of a ROI buffer to a defined value. |
| LvGeneralSetRegionROIrect | • Sets a rectangular region of a ROI buffer to a defined value. |
| LvGeneralEraseBuffer | • Frees memory allocated for ROI-type image buffer. |
| LvGeneralGetBuffer | • Returns a pointer to the image data in the ROI structure. |
| LvGeneralGetBufferData | • Returns x and y dimension of the image. |
Image format conversion functions
| LvGeneralCopyBitmapToBuf | • Copies image data from a common bitmap format to a ROI –type image buffer. |
| LvGeneralCopyBufToBitmap | • Copies image data from ROI-type image buffer to a common bitmap format. |
| LvGeneralCopyBufToColorPlane | • Copies image data from a single ROI-type image buffer to a color plane in common RGB bitmap format. |
| LvGeneralCopyColorPlaneToBuf | • Copies image data from a color plane in common RGB bitmap format to a single ROI-type image buffer. |
| LvGeneralCopyBufToMap | • Copies image data from ROI-type image buffer to a LV-framegrabber memory. |
| LvGeneralCopyMapToBuf | • Copies image data from a LV-framegrabber memory to a ROI-type image buffer. |
Functions setting user defined data
| LvSetCalibrator | • Sets a calibration factor. |
| LvSetMorphOp | • Sets a morphologic operator. |
| LvSetObjectFilter | • Set an object filter. |
| LvSetUserFilter | • Set an user-defined filter. |
Other functions for general use
| LvGeneralExit | • Frees all the allocated structures except for ROI image buffers. |
| LvGeneralGetVersion | • Finds the version number and returns it as a string. |
Miscellaneous functions
| LvGreyInvers | • Inverses the pixels in the image buffer. |
| LvGeneralRotate | • Rotates image data by an specified angle. |
| Ordering Number | Description |
| 3'400'050 | PICLAB-32, Image Processing Library |
| 3'400'051 | PICLAB-32, Runtime Licence 1-9 pcs |
| 3'400'052 | PICLAB-32, Runtime Licence 10-24 pcs |
| 3'400'053 | PICLAB-32, Runtime Licence 25-49 pcs |
| 3'400'054 | PICLAB-32, Runtime Licence 50-99 pcs |
| 3'400'055 | PICLAB-32, Runtime Licence 100+ pcs |