Developer Reference for Intel® Integrated Performance Primitives
Filter an image using the maximum/minimum filter.
Case 1: Operating on one-channel data
IppStatus ippiFilterMaxBorder_8u_C1R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, Ipp8u borderValue, Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_16s_C1R(const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, Ipp16s borderValue, Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_16u_C1R(const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, Ipp16u borderValue, Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_32f_C1R(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, Ipp32f borderValue, Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_8u_C1R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, Ipp8u borderValue, Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_16s_C1R(const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, Ipp16s borderValue, Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_16u_C1R(const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, Ipp16u borderValue, Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_32f_C1R(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, Ipp32f borderValue, Ipp8u* pBuffer);
Case 2: Operating on multi-channel data
IppStatus ippiFilterMaxBorder_8u_C3R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp8u pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_16s_C3R(const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16s pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_16u_C3R(const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16u pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_32f_C3R(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp32f pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_8u_AC4R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp8u pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_16s_AC4R(const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16s pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_16u_AC4R(const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16u pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_32f_AC4R(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp32f pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_8u_C4R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp8u pBorderValue[4], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_16s_C4R(const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16s pBorderValue[4], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_16u_C4R(const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16u pBorderValue[4], Ipp8u* pBuffer);
IppStatus ippiFilterMaxBorder_32f_C4R(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp32f pBorderValue[4], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_8u_C3R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp8u pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_16s_C3R(const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16s pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_16u_C3R(const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16u pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_32f_C3R(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp32f pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_8u_AC4R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp8u pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_16s_AC4R(const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16s pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_16u_AC4R(const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16u pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_32f_AC4R(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp32f pBorderValue[3], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_8u_C4R(const Ipp8u* pSrc, int srcStep, Ipp8u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp8u pBorderValue[4], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_16s_C4R(const Ipp16s* pSrc, int srcStep, Ipp16s* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16s pBorderValue[4], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_16u_C4R(const Ipp16u* pSrc, int srcStep, Ipp16u* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp16u pBorderValue[4], Ipp8u* pBuffer);
IppStatus ippiFilterMinBorder_32f_C4R(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize, IppiBorderType borderType, const Ipp32f pBorderValue[4], Ipp8u* pBuffer);
ippi.h
Headers: ippcore.h, ippvm.h, ipps.h
Libraries: ippcore.lib, ippvm.lib, ipps.lib
pSrc |
Pointer to the source image ROI. | ||||||
srcStep |
Distance, in bytes, between the starting points of consecutive lines in the source image. | ||||||
pDst |
Pointer to the destination image ROI. | ||||||
dstStep |
Distance, in bytes, between the starting points of consecutive lines in the destination image. | ||||||
dstRoiSize |
Size of the source and destination ROI, in pixels. | ||||||
maskSize |
Size of the filter kernel. | ||||||
borderType |
Type of border. Possible values are:
Mixed borders are also supported. They can be obtained by the bitwise operation OR between any of the ippBorderRepl, ippBorderConst, or ippBorderMirror values and the ippBorderInMemTop, ippBorderInMemBottom, ippBorderInMemLeft, ippBorderInMemRight values. |
||||||
borderValue |
Constant value to assign to pixels of the constant border. This parameter is applicable only to the ippBorderConst border type. | ||||||
pBorderValue[3], pBorderValue[4] |
Pointer to constant values to assign to pixels of the constant border. This parameter is applicable only to the ippBorderConst border type. | ||||||
pBuffer |
Pointer to the work buffer. |
Before using the ippiFilterMaxBorder and ippiFilterMinBorder functions, you need to compute the size of the work buffer pBuffer using the ippiFilterMaxBorderGetBufferSize or ippiFilterMinBorderGetBufferSize functions, respectively.
These functions operate with ROI (see Regions of Interest in Intel IPP).
The ippiFilterMaxBorder and ippiFilterMinBorder functions apply the maximum/minimum filters, respectively, to the source image ROI. The size of the source image ROI is equal to the destination image ROI size dstRoiSize. The values of border pixels are assigned in accordance with the borderType and borderValue parameters. The kernel size of the filter is arbitrary and depends on the mask value.
The anchor cell is the center cell of the kernel, highlighted in red. The anchor cell is defined as:
x=(maskSize.width - 1)/2
y=(maskSize.height - 1)/2
where
(x, y) are cell coordinates.
ippStsNoErr |
Indicates no error. |
ippStsNullPtrErr |
Indicates an error when one of the specified pointers is NULL. |
ippStsSizeErr |
Indicates an error when dstRoiSize is negative, or equal to zero. |
ippStsBorderErr |
Indicates an error when mask is less than, or equal to zero. |
ippStsBorderErr |
Indicates an error when borderType has an illegal value. |