使用CIMg&的傅里叶滤波C ++

时间:2014-11-10 11:02:09

标签: c++ image-processing fft cimg

我需要实现一个非常简单的滤波器来抑制一系列频率。 然后我需要计算逆傅里叶变换并保存新图像。

我正在使用CImg库(C ++)。 到目前为止,我已经完成了:

const CImg<unsigned char> img(source_img);
CImgList<> F = img.get_FFT();

我被困在这里。 F是真实和虚构部分的两个CImg对象的列表,对吗?

有了这个F我如何抑制频率并重建新的图像?

P.S。这是一个家庭作业,所以我不想要一个解决方案,但要解释做什么, 怎么做以及为什么。

1 个答案:

答案 0 :(得分:3)

由于它的作业,请随意尝试。

您需要开始工作的第一步是直接转换图像并获取原始输入。如果这不起作用,你很乐意及早赶上它。

第二步是将FFT的某些部分归零,将结果转换回来,看看它是如何不同的。 FFT中的每个像素代表输入中的频率,因此试验找到关系。然后解释与你自己的关系。

最后,一旦你弄清楚哪些像素想要归零以及要保留哪些像素,就要创建一个黑色&amp;白色蒙版,将其转换为灰度图像,然后将其模糊。 FFT域中的锐边在图像域中具有无限支持 - 实际上,这会导致额外的伪边缘。有一个模糊的边缘会更好。