一文读懂傅立叶变换处理图像的原理

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

a9d79a90d45039e5fc585a554f2f3b64.png

图 (a): (从左到右) (1) 原始图片 (2) 使用高斯低通滤波器 (3) 使用高斯高通滤波器. 本文中的原始图像来自OpenCV Github示例。

数字图像现在已经成为我们日常生活的一部分。因此,数字图像处理变得越来越重要。如何提高图像的分辨率或降低图像的噪声一直是人们热门话题。傅里叶变换可以帮助我们解决这个问题。我们可以使用傅立叶变换将灰度像素模式的图像信息转换成频域并做进一步的处理。

今天,我将讨论在数字图像处理中,如何使用快速傅立叶变换,以及在Python中如何实现它。操作流程如下 (从左到右):

1788138e4bbfd354c9503a76268d4c13.png

图(b)

 1. 实现快速傅立叶变换,将灰度图像转换为频域

2. 零频域部分的可视化与集中

3. 应用低/高通滤波器过滤频率

4. 离散

5. 实现快速傅里叶逆变换生成图像数据

让我们深入到每一部分,找出这些步骤背后的理论。

快速傅里叶逆变换

ef873fd84cb9fa2748e44cac82d6d9ba.png

图 (c): (从左到右) (1)原始图像 (2) FFT 频谱的可视化输出 (3) 集中化 (4) 离散化 (5) 逆向FFT

与现实生活中的光波和声波不同,由于像素的不连续性,数字图像是离散的。这意味着我们应该实现离散傅立叶变换(DFT)而不是傅立叶变换。然而,离散傅立叶变换(DFT)常常太慢而不实用,这就是我选择快速傅立叶变换(FFT)进行数字图像处理的原因。

第一步:计算二维快速傅里叶变换。

快速傅立叶变换(FFT)处理的结果是一个很难直接可视化的复数数组。因此,我们必须把它转换成二维空间。这里有两种方法可以可视化这个快速傅立叶变换(FFT)结果:1、频谱2、相位角

08da3702d670f890e31c280f12e35a0c.png

图 (d): (从左到右t) (1) 频谱 (2) 相位角

从图(d)(1)可以看出,四个角上有一些对称图案。这些图案可以在下一步中转换到图像的中心。

频谱图像中的白色区域显示出较高的频率。频谱图像中的角表示低频域。因此,结合以上两点,角上的白色区域表明:在低/零频域中存在高频率,这对于大多数图像来说是非常正常的情况。

另一方面,很难从图(d)(2)中识别出任何明显的图案,这并不代表快速傅立叶变换(FFT)的相位角完全没有用处,因为相位保留了图像所必需的形状特征。

第二步:将零频域部分移到频谱中心。

二维快速傅立叶变换(FFT)具有平移和旋转特性,因此我们可以在不丢失任何信息的情况下移动频谱。我把零频域部分移到了频谱的中心,这使得频谱图像对人类更为可见。此外,这种转换可以帮助我们轻松实现高通/低通滤波器。

步骤3:与步骤2相反。将零频域部分移回原位置

步骤4:与步骤1相反。计算二维快速傅里叶逆变换。

步骤3和步骤4的过程是将频谱信息转换回灰度图像。它可以通过应用逆向移位和快速傅立叶变换(FFT)的逆运算来实现。

编码

在Python中,我们可以利用Numpy模块中的numpy.fft  轻松实现快速傅立叶变换(FFT)运算操作。

在理解了傅里叶变换背后的基本理论之后,我们就可以研究如何控制频谱输出来处理图像了。首先,我们需要了解低/高通滤波器。

低通滤波器

bceb3472409ad4ea6daf69378197628a.png图 (e):

低通滤波器是一种只允许低频谱通过的滤波器。图像中的低频谱意味着像素值变化缓慢。例如,图像中颜色变化较小的平滑区域(如新空白白纸的中心)被视为低频谱内容。

由于低通滤波器的输出只允许低频通过,对噪声等高频谱内容进行了阻塞,使得处理后的图像具有较少的噪声像素。因此,低通滤波器被广泛应用于图像的去噪。

高通滤波器

7b210a8d43147ce14b9a44e664605c17.png图(f)

相反,高通滤波器是只允许高频谱通过的滤波器。图像中的高频谱意味着像素值变化很大。例如,图像中颜色变化较大的边缘区域,如两张重叠的白纸和黑纸之间的边缘,被认为是高频谱内容。

在图像中,通过做适当的重复计算来锐化原图像,能用适当的重复计算来锐化原始图像的图像,从高通滤波器的输出可获得图像中的边缘。这将增强原始图像的清晰度,使边缘更加清晰。

从图e(5)和图f(5),我们可以注意到这两个滤波器呈现不同的特性。低通滤波器倾向于保留图像中的整体信息。另一方面,高通滤波器试图辨别出图像中的变化。

在了解了前一节中的低通/高通滤波器的工作原理后,让我们继续认识滤波器形状

理想的滤波器

c519c7af1113601976f99bc867652fce.png

图(g):(从左到右)(1)使用D₀=50的低通滤波器 (2)使用D₀=50的高通滤波器

bc40abc613be113bfff043305b594c0e.png

公式 (a): 在理想低通滤波器的公式中,D₀是合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离

在理想滤波器背后的概念非常简单:给定一个半径值D₀作为阈值,低通滤波器图(g)(1)在阈值下H(u,v)等于1,在阈值以上H(u,v)等于0。

64bbdaf3564923e45a5188dc820b5081.png

公式(b): 在理想高通滤波器的公式中,D₀是合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离

相反,高通滤波器图(g)(2)在阈值下H(u,v)等于0,在阈值以上H(u,v)等于1。

巴特沃思(Btterworth)滤波器

a31ae81bae1cf50b89166bb7cca65e57.png图(h): (从左到右) (1) 使用n=20,D₀=50的Butterworth 低通滤波器(2) 使用n=20,D₀=50的Butterworth 高通滤波器

e300825ee5e27919ea69f73248653aca.png 

图 (i): (从左到右) (1)使用n=3的Butterworth 低通滤波器 (2)使用n=3的Butterworth高通滤波器

0c511b899298762e912f5331911aced2.png

公式(c): 在Butterworth低通滤波器的公式中, D₀是一个合理常量, D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离

与理想滤波器不同的是,巴特沃斯滤波器没有明显的不连续性,使得通过的频率和被过滤的频率之间有明显的边界。巴特沃斯滤波器在函数中引入了一个新的参数n。当操作n时,它影响着通过的频率和被过滤的频率之间边界的清晰程度。图(h)和图(i)

bab97830a5e8449d8cba8610a5a5c550.png

公式(d): 在Butterworth高通滤波器的公式中, D₀是一个合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离

高斯(Gaussian)滤波器

77c0210cc7eba2701a7588c78a169cca.png

b014628fe9dd42f4f5ea98bc39c620f7.png

图 (j): (从左到右) (1) 使用D₀=50的高斯低通滤波器 (2) 使用D₀=50的高斯低通滤波器

公式 (e): 在高斯低通滤波器的公式中,D₀是一个合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离

与巴特沃斯滤波器相比,高斯滤波器产生的边界更平滑。通过的频谱和被过滤的频谱之间的边界非常模糊,这便可以更平滑的处理图像。

53ce45aff35c51a4a67bc546f93a9fe8.png

公式 (f): 在高斯高通滤波器的公式中,D₀是一个合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离

滤波器比较

e7dc374a19241afd563b76fec1692bf9.png

图 (k): (从左到右) 理想滤波器, n=10的Butterworth滤波器和D₀=50 的高斯滤波器

我把所有不同的过滤器放在图(k)中,以总结我们在过滤器设计中所做的工作。从左到右,圆的边缘变得模糊,这将对输出结果产生不同的影响

总体上来看,巴特沃斯滤波器是介于理想滤波器和高斯滤波器之间的滤波器。

低通滤波器的结论

82c897d4a6c8559f0a68a6da5b890fde.png

图 (l): (从左到右) (1) 理想滤波器的输出 (2)巴特沃斯滤波器的输出

(3) D₀=50时高斯滤波器的输出

图(l)显示所有三个滤波器都是低通滤波器,因为输出图像保留了整个图像信息。此外,我们可以很容易地注意到高斯滤波器由于低失真比其他两个滤波器表现更好。理想滤波器产生大量波形噪声的原因是,理想滤波器的设计阻塞了距离原点一定半径以外的所有信息。因此,有些信息会在没有任何平滑的情况下急剧中断。相反,巴特沃斯滤波和高斯滤波是平滑的阻塞在距离原点一定半径之外的信息,这使得图像更平滑,失真更小。

高通滤波器的结论

abd3e267e6d2c08a93ab7e5e0ce121db.png

图 (m): (从左到右) (1) 理想滤波器的输出 (2)巴特沃斯滤波器的输出

(3) D₀=50时高斯滤波器的输出

毫无疑问,图(m)中的滤波器是高通滤波器,因为输出结果只捕获边缘。在滤波器中,高通滤波器结果的差异类似于低通滤波器结果。与巴特沃斯滤波器和高斯滤波器相比,理想滤波器的滤波结果有很多失真。

结束语

傅立叶变换是处理二维信息的有力工具。FT允许我们在另一个维度处理图像,这带来了更大的灵活性。在这篇文章中,我对使用傅立叶变换来处理图像这一基本步骤做了整理,希望你喜欢如果本文对小伙伴有所帮助,请帮忙点个再看哦!

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

6c4f61898a789159e1954b348399dc4e.png

fc68f8079eba78b19675dbb45f3451bd.png

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值