The PXIPL Library empowers C/C++ and Windows programmers to process and analyze images in conjunction with:
The PXIPL Library is compatible with all of the hardware and software environments supported by the XCLIB, 4MOBJ, and SVOBJ libraries. PXIPL routines operate directly upon imaging board buffers, upon images in PC memory, or upon images stored on disk. PXIPL provides a wide selection of imaging routines. The major categories include: processing, enhancements, graphic lines and shapes, text overlay, printing, morphology, filters and edge detectors, transforms, convolutions, sequence integration and averaging, image printing, image copy and resizing, single image and image pair normalizations, blob analysis, histograms and moments, image load and save, calibration, correlation, subpixel accuracy measurements, and particle tracking. SOPHISTICATED SOLUTIONS Under Windows, PXIPL also provides image display on the S/VGA with integrated (non-blinking) cross-hair cursor overlay and integrated palette modifications. PXIPL also provides "waterfall" display of repeatedly captured image lines on the S/VGA. PXIPL assists user-written programs in applications such as image enhancement, archival, analysis, and measurement; event and motion study; document capture; particle analysis; visual inspection; machine vision and quality control. Join the scientists and engineers in medical, industrial, and research environments who rely upon EPIX® imaging solutions. |
FEATURES
| Resolution Flexibility - PXIPL functions can process
images of almost any size, located either in image board memory,
PC memory, or disk files.
PXIPL functions will process any image captured by an EPIX® imaging board using either 4MOBJ, SVOBJ, or XCLIB software. Typical capture resolutions include 4x1, 32x32, 512x240, 752x480, 768x580, 1024x768, or 2048x2048. Monochrome pixels with a dynamic range from 1 bit (2 grey levels) to as large as 16 bits (216 grey levels) can be processed. Color pixels, in either RGB, YCrCb, or HSB color space, with a range of 1 to 16 bits per color component, are supported. Selected operations also support up to 32 bits per pixel. Image sequence operations, such as sequence average or sequence integration, support up to 223 images (8 bits per pixel). The PXIPL functions are not restricted to processing images which were captured by EPIX® imaging boards. Images from any source, residing in PC memory, can be any size and any number of colors, limited only by availability of PC memory, and the CPU word size.(1), (2) Virtual Memory - Should PC memory be insufficient, images may also reside in disk files. All images, whether in an imaging board buffer, in PC memory, or in a disk file, can be enhanced and analyzed by the same functions! Functional Flexibility - Typical PXIPL functions provide a broad spectrum of operations, allowing a single function to do the work of many functions. For example, a convolution function accepts parameters describing the image buffer, the area of interest within the buffer, the convolution size N, and the N×N kernel coefficients. This single function allows convolving with a 3×3, 9×9, 31×31, or 99×99 kernel size, limited only by available PC memory. |
Efficiency - PXIPL functions are coded in optimized
C, with selected segments hand-coded in assembler. Many functions
internally identify special cases, invoking code optimized for
each special case. The N×N convolution, for example,
examines the coefficients provided and selects custom routines
depending upon the size of N, the multiplication and
summation precision needed, and whether division is required.
Proven Performance - The same functions provided with PXIPL also form the backbone of the ready-to-run XCAP, 4MIP, SVIP, and XCIP interactive image analysis programs, and have been proven through daily use in on-line, rigorous, imaging applications. Image Selection Flexibility - A typical enhancement function operates on any image buffer, on either the full image or selected area of interest, with the result saved to any buffer or area of interest of the same dimensions. Image pair operations allow independent selection of the two source image operands and of the image destination. PXIPL functions for nonrectangular regions use a common method of region specification, supporting rotated elliptical, rotated rectangular, N-sided polygon, boundary path, and scan list specifications. Functions can operate on any pixel color component of a color image; selected functions can also operate upon all color components. |
SAMPLE CODE
| Operating upon imaging board buffers & images in PC memory. struct pximage im1, im2, im3;
struct pxy xysize = {752, 480};
unsigned char buffer[752][480];
void *mallocbuf = NULL;
im1 = *pxd_defineImage(1,1, // access imaging
0,0,-1,-1,..,"Grey"); // board's buffer 1.
pximage_memory(&im, buffer, // access existing
&xysize, PXDATUCHAR, // image in PC malloc memory,
8, 1, // size 752x480, of chars,
PXHINTGREY, 0); // 8 bits per pixel,
// one color, monochrome
pximage_memmalloc(&im3, // create & access new image
&mallocbuf,&xysize, // in PC memory, 752x480,
PXDATUCHAR, 8, // of chars, 8 bits/pixel,
1, PXHINTGREY); // one color, monochrome
pxip8_pairsub(&im1, &im2, // Subtract pixels of
&im3, 0); // image 1 from image 2,
// put result in image 3.
Operating upon selected colors of selected color space. struct pximage *ip1, *ip2, *ip3; unsigned long histogram[16], cnt; ip1 = pxd_defineImage(1,1, // access image board buffer 1, 188,120,564,360, // AOI of center 1/4 (assuming .., "BofRGB"); // 752x480), RGB color space, // access color #3, B of RGB. pxip8_histab2(NULL, ip1, // compute Blue AOI histogram histogram,16); // binned into 16 ranges. ip2 = pxd_defineImage(1,1, // access image board buffer 1, 0,0,-1,-1,.., // full image AOI, as HSB, "SofBSH"); // access color #2, S of HSB. pxip8_pixthresholdcnt(NULL, // count Saturation ip2, 42, 0,&cnt); // values >= 42 ip3 = pxd_defineImage(1,2, // access image board buffer 2, 0,0,-1,-1,.., // full image AOI, as HSB "SofBSH"); // access color #2, S of HSB pxip8_copy(NULL,&ip3,&ip2); // set saturation of buffer 1 // from buffer 2, leaving // hue & brightness unchanged Performing 15x15 convolution on AOI. int kernel[15][15], i, j; // Define 15x15 kernel as low pass
for (i = 15; i--; ) // filter with all coefficients 1.
for (j = 15; j--; )
kernel[i][j] = 1;
pxip8_NxNconvolve( // Do 15x15 convolution on 100x100
pxd_defineImage(1,1,0,0,100,100,..,"Grey"),
// AOI of buffer 1, result into
pxd_defineImage(1,2,0,0,100,100,..,"Grey"),
15, kernel, 0, 0, 0); // buffer 2.
Searching for blobs. struct pxywindow bounds;
struct pxip8blob blob[100]; // results
struct pxy search = {-1, 0}; // init search coordinates
int n, i;
bounds.nw.x = 3; // min blob width
bounds.nw.y = 3; // min blob height
bounds.se.x = 100; // max blob width
bounds.se.y = 100; // max blob height
n = pxip8_bloblist(NULL, // search image buffer 5
pxd_defineImage(1,5,0,0,-1,-1,..,"Grey"),
&search, 'g'^'t', 123, 0, // for up to 10 blobs
&bounds,0,NULL,100,blob,NULL); // identified by pixel
// values >= 123
printf("Blobs found: %d\\n", n);
for (i = 0; i < n; i++) // report blobs
printf("Blob: %d, Center of Mass: (%g,%g), Area: %ld\\n",
i, blob[i].ucom.xd, blob[i].ucom.yd, blob[i].xyarea);
Saving image sequence to single TIFF file. struct pxio8tiffparm tiffparm;
memset(&tiffparm, 0, sizeof tiffparm);
tiffparm.bits = 8; // set number of bits to be saved
tiffparm.description = "Test Run #4"; // and a short description.
for (int i = 0; i < 100; i++) // save sequence of 100 buffers
pxio8_tiffwrite(NULL,
pxd_defineImage(1,i+1,0,0,-1,-1,..,"Default"),
"RUN4.TIF", i, // from image buffer i & full AOI
NULL, &tiffparm, 0); // to file name & subimage number
Computing Center of Mass of AOI. double mass, xcenter, ycenter;
pxip8_masscenter(NULL, // use AOI of buffer 3
pxd_defineImage(1,3,0,0,100,100,..,"Grey"),
&mass, &xcenter, &ycenter); // returned results
printf("Mass Center @ (%g,%g)\\n",
xcenter, ycenter); // report results
|
FUNCTIONS
SPECIFICATIONS
| IMAGING BOARD: For use with XCLIB: Any PIXCI® D, D24, D32, D3X, A, or CL1 imaging board. Any PIXCI® imaging board with an EPIX® SILICON VIDEO® camera. For use with 4MOBJ: Any 4MEG VIDEO™ Model 5, Model 10, or Model 12, imaging board. Also supports the IMAGE MEMORY EXPANSION and the COC40 series(3) for use with the Model 12. For use with SVOBJ: Any SILICON VIDEO® MUX™ imaging board. |
ENVIRONMENT: Standard versions support:
Other versions available on request. Memory requirements: Approximately 16 to 1024 Kbytes, dependent upon selection of library routines. PXIPL is optionally provided with, and must be used with, the 4MOBJ, SVOBJ, XCLIB, version with which it is packaged. PXIPL routines require the presence of a supported imaging board.
|
| LICENSING: Licensing permits royalty free inclusion of library routines into programs using the 4MEG VIDEO™, the SILICON VIDEO® MUX™, or the PIXCI® D, D24, D32, D3X, A, and CL1 imaging boards. SOFTWARE INCLUDES: As required by chosen environment: Object code libraries (.LIB), and/or Dynamic Link Library (.DLL). C prototype files (.H). Printed manual(s). |
- In 16 bit programming environments: the product of the number pixels per line and color components per pixel may not exceed 32767, the number of lines may not exceed 32767. In 16 and 32 bit programming environments: the size of an image may not exceed 232-1 bytes.
- The Waterfall Display feature requires digitization and field counts, and is intended only for use with imaging board buffers.
- PXIPL for the COC40 supports Native and Bound routines for the TMS320C40, as well as PC routines. A detailed description of is provided in the PXIPL-COC40 brochure.
