给定一个图像,我在它上面应用 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。
提前致谢!
吉尔。