我試圖在頻域實現傅里葉變換。 我相應地使用了getOptimalDFTSize
,並且我複製了更大圖像中適合於傅里葉變換的圖像和蒙版。我使用了here的示例代碼作爲參考。
現在,我必須分開實部和虛部,並且將圖像虛部與虛部作像素乘法運算,對於真實部分也是如此。但是當我嘗試這樣做時,我得到以下錯誤信息:頻域傅里葉變換opencv
OpenCV Error: Assertion failed (type == srcB.type() && srcA.size() == srcB.size()) in mulSpectrums, file /build/buildd/opencv-2.1.0/src/cxcore/cxdxt.cpp, line 1855 /build/buildd/opencv-2.1.0/src/cxcore/cxdxt.cpp:1855: error: (-215) type == srcB.type() && srcA.size() == srcB.size() in function mulSpectrums
的代碼如下:
//fourier transfromation of real and imaginary part
Mat complex_image, real_image, complex_mask, real_mask;
cv::dft(new_image, complex_image, DFT_COMPLEX_OUTPUT);
cv::dft(new_image, real_image, DFT_REAL_OUTPUT);
cv::dft(new_mask, complex_mask, DFT_COMPLEX_OUTPUT);
cv::dft(new_mask, real_mask, DFT_REAL_OUTPUT);
//pixelwise multiplication
Mat multiplied_complex, multiplied_real;
cv::mulSpectrums(complex_image, complex_mask, multiplied_complex, DFT_COMPLEX_OUTPUT);
cv::mulSpectrums(real_image, real_mask, multiplied_real, DFT_REAL_OUTPUT);
我在做什麼錯在這裏?
該類型沒問題,問題出在尺寸或面具上。我使用了一個公式,類似於我用來計算圖像大小的公式,而不是這樣做:'dft_size_mask = dft_size_image;'Thx :) – mobearette 2011-04-10 15:14:05