我目前在 opencv 中遇到 dft 函数的奇怪行为。我正在 dft 转发一些 opencv 矩阵并在频域中进行一些计算,然后我再次将其转换回来。
对于尺寸为 2 次方(例如 256x256、512x512)的图像,结果看起来与预期的一样,但对于任何其他尺寸,我完全是胡说八道。
我的代码大致如下:
cv::Mat Z(Pgrads.rows, Pgrads.cols, CV_32FC2, cv::Scalar::all(0));
cv::dft(Pgrads, P, cv::DFT_SCALE | cv::DFT_COMPLEX_OUTPUT);
cv::dft(Qgrads, Q, cv::DFT_SCALE | cv::DFT_COMPLEX_OUTPUT);
/* doing some calculations */
cv::dft(Z, Z, cv::DFT_INVERSE | cv::DFT_REAL_OUTPUT);
我正在做的操作称为光度立体,所以简而言之,我正在对一些渐变进行全局积分。有没有其他人遇到过opencv这个问题,可以给我一些建议吗?
提前致谢