Computes normalized Euclidean distance between an image and a template.
Case 1: Operation with integer output
IppStatus ippiSqrDistanceFull_Norm_<mod>(const Ipp8u* pSrc, int srcStep, IppiSize srcRoiSize, const Ipp8u* pTpl, int tplStep, IppiSize tplRoiSize, Ipp8u* pDst, int dstStep, int scaleFactor);
Supported values for mod:
8u_C1RSfs |
8u_C3RSfs |
8u_C4RSfs |
8u_AC4RSfs |
Case 2: Operation on data with floating-point output
IppStatus ippiSqrDistanceFull_Norm_<mod>(const Ipp<srcDatatype>* pSrc, int srcStep, IppiSize srcRoiSize, const Ipp<srcDatatype>* pTpl, int tplStep, IppiSize tplRoiSize, Ipp32f* pDst, int dstStep);
Supported values for mod:
32f_C1R |
8u32f_C1R |
8s32f_C1R |
16u32f_C1R |
32f_C3R |
8u32f_C3R |
8s32f_C3R |
16u32f_C3R |
32f_C4R |
8u32f_C4R |
8s32f_C4R |
16u32f_C4R |
32f_AC4R |
8u32f_AC4R |
8s32f_AC4R |
16u32f_AC4R |
pSrc |
Pointer to the source image ROI. |
srcStep |
Distance in bytes between starts of consecutive lines in the source image. |
srcRoiSize |
Size of the source ROI in pixels. |
pTpl |
Pointer to the template image buffer. |
tplStep |
Distance in bytes between starts of consecutive lines in the template image. |
tplRoiSize |
Size of the template ROI in pixels. |
pDst |
Pointer to the destination image ROI. |
dstStep |
Distance in bytes between starts of consecutive lines in the destination image. |
scaleFactor |
Scale factor (see Integer Result Scaling). |
The function ippiSqrDistanceFull_Norm is declared in the ippi.h file. It operates with ROI (see Regions of Interest in Intel IPP). This function computes and returns the sum of squared distances (SSD) between the source and template images, that is, this function computes the normalized SSD value σtx(r,c) for each pixel in source and template buffers and stores the computed value in the corresponding pixel of the output image. The size of the resulting matrix with normalized SSD coefficients is
(Ws + Wt - 1) * (Hs + Ht - 1),
where Ws , Hs denote the width and height of the source image, and Wt , Ht denote the width and height of the template.
The template anchor for matching the image pixel is always at the geometric center of the template. (See the formula for σtx(r,c) in section Image Proximity Measures). There are no requirements for data outside the ROI. The function performs as if the source image ROI is zero padded.
For multi-channel images, each channel is processed separately.
Example “Using the function ippiSqrDistanceFull_Norm” shows how to use the function ippiSqrDistanceFull_Norm_32f_C1R.
ippStsNoErr |
Indicates no error. Any other value indicates an error or a warning. |
ippStsNullPtrErr |
Indicates an error when any of the specified pointers is NULL. |
ippStsSizeErr |
Indicates an error condition when srcRoiSize or tplRoiSize has a field with zero or negative value, or when srcRoiSize has a field with value smaller than value of the corresponding field of tplRoiSize. |
ippStsStepErr |
Indicates an error condition if at least one of srcStep, tplStep, or dstStep has a zero or negative value. |
ippStsMemAllocErr |
Indicates an error condition if memory allocation fails. |
void finc_sqr_distance()
{
Ipp32f pSrc[5*4];
Ipp32f pTpl[5*4];
Ipp32f pDst[9*7];
IppiSize srcRoiSize = {5,4};
IppiSize tplRoiSize = {5,4};
int srcStep = 5*sizeof(Ipp32f);
int tplStep = 5*sizeof(Ipp32f);
int dstStep = 9*sizeof(Ipp32f);
ippiSet_32f_C1R(2.0, pSrc, srcStep, srcRoiSize);
ippiSet_32f_C1R(1.0, pTpl, tplStep, tplRoiSize);
ippiSqrDistanceFull_Norm_32f_C1R( pSrc, srcStep, srcRoiSize, pTpl, tplStep,
tplRoiSize, pDst, dstStep);
}
Result
1.58 1.12 0.91 0.79 0.71 0.79 0.91 1.12 1.58
1.29 0.91 0.75 0.65 0.58 0.65 0.75 0.91 1.92
1.12 0.79 0.65 0.56 0.50 0.56 0.65 0.79 1.12
1.29 0.91 0.75 0.65 0.58 0.65 0.75 0.91 1.29
1.58 1.12 0.91 0.79 0.71 0.79 0.91 1.12 1.58
2.24 1.58 1.29 1.12 1.00 1.12 1.29 1.58 2.24
Copyright © 2000 - 2011, Intel Corporation. All rights reserved.