应用傅里叶逆变换OpenCV后构建图像



我正在尝试按照链接 http://www.docs.opencv.org/2.4/doc/tutorials/core/discrete_fourier_transform/discrete_fourier_transform.html 中的代码将傅里叶变换应用于图像,在此之后,我尝试删除傅里叶频谱中可见的噪声分量作为水平线和垂直线,如下面的链接所示的图像:(http://www.imagemagick.org/Usage/fourier/twigs_spectrum.png) - 光谱图像

现在,

在将光谱中的噪声像素位置归零后,我只想看看原始图像现在是如何变化的。我已经对其应用了反向DFT,并重建了图像,但图像是空图像。 这是我的代码:

Mat magI_copy;
magI.copyTo(magI_copy);
//magI.convertTo(magI_copy, CV_8U);
//imshow("image", magI_copy); waitKey();
for (int i = 0; i < 86; i++){
    for (int j = 127; j < 130;j++){
        magI_copy.at<float>(i, j) = 0;
    }
}
for (int i = 171; i < magI_copy.rows; i++){
    for (int j = 127; j < 130; j++){
        magI_copy.at<float>(i, j) = 0;
    }
}
for (int i = 126; i < 131; i++){
    for (int j = 0; j < 87; j++){
        magI_copy.at<float>(i, j) = 0;
    }
}
for (int i = 126; i < 131; i++){
    for (int j = 170; j < magI_copy.cols; j++){
        magI_copy.at<float>(i, j) = 0;
    }
}
///////////Inverse Transform
cv::Mat inverseTransform;
cv::dft(magI_copy, inverseTransform, cv::DFT_INVERSE | cv::DFT_REAL_OUTPUT);
normalize(inverseTransform, inverseTransform, 0, 1, CV_MINMAX);
Mat finalimage;
inverseTransform.convertTo(finalimage, CV_8U); 

逆 DFT 是你在这里所需要的。这是您问题的答案。

相关内容

  • 没有找到相关文章

最新更新