然后在openCV中进行FFT然后反向FFT并不能提供与原始图像相同的结果

时间:2013-11-13 16:14:13

标签: opencv image-processing

鉴于图像,我正在应用fft然后反向fft。

我希望得到与原始图像相同的结果,但我得到了大量的数字。

我使用以下简单代码:

    fid=fopen("C:\\res3\\padded2.txt","w+");
    for (int i=0;i<padded2.rows;i++){
        for (int j=0;j<padded.cols;j++){
            fprintf(fid,"%f ", padded2.at<float>(i,j));
        }
        fprintf(fid,"\n");
    }
    fclose(fid);


    Mat fftimg;
    dft(padded2, fftimg);            

    Mat ifftimg;
    dft(fftimg,ifftimg,cv::DFT_INVERSE);

    fid=fopen("C:\\res3\\inversefftimage.txt","w+");
    for (int i=0;i<ifftimg.rows;i++){
        for (int j=0;j<ifftimg.cols;j++){
            fprintf(fid,"%f ",ifftimg.at<float>(i,j));
        }
        fprintf(fid,"\n");
    }

    fclose(fid);

如您所见,我将图像打印到fft + ifft之前和之后的文件中。当我检查文件时,我看到fft + ifft后的数字非常不同。 fft + ifft之后的数字要大得多(大约30,000而不是大约4-5)。

有人可以解释一下这种行为吗?我应该改变什么来获得相同的结果?

我正在使用VS 2012和Windows 8开发OpenCV 2.4.5。

提前致谢!

吉尔。

1 个答案:

答案 0 :(得分:1)

查看此answer。它可能与您的输出数据类型有关。默认输出类型是复数。