Specifications

Intel
®
Image Processing Library Reference Manual
6-16
6
Example 6-2 Applying the Median Filter
int example62( void ) {
IplImage *imga, *imgb;
__try {
imga = iplCreateImageHeader(
1, 0, IPL_DEPTH_8U, "GRAY", "GRAY",
IPL_DATA_ORDER_PIXEL, IPL_ORIGIN_TL,
IPL_ALIGN_DWORD, 4, 4, NULL, NULL,
NULL, NULL);
if( NULL == imga ) return 0;
iplSetBorderMode( imga, IPL_BORDER_REFLECT, IPL_SIDE_TOP|
IPL_SIDE_BOTTOM|IPL_SIDE_LEFT|IPL_SIDE_RIGHT, 0);
imgb = iplCreateImageHeader(
1, 0, IPL_DEPTH_8U, "GRAY", "GRAY",
IPL_DATA_ORDER_PIXEL, IPL_ORIGIN_TL,
IPL_ALIGN_DWORD, 4, 4, NULL, NULL,
NULL, NULL);
if( NULL == imgb ) return 0;
iplAllocateImage( imga, 1, 10 );
if( NULL == imga->imageData ) return 0;
// make a spike
((char*)imga->imageData)[2*4+2] = (char)15;
iplAllocateImage( imgb, 0, 0 );
if( NULL == imgb->imageData ) return 0;
// Filter imga and place the result in imgb
iplMedianFilter( imga, imgb, 3,3, 1,1 );
if( iplGetErrStatus() != IPL_StsOk ) return 0;
}
__finally {
iplDeallocate( imga, IPL_IMAGE_HEADER | IPL_IMAGE_DATA );
iplDeallocate( imgb, IPL_IMAGE_HEADER | IPL_IMAGE_DATA );
}
return IPL_StsOk == iplGetErrStatus();
}