Filters an image using a median filter.
IppStatus ippiFilterMedian_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiPoint anchor);
Supported values for mod:
8u_C1R | 16u_C1R | 16s_C1R | 32f_C1R |
8u_C3R | 16u_C3R | 16s_C3R | |
8u_C4R | 16u_C4R | 16s_C4R | |
8u_AC4R | 16u_AC4R | 16s_AC4R |
IppStatus ippiFilterMedian_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiPoint anchor, Ippi8u pBuffer);
Supported values for mod:
32f_C3R |
32f_C4R |
64f_C1R |
pSrc |
Pointer to the source image ROI. |
srcStep |
Distance in bytes between starts of consecutive lines in the source image. |
pDst |
Pointer to the destination image ROI. |
dstStep |
Distance in bytes between starts of consecutive lines in the destination image. |
dstRoiSize |
Size of the source and destination ROI in pixels. |
maskSize |
Size of the mask in pixels. |
anchor |
Anchor cell specifying the mask alignment with respect to the positionof the input pixel. |
pBuffer |
Pointer to the external work buffer. |
The function ippiFilterMedian is declared in the ippi.h file. It operates with ROI (see Regions of Interest in Intel IPP).
This function sets each pixel in the output buffer as the median value of all the input pixel values taken in the neighborhood of the processed pixel. To ensure valid operation when image boundary pixels are processed, the application should correctly define additional border pixels (see Borders). The anchor cell is specified by its coordinates anchor.x and anchor.y in the coordinate system associated with the top left corner of the kernel. The size of the source image ROI is equal to dstRoiSize, the size of the destination image ROI.
Some flavors of the function require the external buffer pBuffer. Its size must be computed by the function ippiFilterMedianGetBufferSize beforehand.
The Example “Applying the Median Filter to an Image” illustrates median filtering. Note that this filter removes noise and does not cut out signal brightness drops, as an averaging filter does.
ippStsNoErr |
Indicates no error. Any other value indicates an error or a warning. |
ippStsNullPtrErr |
Indicates an error condition if pSrc or pDst is NULL. |
ippStsSizeErr |
Indicates an error condition if dstRoiSize has a field with a zero or negative value. |
ippStsStepErr |
Indicates an error condition if srcStep or dstStep has a zero or negative value. |
ippStsMaskSizeErr |
Indicates an error condition if maskSize has a field with zero, negative, or even value. |
ippStsAnchorErr |
Indicates an error condition if anchor is outside the mask size. |
IppStatus filterMedian(void ) { IppiPoint anchor = { 1,1 }; Ipp8u x[5*4], y[5*4]={0}; IppiSize img={3,4}, roi={3,2}, mask={3,3}; ippiSet_8u_C1R( 0x10, x, 5, img ); /// raise the level of the signal, /// The edge will not be destroyed by the filter img.width = 5-3; ippiSet_8u_C1R( 0x40, x+3, 5, img ); /// a spike, will be filtered x[5+1] = 0; /// roi is inside the image. /// Offset pointers to jump at the roi's beginning return ippiFilterMedian_8u_C1R( x+6, 5, y+6, 5, roi, mask, anchor ); }
The destination image y contains:
00 00 00 00 00 00 10 10 40 00 00 10 10 40 00 00 00 00 00 00
Copyright © 2000 - 2010, Intel Corporation. All rights reserved.