OpenCV mulSpectrum и dft автокорреляционная симметрия - PullRequest
0 голосов
/ 28 августа 2018

Я вычисляю автокорреляцию на вещественном 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 <<

Я что-то не так делаю? Это известная проблема? Есть ли способ избежать этой асимметрии при работе с поплавками?

...