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

2022 年 8 月 4 日 极市平台
↑ 点击 蓝字  关注极市平台

作者丨小白
来源丨小白学视觉
编辑丨极市平台

极市导读

 

本文将讨论在数字图像处理中,如何使用快速傅立叶变换,以及在Python中如何实现它。同时,作者还给出低通/高通滤波器的工作原理,以及多种滤波器形状的介绍。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

前言


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


数字图像现在已经成为我们日常生活的一部分。因此,数字图像处理变得越来越重要。如何提高图像的分辨率或降低图像的噪声一直是人们热门话题。傅立叶变换可以帮助我们解决这个问题。我们可以使用傅立叶变换将灰度像素模式的图像信息转换成频域并做进一步的处理。今天,我将讨论在数字图像处理中,如何使用快速傅立叶变换,以及在Python中如何实现它。操作流程如下 (从左到右):
图(b)
  1. 实现快速傅立叶变换,将灰度图像转换为频域
  2. 零频域部分的可视化与集中
  3. 应用低/高通滤波器过滤频率
  4. 离散
  5. 实现快速傅立叶逆变换生成图像数据
图 (c): (从左到右) (1)原始图像 (2) FFT 频谱的可视化输出 (3) 集中化 (4) 离散化 (5) 逆向FFT
与现实生活中的光波和声波不同,由于像素的不连续性,数字图像是离散的。这意味着我们应该实现离散傅立叶变换(DFT)而不是傅立叶变换。然而,离散傅立叶变换(DFT)常常太慢而不实用,这就是我选择快速傅立叶变换(FFT)进行数字图像处理的原因。
接下来让我们深入到每一部分,找出这些步骤背后的理论。

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

快速傅立叶变换(FFT)处理的结果是一个很难直接可视化的复数数组。因此,我们必须把它转换成二维空间。这里有两种方法可以可视化这个快速傅立叶变换(FFT)结果:1、频谱2、相位角
图 (d): (从左到右t) (1) 频谱 (2) 相位角
从图(d)(1)可以看出,四个角上有一些对称图案。这些图案可以在下一步中转换到图像的中心。
频谱图像中的白色区域显示出较高的频率。频谱图像中的角表示低频域。因此,结合以上两点,角上的白色区域表明:在低/零频域中存在高频率,这对于大多数图像来说是非常正常的情况。
另一方面,很难从图(d)(2)中识别出任何明显的图案,这并不代表快速傅立叶变换(FFT)的相位角完全没有用处,因为相位保留了图像所必需的形状特征。

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

二维快速傅立叶变换(FFT)具有平移和旋转特性,因此我们可以在不丢失任何信息的情况下移动频谱。我把零频域部分移到了频谱的中心,这使得频谱图像对人类更为可见。此外,这种转换可以帮助我们轻松实现高通/低通滤波器。
步骤3:与步骤2相反。将零频域部分移回原位置
步骤4:与步骤1相反。计算二维快速傅立叶逆变换。
步骤3和步骤4的过程是将频谱信息转换回灰度图像。它可以通过应用逆向移位和快速傅立叶变换(FFT)的逆运算来实现。

编码

在Python中,我们可以利用Numpy模块中的numpy.fft轻松实现快速傅立叶变换(FFT)运算操作。
在理解了傅立叶变换背后的基本理论之后,我们就可以研究如何控制频谱输出来处理图像了。首先,我们需要了解低/高通滤波器。

低通滤波器

图 (e)
低通滤波器是一种只允许低频谱通过的滤波器。图像中的低频谱意味着像素值变化缓慢。例如,图像中颜色变化较小的平滑区域(如新空白白纸的中心)被视为低频谱内容。
由于低通滤波器的输出只允许低频通过,对噪声等高频谱内容进行了阻塞,使得处理后的图像具有较少的噪声像素。因此,低通滤波器被广泛应用于图像的去噪。

高通滤波器

图(f)
相反,高通滤波器是只允许高频谱通过的滤波器。图像中的高频谱意味着像素值变化很大。例如,图像中颜色变化较大的边缘区域,如两张重叠的白纸和黑纸之间的边缘,被认为是高频谱内容。
在图像中,通过做适当的重复计算来锐化原图像,能用适当的重复计算来锐化原始图像的图像,从高通滤波器的输出可获得图像中的边缘。这将增强原始图像的清晰度,使边缘更加清晰。
从图e(5)和图f(5),我们可以注意到这两个滤波器呈现不同的特性。低通滤波器倾向于保留图像中的整体信息。另一方面,高通滤波器试图辨别出图像中的变化。
在了解了前一节中的低通/高通滤波器的工作原理后,让我们继续认识滤波器形状。

理想的滤波器

图(g): (从左到右)(1)使用D₀=50的低通滤波器 (2)使用D₀=50的高通滤波器
公式 (a): 在理想低通滤波器的公式中,D₀是合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离
在理想滤波器背后的概念非常简单:给定一个半径值D₀作为阈值,低通滤波器图(g)(1)在阈值下H(u,v)等于1,在阈值以上H(u,v)等于0。
公式(b): 在理想高通滤波器的公式中,D₀是合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离
相反,高通滤波器图(g)(2)在阈值下H(u,v)等于0,在阈值以上H(u,v)等于1。

巴特沃思(Btterworth)滤波器

图(h): (从左到右) (1) 使用n=20,D₀=50的Butterworth 低通滤波器(2) 使用n=20,D₀=50的Butterworth 高通滤波器
图 (i): (从左到右) (1)使用n=3的Butterworth 低通滤波器 (2)使用n=3的Butterworth高通滤波器
公式(c): 在Butterworth低通滤波器的公式中, D₀是一个合理常量, D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离
与理想滤波器不同的是,巴特沃斯滤波器没有明显的不连续性,使得通过的频率和被过滤的频率之间有明显的边界。巴特沃斯滤波器在函数中引入了一个新的参数n。当操作n时,它影响着通过的频率和被过滤的频率之间边界的清晰程度。具体可看图(h)和图(i)。
公式(d): 在Butterworth高通滤波器的公式中, D₀是一个合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离

高斯(Gaussian)滤波器

图 (j): (从左到右) (1) 使用D₀=50的高斯低通滤波器 (2) 使用D₀=50的高斯低通滤波器
公式 (e): 在高斯低通滤波器的公式中,D₀是一个合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离
与巴特沃斯滤波器相比,高斯滤波器产生的边界更平滑。通过的频谱和被过滤的频谱之间的边界非常模糊,这便可以更平滑的处理图像。
公式 (f): 在高斯高通滤波器的公式中,D₀是一个合理常量,D(u,v)是频域中一点(u,v)与频域矩形中心之间的距离

滤波器比较

图 (k): (从左到右) 理想滤波器, n=10的Butterworth滤波器和D₀=50 的高斯滤波器
我把所有不同的过滤器放在图(k)中,以总结我们在过滤器设计中所做的工作。从左到右,圆的边缘变得模糊,这将对输出结果产生不同的影响总体上来看,巴特沃斯滤波器是介于理想滤波器和高斯滤波器之间的滤波器。

低通滤波器的结论

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

高通滤波器的结论

图 (m): (从左到右) (1) 理想滤波器的输出 (2)巴特沃斯滤波器的输出(3) D₀=50时高斯滤波器的输出
毫无疑问,图(m)中的滤波器是高通滤波器,因为输出结果只捕获边缘。在滤波器中,高通滤波器结果的差异类似于低通滤波器结果。与巴特沃斯滤波器和高斯滤波器相比,理想滤波器的滤波结果有很多失真。

结束语

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


公众号后台回复“ECCV2022”获取论文分类资源下载~

△点击卡片关注极市平台,获取 最新CV干货

极市干货
算法项目: CV工业项目落地实战 目标检测算法上新!(年均分成5万)
实操教程 Pytorch - 弹性训练原理分析《CUDA C 编程指南》导读
极视角动态: 极视角作为重点项目入选「2022青岛十大资本青睐企业」榜单! 极视角发布EQP激励计划,招募优质算法团队展开多维度生态合作! 极市AI校园大使招募


点击阅读原文进入CV社区

收获更多技术干货


登录查看更多
0

相关内容

【硬核书】信号处理基础,677页pdf
专知会员服务
97+阅读 · 2022年9月6日
【干货书】数字图像处理算法介绍, 937页pdf
专知会员服务
109+阅读 · 2022年7月31日
《Julia数据科学》及代码,166页pdf
专知会员服务
47+阅读 · 2021年11月4日
专知会员服务
35+阅读 · 2021年2月20日
【干货书】机器学习特征工程,217页pdf
专知会员服务
122+阅读 · 2021年2月6日
【干货书】图形学基础,427页pdf
专知会员服务
145+阅读 · 2020年7月12日
基于OpenCV的图像阴影去除
极市平台
1+阅读 · 2022年2月27日
计算机视觉中的传统特征提取方法总结
极市平台
1+阅读 · 2021年12月9日
实践教程|基于OpenCV提取特定区域方法汇总
极市平台
1+阅读 · 2021年12月5日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
实战 | 用Python做图像处理(一)
七月在线实验室
25+阅读 · 2018年5月23日
一文看懂常用特征工程方法
AI研习社
17+阅读 · 2018年5月2日
一文读懂图像压缩算法
七月在线实验室
16+阅读 · 2018年5月2日
如何设计基于深度学习的图像压缩算法
论智
41+阅读 · 2018年4月26日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
已删除
Arxiv
32+阅读 · 2020年3月23日
Self-Attention Graph Pooling
Arxiv
13+阅读 · 2019年6月13日
VIP会员
相关VIP内容
【硬核书】信号处理基础,677页pdf
专知会员服务
97+阅读 · 2022年9月6日
【干货书】数字图像处理算法介绍, 937页pdf
专知会员服务
109+阅读 · 2022年7月31日
《Julia数据科学》及代码,166页pdf
专知会员服务
47+阅读 · 2021年11月4日
专知会员服务
35+阅读 · 2021年2月20日
【干货书】机器学习特征工程,217页pdf
专知会员服务
122+阅读 · 2021年2月6日
【干货书】图形学基础,427页pdf
专知会员服务
145+阅读 · 2020年7月12日
相关资讯
基于OpenCV的图像阴影去除
极市平台
1+阅读 · 2022年2月27日
计算机视觉中的传统特征提取方法总结
极市平台
1+阅读 · 2021年12月9日
实践教程|基于OpenCV提取特定区域方法汇总
极市平台
1+阅读 · 2021年12月5日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
实战 | 用Python做图像处理(一)
七月在线实验室
25+阅读 · 2018年5月23日
一文看懂常用特征工程方法
AI研习社
17+阅读 · 2018年5月2日
一文读懂图像压缩算法
七月在线实验室
16+阅读 · 2018年5月2日
如何设计基于深度学习的图像压缩算法
论智
41+阅读 · 2018年4月26日
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2014年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员