我正在使用 dft 和 mulSpectrums 在实值二维Mat上计算自相关。
我期望自相关结果具有中心对称性,但是得到不对称结果,尽管误差很小。
例如,可以通过以下代码观察不对称性:
#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)
绘制3x3区域围绕corr中的相关峰,我得到:
+1.9599995613 << +2.9399995804 +1.9599996805
+2.9399995804 +4.4099998474 +2.9399995804
+1.9599996805 +2.9399995804 +1.9599997997 <<
我做错什么了吗?这是一个已知问题吗?有没有办法在仍然使用浮点数的情况下避免这种不对称性?