画像が与えられたら、それに 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 の後の数値ははるかに大きくなります (約 4 ~ 5 ではなく約 30,000)。
誰かが私にこの振る舞いを説明してもらえますか? 同じ結果を得るには何を変更すればよいですか?
私はVS 2012とWindows 8でOpenCV 2.4.5に取り組んでいます。
前もって感謝します!
ギル。