現在、opencv の dft 関数で奇妙な動作が発生しています。私はいくつかのopencv行列をdft転送し、周波数領域でいくつかの計算を行っています。その後、再び変換しています。
結果は、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でこの問題を経験したことがありますか?アドバイスをもらえますか?
前もって感謝します