私はfftwについての課題を持っていて、画像のfftを作成するための小さなプログラムを書こうとしていました。CImgを使用して画像の読み取りと書き込みを行っています。しかし、私が得るのは、単一の白い点がある暗い画像だけです:(
私はこれを間違った方法で行っている可能性が高いので、誰かがこれをどのように行うべきかを説明していただければ幸いです。コードは必要ありません。これを行う正しい方法を知る必要があります。
これが私のコードです:
CImg<double> input("test3.bmp");
CImg<double> image_fft(input, false);
unsigned int nx = input.dimx(), ny = input.dimy();
size_t align = sizeof(Complex);
array2<Complex> in (nx, ny, align);
fft2d Forward(-1, in);
for (int i = 0; i < input.dimx(); ++i) {
for (int j = 0; j < input.dimy(); ++j) {
in(i,j) = input(i,j);
}
}
Forward.fft(in);
for (int i = 0; i < input.dimx(); ++i) {
for (int j = 0; j < input.dimy(); ++j) {
image_fft(i,j,0) = image_fft(i,j,1) = image_fft(i,j,2) = std::abs(in(i,j));
}
}
image_fft.normalize(0, 255);
image_fft.save("test.bmp");