【发布时间】:2026-01-10 20:20:04
【问题描述】:
CImg output i am getting
Desired FFT ouptut.Checked using ImageJ
#include "CImg.h"
using namespace cimg_library;
int main(int argc, char * argv[]) {
const char * input_file = "Lenna.png";
CImg<unsigned char> * input = new CImg<unsigned char>(input_file);
//resize_fft(*input); //Resize the image for the FFT
//CImg<unsigned char> gray = any2gray(*input); //to single-channel grayscale image
//free(input);
CImgList<unsigned char> fft = input->get_FFT();
CImg<unsigned char>::FFT(fft[0], fft[1], false);
fft[0].save("fft.jpg");
return 1;
}
我试过这段代码。但是我得到了噪声图像。任何人都可以帮助我获得所需的 fft 图像吗?我在 Linux 上运行。我已经发布了上面的图片。
【问题讨论】:
-
我没有尝试过,只是猜测,但我想你需要转换为
float沿线某处保存你的 FFT 数据的范围 - 它不是将适合unsigned char。 -
我应该将所有未签名的字符转换为浮点数吗?
-
哇。这在 CImg 中是一个糟糕的设计选择。使用整数值计算 FFT 是没有意义的。从the very sparse docs 看来,该函数就地进行了计算。所以任何不是浮点类型的
T都会产生错误的结果。为什么这甚至可能是我无法理解的。 -
您最好使用
get_FFT,它会以适当的类型返回转换后的图像。 -
@CrisLuengo 我在将 unsigned char 转换为 float 时遇到分段错误。