我想对频域中的图像进行平滑处理。当我使用谷歌看到任何文章它给了一些我不需要的Matlab代码。我可以对图像进行FFT,但我不知道如何在频域中实现任何平滑技术(ILPF,BLPF,IHPF,BHPF)。如果您可以为任何上述技术提供任何代码示例而不使用任何图像处理库,那么它将非常有用并且C#是首选。
谢谢,
答案 0 :(得分:2)
您能否通过'在频域中平滑'来定义您的意思?您可以使用FFT生成光谱图像,并通过某种函数将图像乘以衰减特定频率,然后使用逆FFT将光谱转换回图像。但是,对于这种滤波(通过频率中的某些缩放函数进行乘法),通过在空间域中对双重函数进行卷积,可以更快地实现相同的结果。
在任何情况下,如果您希望自己实现,请阅读FFT(快速傅立叶变换)和卷积。如果您感兴趣,也可以查看信号处理教科书,因为离散滤波背后的理论相当深入。如果没有这个理论,算法就没有多大意义,尽管你可以在不理解它们的情况下应用它们。
如果您想实施自己的DSP算法,请在线查看this book。特别是,第33章描述了巴特沃斯滤波器设计背后的数学和算法。第12章描述了如何实现FFT。
答案 1 :(得分:1)
Christian Graus有很多关于Code Project的系列文章,你可能会发现它很有用,尤其是第2部分,其中包括平滑过滤器:
Image Processing for Dummies with C# and GDI+ Part 1 - Per Pixel Filters
Image Processing for Dummies with C# and GDI+ Part 2 - Convolution Filters
Image Processing for Dummies with C# and GDI+ Part 3 - Edge Detection Filters
Image Processing for Dummies with C# and GDI+ Part 4 - Bilinear Filters and Resizing
Image Processing for Dummies with C# and GDI+ Part 5 - Displacement filters, including swirl
Image Processing for Dummies with C# and GDI+ Part 6 - The HSL color space
答案 2 :(得分:1)
f(x)有不同的选择,看起来会有所不同。例如高斯函数或bessel或其他。我为我的本科生做了这件事,非常有趣。如果你给我发邮件,我会寄给你我的程序: - )。
有一点需要注意的是fft输出的排序。它生成的数组可以以奇怪的方式排序。重要的是要找出哪个数组索引对应于“分析”傅里叶变换中的哪个x / y位置!
答案 3 :(得分:0)