我需要实现一个非常简单的滤波器来抑制一定范围的频率。
然后,我需要计算傅立叶逆变换并保存新图像。
我正在使用CImg库(C++)。
到目前为止,我已经完成了:
const CImg<unsigned char> img(source_img);
CImgList<> F = img.get_FFT();
我被困在这里。
F是真实和虚构的两个CImg对象的列表,对吗?
有了这个F,我如何抑制频率并重建新图像?
附言这是一项家庭作业,所以我不需要解决方案,而只是要做什么的解释,
怎么做以及为什么。
最佳答案
由于这是家庭作业,请随时尝试。
您需要进行的第一步是直接将图像转换回原来的输入。如果这不起作用,您将很高兴早日发现它。
第二步是仅将FFT的某些部分归零,将结果转换回去,看看它有何不同。 FFT中的每个像素代表输入中的一个频率,因此请尝试找到该关系。然后与您自己说明这种关系。
最后,一旦弄清了哪些像素要归零,哪些像素要保留,就创建一个黑白蒙版,将其变成灰度图像,然后对其进行模糊处理。 FFT域中的锐边在图像域中具有无限的支持-实际上,这会导致其他伪边缘。最好有一个模糊的边缘。
关于c++ - 使用CIMg和C++进行傅立叶过滤,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26842277/