У меня есть задание о fftw, и я пытался написать небольшую программу для создания fft изображения. Я использую CImg для чтения и записи изображений. Но все, что я получаю, это темное изображение с одной белой точкой: (* 1001 *
Скорее всего, я делаю это неправильно, и я был бы признателен, если бы кто-нибудь смог объяснить, как это сделать. Мне не нужен код, мне просто нужно знать, как правильно это сделать.
Вот мой код:
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");