Intel® Integrated Performance Primitives Developer Guide and Reference

ID 790148
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

WarpAffine

Performs the general affine transform of the source volume.

Syntax

IppStatus ipprWarpAffine_8u_C1PV(const Ipp8u* const pSrc[], IpprVolume srcVolume, int srcStep, IpprCuboid srcVoi, Ipp8u* const pDst[], int dstStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_16u_C1PV(const Ipp16u* const pSrc[], IpprVolume srcVolume, int srcStep, IpprCuboid srcVoi, Ipp16u* const pDst[], int dstStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_32f_C1PV(const Ipp32f* const pSrc[], IpprVolume srcVolume, int srcStep, IpprCuboid srcVoi, Ipp32f* const pDst[], int dstStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_8u_C1V(const Ipp8u* pSrc, IpprVolume srcVolume, int srcStep, int srcPlaneStep, IpprCuboid srcVoi, Ipp8u* pDst, int dstStep, int dstPlaneStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_16u_C1V(const Ipp16u* pSrc, IpprVolume srcVolume, int srcStep, int srcPlaneStep, IpprCuboid srcVoi, Ipp16u* pDst, int dstStep, int dstPlaneStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_32f_C1V(const Ipp32f* pSrc, IpprVolume srcVolume, int srcStep, int srcPlaneStep, IpprCuboid srcVoi, Ipp32f* pDst, int dstStep, int dstPlaneStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

Threading Layer (TL) functions

IppStatus ipprWarpAffine_8u_C1PV_T(const Ipp8u* const pSrc[], IpprVolume srcVolume, int srcStep, IpprCuboid srcVoi, Ipp8u* const pDst[], int dstStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_16u_C1PV_T(const Ipp16u* const pSrc[], IpprVolume srcVolume, int srcStep, IpprCuboid srcVoi, Ipp16u* const pDst[], int dstStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_32f_C1PV_T(const Ipp32f* const pSrc[], IpprVolume srcVolume, int srcStep, IpprCuboid srcVoi, Ipp32f* const pDst[], int dstStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_8u_C1V_T(const Ipp8u* pSrc, IpprVolume srcVolume, int srcStep, int srcPlaneStep, IpprCuboid srcVoi, Ipp8u* pDst, int dstStep, int dstPlaneStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_16u_C1V_T(const Ipp16u* pSrc, IpprVolume srcVolume, int srcStep, int srcPlaneStep, IpprCuboid srcVoi, Ipp16u* pDst, int dstStep, int dstPlaneStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

IppStatus ipprWarpAffine_16u_C1V_T(const Ipp16u* pSrc, IpprVolume srcVolume, int srcStep, int srcPlaneStep, IpprCuboid srcVoi, Ipp16u* pDst, int dstStep, int dstPlaneStep, IpprCuboid dstVoi, const double coeffs[3][4], int interpolation, Ipp8u* pBuffer);

Include Files

ippi.h

ippi_tl.h

Domain Dependencies

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

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

Parameters

pSrc

Array of pointers to the planes in the source volume.

srcVolume

Size, in pixels, of the source volume.

srcStep

Distance, in bytes, between the starting points of consecutive lines in each plane of the source volume.

srcPlaneStep

Distance, in bytes, between the starting points of consecutive lines in every plane of the source volume (for 8u_C1V, 16u_C1V, and 32f_C1V flavors).

dstStep

Distance, in bytes, between the starting points of consecutive lines in each plane of the destination volume.

srcVoi

Volume of interest of the source volume.

pDst

Array of pointers to the planes in the destination volume.

dstVoi

Volume of interest of the destination volume.

dstStep

Distance, in bytes, between the starting points of consecutive lines in every plane of the destination volume.

dstPlaneStep

Distance, in bytes, between the starting points of consecutive lines in every plane of the destination volume (for 8u_C1V, 16u_C1V, and 32f_C1V flavors).

coeffs

Coefficients of the affine transform.

interpolation

Type of interpolation, the following values are possible:

  • IPPI_INTER_NN- nearest neighbor interpolation,

  • IPPI_INTER_LINEAR- trilinear interpolation,

  • IPPI_INTER_CUBIC- tricubic interpolation,

  • IPPI_INTER_CUBIC2P_BSPLINE- B-spline,

  • IPPI_INTER_CUBIC2P_CATMULLROM- Catmull-Rom spline,

  • IPPI_INTER_CUBIC2P_B05C03- special two-parameters filter (1/2, 3/10).

pBuffer

Pointer to the external buffer.

Description

This function operates with volume of interest (VOI).

This affine warp function transforms the coordinates (x,y,z) of the source volume voxels according to the following formulas:

x' = c00*x + c01*y + c02*z+ c03

y' = c10*x + c11*y + c12*z+ c13

z' = c20*x + c21*y + c22*z+ c23

where x', y' and z' denote the voxel coordinates in the transformed volume, and cij are the affine transform coefficients stored in the array coeffs.

Before calling this function, compute the size of the external buffer pBuffer using the ipprWarpAffineGetBufSize function.

Return Values

ippStsNoErr

Indicates no error. Any other value indicates an error or a warning.

ippStsNullPtrErr

Indicates an error when one of the specified pointers is NULL.

ippStsSizeErr

Indicates an error when width, or height, or depth of the source and destination volumes is less than, or equal to zero.

ippStsCoeffErr

Indicates an error when determinant of the transform matrix cij is equal to zero.

ippStsInterpolationErr

Indicates an error when interpolation has an illegal value.

ippStsWrongIntersectVOI

Indicates a warning when srcVoi has no intersection with the source volume, operation is not performed.

See Also