EPIX, Inc. Home Page
PXIPL™ LIBRARY

 Features

 Sample Code

 Functions

 Specifications 

 Pricing
Imaging Processing and Analysis Library
Features
  • Image Processing and Analysis.
  • Image Graphics and Printing.
  • Image Morphology and Transforms.
  • Subpixel Accuracy Measurements.
  • Blob Analysis and Particle Tracking,
  • Image Correlation.
  • Image Load, Save, and Print.
  • For use with XCLIB, SVOBJ, or 4MOBJ.
  • C/C++ Library for 16 & 32 Bit DOS Programs.
  • DLL for 16 & 32 bit Windows Applications.

PROCESSING POWER
The PXIPL Library empowers C/C++ and Windows programmers to process and analyze images in conjunction with:
  • The PIXCI® imaging boards and XCLIB Library,
  • The EPIX® SILICON VIDEO® cameras, their PIXCI® imaging board, and XCLIB Library,
  • The 4MEG VIDEO™ imaging boards and 4MOBJ Library, or
  • The SILICON VIDEO® imaging boards and SVOBJ Library.

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
The PXIPL C/C++ Function Library allows embedding image processing and analysis into user-written applications. Under Windows, the PXIPL DLL provides services to existing Windows applications which support "hooks" into DLLs.

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

PXIPL 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:

  • Microsoft C/C++ V7.0, V8.0 (Visual C/C++ V1/V2) 16 bit in M or L models. For DOS V3.0 or later, 8088 or better.
  • Borland C/C++ V4.0, V5.0 16 bit in M or L models. For DOS V3.0 or later, 8088 or better.
  • Watcom C/C++ V10.0/V11.0 32 bit in F model. For Tenberry (Rational) DOS extender, 80386 or better.
  • Windows 3.x 16 bit DLLs, for any compiler or Windows application. For Windows V3.x, Standard or Enhanced mode, 80286 or better.
  • Windows 95/98/ME 32 bit DLLs, for any compiler or Windows application.
  • Windows NT/2K/XP 32 bit DLLs, for any compiler or Windows application.

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


  1. 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.
  2. The Waterfall Display feature requires digitization and field counts, and is intended only for use with imaging board buffers.
  3. 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.

Back to EPIX Products

Back to the EPIX home page
 
Image Processing Products For Research and Industry
Modified:
15-Mar-2011