Как сделать ненормализованную 2D кросс-корреляцию в IPP

Я занимаюсь оптимизацией на C ++, и мне нужна простая кросс-корреляционная версия без каких-либо средних смещений или операций масштабирования нормализации. Я знаю, что в обычных условиях с данными изображения влияние яркости снимается с помощью вышеуказанных средств, так что можно различить только структурное сходство, но в нашем приложении яркость действительно необходима. Я использую IPP 7.1, кто-нибудь знает, есть ли способ сделать это? Следующая лучшая вещь, которую я должен сделать, это написать циклы вручную и использовать автовекторизацию SIMD вместе с некоторым распараллеливанием OpenMP.

2

Решение

Да, конечно, есть и в наличии Функции CrossCorr без нормализации — взгляните на 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 ))

С уважением, Игорь

1

Другие решения