我目前遇到一個奇怪的行爲與dft函數在opencv中。我是dft轉發一些opencv矩陣,並在頻域進行一些計算,然後我再次將其轉換回來。opencv dft只適用於圖像尺寸的權力2
結果看起來像預期的維度爲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這個問題,並可以給我一些建議?
預先感謝
我知道opencv dft是做fft的,當且僅當該圖像在任何其他情況下具有2次方的權力和規則的dft,但這並不能解釋爲什麼我會得到奇怪的結果。 – NewProggie