【问题标题】:Fourier transformation in frequency domain with opencv使用opencv进行频域傅里叶变换
【发布时间】:2011-08-02 11:53:05
【问题描述】:

我正在尝试在频域中实现傅立叶变换。 我相应地使用了getOptimalDFTSize,并将图像和蒙版复制到更大的图像中,适合傅立叶变换。我使用来自here 的示例代码作为参考。
现在,我必须分离实部和虚部,并执行图像虚部与掩模虚部的像素乘法,实部也是如此。但是当我尝试这样做时,我收到以下错误消息:

OpenCV 错误:断言失败 (type == srcB.type() && srcA.size() == srcB.size()) 在 mulSpectrums,文件 /build/buildd/opencv-2.1.0/src/cxcore/ cxdxt.cpp,第 1855 行 /build/buildd/opencv-2.1.0/src/cxcore/cxdxt.cpp:1855: 错误: (-215) type == srcB.type() && srcA.size() == srcB.size() in function多光谱

代码如下:

//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);

我在这里做错了什么?

【问题讨论】:

    标签: opencv


    【解决方案1】:

    图像和蒙版应该具有相同的大小(宽度和高度)和(很可能这是问题)类型。因此,如果它是不同的类型,您需要转换其中一个,使它们具有相同的类型。

    【讨论】:

    • 类型没问题,问题出在尺寸或掩码上。我使用了一个公式,类似于我用于计算图像大小的公式,而不是仅仅这样做:dft_size_mask = dft_size_image;Thx :)
    猜你喜欢
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多