Intel® Integrated Performance Primitives (Intel® IPP) Developer Guide and Reference

ID 790148
Date 3/22/2024
Public
Document Table of Contents

FilterRowBorderPipeline, FilterRowBorderPipeline_Low

Apply the filter with border to image rows.

Syntax

Case 1: Operation on one-channel integer data

IppStatus ippiFilterRowBorderPipeline_<mod>(const Ipp<srcDatatype>* pSrc, int srcStep, Ipp<dstDatatype>** ppDst, IppiSize roiSize, const Ipp<dstDatatype>* pKernel, int kernelSize, int xAnchor, IppiBorderType borderType, Ipp<srcDatatype> borderValue, int divisor, Ipp8u* pBuffer);

Supported values for mod:

8u16s_C1R 16s_C1R 16u_C1R

IppStatus ippiFilterRowBorderPipeline_Low_16s_C1R(const Ipp16s* pSrc, int srcStep, Ipp16s** ppDst, IppiSize roiSize, const Ipp16s* pKernel, int kernelSize, int xAnchor, IppiBorderType borderType, Ipp16s borderValue, int divisor, Ipp8u* pBuffer);

Case 2: Operation on one-channel floating point data

IppStatus ippiFilterRowBorderPipeline_32f_C1R(const Ipp32f* pSrc, int srcStep, Ipp32f** ppDst, IppiSize roiSize, const Ipp32f* pKernel, int kernelSize, int xAnchor, IppiBorderType borderType, Ipp32f borderValue, Ipp8u* pBuffer);

Case 3: Operation on three-channel integer data

IppStatus ippiFilterRowBorderPipeline_<mod>(const Ipp<srcDatatype>* pSrc, int srcStep, Ipp<dstDatatype>** ppDst, IppiSize roiSize, const Ipp<dstDatatype>* pKernel, int kernelSize, int xAnchor, IppiBorderType borderType, Ipp<srcDatatype> borderValue[3], int divisor, Ipp8u* pBuffer);

Supported values for mod:

8u16s_C3R 16s_C3R 16u_C3R

IppStatus ippiFilterRowBorderPipeline_Low_16s_C3R(const Ipp16s* pSrc, int srcStep, Ipp16s** ppDst, IppiSize roiSize, const Ipp16s* pKernel, int kernelSize, int xAnchor, IppiBorderType borderType, Ipp16s borderValue[3], int divisor, Ipp8u* pBuffer);

Case 4: Operation on three-channel floating point data

IppStatus ippiFilterRowBorderPipeline_32f_C3R(const Ipp32f* pSrc, int srcStep, Ipp32f** ppDst, IppiSize roiSize, const Ipp32f* pKernel, int kernelSize, int xAnchor, IppiBorderType borderType, Ipp32f borderValue[3], Ipp8u* pBuffer);

Include Files

ippcv.h

Domain Dependencies

Headers: ippcore.h, ippvm.h, ipps.h, ippi.h

Libraries: ippcore.lib, ippvm.lib, ipps.lib, ippi.lib

Parameters

pSrc

Pointer to the source image ROI.

srcStep

Distance in bytes between starts of consecutive lines in the source image.

ppDst

Double pointer to the destination inage ROI.

roiSize

Size of the source and destination ROI in pixels.

pKernel

Pointer to the row kernel values.

kernelSize

Size of the kernel in pixels.

xAnchor

Anchor value specifying the kernel row alignment with respect to the positionof the input pixel.

borderType

Type of border (see Borders in Neighborhood Operations); following values are possible:

ippBorderZero

Values of all border pixel are set to zero.

ippBorderConst

Values of all border pixels are set to constant.

ippBorderRepl

Replicated border is used.

ippBorderWrap

Wrapped border is used

ippBorderMirror

Mirrored border is used

ippBorderMirrorR

Mirrored border with replication is used

borderValue

The constant value (constant vector in case of three-channel data) to assign to the pixels in the constant border (not applicable for other border's type).

divisor

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

pBuffer

Pointer to the working buffer.

Description

These functions operate with ROI (see Regions Regions of Interest in Intel IPP ).

The function ippiFilterRowBorderPipeline_Low performs calculation exclusively with the 16s-data, and the input data must be in the range ensuring that the overflow does not occur during calculation and the result can be represented by a 32-bit integer number.

These functions apply the horizontal row filter of the separable convolution kernel to the source image pSrc. The filter coefficients are placed in the reversed order. For integer data:


and for floating point data:


Here j = 0, ... roiSize.width - 1, i = 0,... roiSize.height - 1. The values of pixels of the source image that lies outside of the image ROI (that is, if for pixel pSrc[i,l] l ∉ [0, roiSize.width-1] are set in accordance with the specified parameters borderType and borderValue.

This function can be used to organize the separable convolution as a step of the image processing pipeline.

The functions requires the external buffer pBuffer, its size should be previously computed by the functions ippiFilterRowBorderPipelineGetBufferSize and ippiFilterRowBorderPipelineGetBufferSize_Low respectively

Return Values

ippStsNoErr

Indicates no error. Any other value indicates an error.

ippStsNullPtrErr

Indicates an error condition if one of the specified pointers is NULL.

ippStsSizeErr

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

ippStsStepErr

Indicates an error condition if srcStep or dstStep is less than roiSize.width * <pixelSize>

ippStsNotEvenStepErr

Indicates an error condition if one of the step values is not divisible by 4 for floating-point images, or by 2 for short-integer images.

ippStsAnchorErr

Indicates an error condition if xAnchor has a wrong value.

ippStsBorderErr

Indicates an error condition if borderType has a wrong value.

ippStsBadArgErr

Indicates an error condition if divisor is equal to 0.