CImg - 获取图像的反向 FFT
CImg - Get inverse FFT of an image
我正在尝试实现光谱方法来计算图像的显著性图,但我似乎无法让反向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 的任何示例......有人有任何线索吗?
多谢!知更鸟
对于
广泛的图像,可能会出现一个常见问题是,在有限的unsigned char
范围内无法表示图像的FFT(或丢失太多信息而无法实际使用)。您可以通过使用中间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++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 2D FFT后的图像结果错误
- cpp中基于FFT的图像配准(可选使用OpenCV)
- 图像四分之一FFT通常效果更好
- CImg - 获取图像的反向 FFT
- 向前FFT图像和向后FFT图像得到相同的结果
- 在试图计算2幅图像的FFT(快速傅里叶变换)时发生访问冲突