Template Matching function questions

Template Matching function questions

Hi,

I have trouble finding the difference between SqrDistanceFull_Norm/SqrDistanceSame_Norm/SqrDistanceValid_Norm, as well as CrossCorFull_Norm/CrossCorSame_Norm/CrossCorValid_Norm, as well as CrossCorFull_NormLevel/CrossCorSame_NormLevel/CrossCorValid_NormLevel.

What exactly is the difference between Full/Same/Valid versions?

All of these functions are marked as deprectated, but nowhere can I find the name of a replacement function. Which function(s) replace the deprecated ones?

I must also say that the documentation is really hard to read. All these variants of function descriptions seem to share the same documentation (at least 99% is the same), making it very very hard to spot differences.

Best regards

Peter

11 posts / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.

Please take a look at ippi.h header file:

//...
// ippiSqrDistanceValid_Norm_8s32f_AC4R.
//
// Purpose: Computes normalized Euclidean distance, or Sum of Squared
// Distance (SSD) of an image and a template (another image).
// The SSD values are image similarity measures: the smaller
// value of SSD at a particular pixel, the more similarity between
// the template and the image in the neighborhood of the pixel.
// If IppiSize's of image and template are Wa * Ha and
// Wb * Hb correspondingly, then the IppiSize of the resulting
// matrix with normalized SSD coefficients will be
// a) in case of 'Full' suffix:
// ( Wa + Wb - 1 )*( Ha + Hb - 1 ).
// b) in case of 'Same' suffix:
// ( Wa )*( Ha ).
// c) in case of 'Valid' suffix:
// ( Wa - Wb + 1 )*( Ha - Hb + 1 ).
// Notice:
// suffix 'R' (ROI) means only scanline alignment (srcStep), in
// 'Same' and 'Full' cases no any requirements for data outstand
// the ROI - it's assumed that template and source images are zero padded.
//...

Thanks for the explanation.

What about the other question:

All of these functions are marked as deprectated, but nowhere can I find the name of a replacement function. Which function(s) replace the deprecated ones?

Please take a look at a thread:

Intel® Integrated Performance Primitives 7.1 Deprecation Information
software.intel.com/en-us/forums/topic/327960

for more information.

Also, it was already discussed many times that older and newer versions of IPP library could be used at the same time in the same application. Even if functions you've mentioned are removed from IPP library in the future you could continue using older version of IPP.

Here is a collection of different links to articles and documentation of IPP library:

software.intel.com/en-us/articles/intel-ipp-71-library-release-notes

IPP knowledge base
software.intel.com/en-us/articles/intel-ipp-kb/all
software.intel.com/en-us/articles/intel-ipp-70-library-install-guide

IPP code samples
software.intel.com/en-us/articles/code-samples-for-intel-integrated-performance-primitives-intel-ipp-library-71
software.intel.com/en-us/articles/intel-integrated-performance-primitives-code-samples

Others
software.intel.com/en-us/articles/intel-integrated-performance-primitives-faq
software.intel.com/en-us/articles/intel-integrated-performance-primitives-documentation
software.intel.com/en-us/articles/ipp-crypto-guide
software.intel.com/en-us/articles/download-ipp-cryptography-libraries
software.intel.com/en-us/articles/boosting-cryptography-performance-with-intel-libraries
software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-understanding-cpu-optimized-code-used-in-intel-ipp
software.intel.com/en-us/articles/threading-and-intel-integrated-performance-primitives

Note: However, in 99% of cases I use IPP documentation in Pdf format.

Please excuse, I still need to come back to the deprecation issue, because it just does not make sense in my head yet.

Are you saying that these template matching functions may be removed and no replacement might be available in newer IPP versions?

Any comments from Intel software engineers on the last question? Thanks in advance.

I agree with Peter because deprecation message doesn't say anything about replacements of these functions in future versions of IPP library.

From ippi.h from IPP version 7.1.1:
...
IPP_DEPRECATED("is deprecated. API of this function is obsolete and will be changed in one of the future IPP releases. Use the following link for details: software.intel.com/en-us/articles/intel-ipp-71-deprecated-features/")\
IPPAPI( IppStatus, ippiCrossCorrFull_Norm_32f_C1R, ( const Ipp32f* pSrc, int srcStep,
IppiSize srcRoiSize, const Ipp32f* pTpl, int tplStep, IppiSize tplRoiSize,
Ipp32f* pDst, int dstStep ))
...

I was also a bit shocked to read that convolution would be removed from IPP.... If only the API is going to be modified, I can then breathe normal!

Hello Thomas and Peter,

Deprecation does not mean immediate removal, but it does begin the process and collect the feedback for these function. If you notice some function is important, please feel free to provide your feedback in the following site:
http://software.intel.com/sites/products/ipp-deprecated-features-feedback/

Regards,
Chao

Hi all,

Full, Same an Valid notations have the same meaning as in MatLab. Regarding deprecation: in IPP 8.0 the new APIs for these functionalities will introduced, so deprecation message will be changed with a reccomendation to use the new one. Your feedback on new APIs will be appreciated.

regards, Igor

Hi all,

Full, Same an Valid notations have the same meaning as in MatLab. Regarding deprecation: in IPP 8.0 the new APIs for these functionalities will introduced, so deprecation message will be changed with a reccomendation to use the new one. Your feedback on new APIs will be appreciated.

regards, Igor

Leave a Comment

Please sign in to add a comment. Not a member?