我试图在频域实现傅里叶变换。 我相应地使用了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