Filter

Filters an image using a general rectangular kernel.

Syntax

Case 1: Operation on integer data

IppStatus ippiFilter_<mod>(const Ipp<datatype>* pSrc, int srcStep, Ipp<datatype>* pDst, int dstStep, IppiSize dstRoiSize, const Ipp32s* pKernel, IppiSize kernelSize, IppiPoint anchor, int divisor);

Supported values for mod:

8u_C1R 16u_C1R 16s_C1R
8u_C3R 16u_C3R 16s_C3R
8u_C4R 16u_C4R 16s_C4R
8u_AC4R 16u_AC4R 16s_AC4R

Case 2: Operation on 32f data

IppStatus ippiFilter_<mod>(const Ipp32f* pSrc, int srcStep, Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, const Ipp32f* pKernel, IppiSize kernelSize, IppiPoint anchor);

Supported values for mod:

32f_C1R
32f_C3R
32f_C4R
32f_AC4R

Case 3: Operation on 64f data

IppStatus ippiFilter_64f_C1R(const Ipp64f* pSrc, int srcStep, Ipp64f* pDst, int dstStep, IppiSize dstRoiSize, const Ipp64f* pKernel, IppiSize kernelSize, IppiPoint anchor, Ipp8u* pBuffer);

Parameters

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.

pKernel

Pointer to the kernel values.

kernelSize

Size of the rectangular kernel in pixels.

anchor

Anchor cell specifying the rectangular kernel alignment with respect to the position of the input pixel.

divisor

The integer value by which the computed result is divided (for operations on integer data only).

pBuffer

Pointer to the working buffer.

Description

The function ippiFilter is declared in the ippi.h file. It operates with ROI (see Regions Regions of Interest in Intel IPP). This function uses the general rectangular kernel of size kernelSize to filter an image ROI. This function sums the products between the kernel coefficients pKernel and pixel values taken over the source pixel neighborhood defined by kernelSize and anchor. The anchor cell is specified by its coordinates anchor.x and anchor.y in the coordinate system associated with the bottom right corner of the kernel.

Note that kernel coefficients are used in inverse order. The sum is written to the destination pixel. In case of integer data, the result is divided by the fixed scaling factor divisor.

To ensure valid operation when image boundary pixels are processed, the application should correctly define additional border pixels (see Borders).

For function flavors that operate on integer data, the result value Yi,j for pixel Xi,j inside image's ROI is computed according to the following formula:



where

Kn,m are the kernel values

H = kernelSize.height is the vertical size of the kernel

W = kernelSize.width is the horizontal size of the kernel

P = H - anchor.y - 1

Q = W - anchor.x - 1

Function flavors that accept floating-point data of Ipp32f and Ipp64f type use the same summation formula, but no scaling of the result is done.

Function flavor that operates on data of the Ipp64f type requires the temporary working buffer. Its size must be computed beforehand using the function ippiFilterGetBufSize.

Return Values

ippStsNoErr

Indicates no error. Any other value indicates an error.

ippStsNullPtrErr

Indicates an error condition if pSrc, pDst, or pKernel is NULL.

ippStsSizeErr

Indicates an error condition if dstRoiSize or kernelSize has a field with a zero or negative value.

ippStsDivisorErr

Indicates an error condition if the divisor value is zero.

ippStsStepErr

Indicates an error condition if the srcStep is less than (roiSize.width + kernelSize.width)*sizeof(Ipp64f); or dstStep is less than roiSize.width*sizeof(Ipp64f).

Submit feedback on this help topic

Copyright © 2000 - 2011, Intel Corporation. All rights reserved.