-->

How to do un-normalized 2D Cross Correlation in IP

2019-07-23 12:15发布

问题:

I'm doing some C++ optimization work and have need of the plain vanilla version of cross correlation without any mean offset or normalization scaling operations. I know that under normal circumstances with image data the influence of brightness is removed using the above means so that only structural similarity can be discerned but in our application brightness is actually needed. I'm using IPP 7.1, does anybody know if there's a means to do this? The next best thing I'll have to do is write the loops manually and exploit SIMD autovectorization together with some OpenMP parallelization.

回答1:

Yes, of course, there are also available CrossCorr functions without normalization - take a look at ippi.h:

IPPAPI( IppStatus, ippiCrossCorrValid_32f_C1R, ( const Ipp32f* pSrc,
    int srcStep, IppiSize srcRoiSize, const Ipp32f* pTpl, int tplStep,
    IppiSize tplRoiSize, Ipp32f* pDst, int dstStep ))

IPPAPI( IppStatus, ippiCrossCorrValid_8u32f_C1R, ( const Ipp8u* pSrc,
    int srcStep, IppiSize srcRoiSize, const Ipp8u* pTpl, int tplStep,
    IppiSize tplRoiSize, Ipp32f* pDst, int dstStep ))

IPPAPI( IppStatus, ippiCrossCorrValid_8s32f_C1R, ( const Ipp8s* pSrc,
    int srcStep, IppiSize srcRoiSize, const Ipp8s* pTpl, int tplStep,
    IppiSize tplRoiSize, Ipp32f* pDst, int dstStep ))

IPPAPI( IppStatus, ippiCrossCorrValid_16u32f_C1R, ( const Ipp16u* pSrc,
    int srcStep, IppiSize srcRoiSize, const Ipp16u* pTpl, int tplStep,
    IppiSize tplRoiSize, Ipp32f* pDst, int dstStep ))

Regards, Igor