gpt4 book ai didi

c++ - CImg - 获取图像的逆 FFT

转载 作者:行者123 更新时间:2023-11-30 05:32:48 26 4
gpt4 key购买 nike

我正在尝试实现光谱方法来计算图像的显着性图,但我似乎无法使逆 FFT 工作。

int main(int argc, char * argv[]) {

const char * input_file = "img/pic.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 = gray.get_FFT();
CImg<unsigned char>::FFT(fft[0], fft[1], true);
fft[0].save("img/fft.png");

return 1;
}

最终,fft.png 只是一个黑色图像文件。我找不到任何人使用 CImg 计算逆 fft 的例子...有人有任何线索吗?

非常感谢!罗宾

最佳答案

对于范围广泛的图像可能出现的一个常见问题是图像的 FFT 无法用有限范围的 unsigned char 来表示(或松散太多信息无法实际使用) > 。您可以通过使用中间 float 图像执行 FFT 计算来避免这种情况:

// convert from unsigned char to float to support larger range of values
CImg<float> fft_in = gray;

// Forward transform
CImgList<float> fft = fft_in .get_FFT();

// Inverse transform
CImg<float>::FFT(fft[0], fft[1], true);

// Normalize back to unsigned char range (0,255) and save
fft[0].normalize(0,255).save("img/fft.png");

关于c++ - CImg - 获取图像的逆 FFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com