Я вычисляю автокорреляцию на вещественном 2D мате, используя dft и mulSpectrums .
Я ожидал центральной симметрии в результате автокорреляции, но получил асимметричные результаты, хотя и с очень небольшой ошибкой.
Асимметрию можно наблюдать, например, с помощью следующего кода:
#include <opencv2/opencv.hpp>
using namespace cv;
Mat samplef, psd, corr;
Mat sample(32, 32, CV_32F, Scalar(0));
Rect roi(2,2,3,3);
sample(roi)=0.7f;
dft(sample, samplef);
mulSpectrums(samplef, samplef, psd, 0, true);
dft(psd, corr, DFT_SCALE|DFT_INVERSE)
Построение области 3х3 вокруг пика корреляции в корре. Я получаю:
+1.9599995613 << +2.9399995804 +1.9599996805
+2.9399995804 +4.4099998474 +2.9399995804
+1.9599996805 +2.9399995804 +1.9599997997 <<
Я что-то не так делаю? Это известная проблема? Есть ли способ избежать этой асимметрии при работе с поплавками?