[英]Inverse FFT in OpenCV gives different result than Matlab
Using OpenCV, I want to get the same result of Matlab's ifft2
function. 使用OpenCV,我想获得与Matlab的ifft2
函数相同的结果。 In Matlab I get: 在Matlab中,我得到:
A = [1 2 0; 4 5 0; 7 8 9; 10 11 12];
inverse = ifft2(A);
inverse =
5.7500 + 0.0000i -0.1250 + 0.3608i -0.1250 - 0.3608i
-1.7500 - 2.0000i -0.3080 + 0.4665i 0.5580 + 0.0335i
-1.2500 + 0.0000i -0.1250 - 0.2165i -0.1250 + 0.2165i
-1.7500 + 2.0000i 0.5580 - 0.0335i -0.3080 - 0.4665i
In OpenCV, when I do: 在OpenCV中,当我这样做时:
cv::Mat paddedA;
int m = cv::getOptimalDFTSize(A.rows);
int n = cv::getOptimalDFTSize(A.cols);
cv::copyMakeBorder(A, paddedA, 0, m - A.rows, 0, n - A.cols, cv::BORDER_CONSTANT, cv::Scalar::all(0));
cv::Mat planes[] = { cv::Mat_<float>(paddedA), cv::Mat::zeros(paddedA.size(), CV_32F) };
cv::Mat complexA;
cv::merge(planes, 2, complexA);
cv::Mat inverse;
cv::idft(complexA, inverse, cv::DFT_SCALE | cv::DFT_COMPLEX_OUTPUT);
This gives me: 这给了我:
inverse = [1, -0, 2, -0, 0, -0;
4, -0, 5, -0, 0, -0;
7, -0, 8, -8, 9, 0;
10, -0, 11, -0, 12, -0]
And the type of A
is CV_32F
. A
的类型为CV_32F
。 How can I get the same result as that of Matlab? 如何获得与Matlab相同的结果?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.