matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第1张图片

本文同步发表在我的微信公众号“计算摄影学”,欢迎扫码关注

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第2张图片

【转载请注明来源和作者】

今天这篇主要介绍傅里叶变换与图像的频域处理,并分析频域滤波和图像的空域滤波的关系。

一、傅里叶的趣事

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第3张图片


今天的主角是图上这位男子:让·巴普蒂斯特·约瑟夫·傅立叶。 这位男子面相呆萌,但却是教过书、打过仗、当过官、搞过科研。
傅里叶小时候父母双亡,但他却机缘巧合接受了较好的教育,二十多岁毕业后当了一名数学老师,后来竟然受聘于巴黎综合理工学院,后来甚至接替了拉格朗日的工作。在法国大革命期间,他参加了一些政治行动,并且表现得比较引人注目,这差点让他上了断头台。1798年他陪同拿破仑远征埃及并担任科学顾问,在此期间他还负责军火的供应。在从埃及回国后,拿破仑任命他为伊泽尔省诺布尔的地方长官,负责公路的建设与其他项目。而那时候他刚刚重新获得巴黎理工学院的教授职位。他在地方官期间也没有停止科研工作,正是在那里他开始进行了热传播的实验。1807年12月21日,他向巴黎科学院提交了关于固体中热量传播的论文<固体中的热传导>。论文审查委员会对此表示了怀疑,部分原因是其证据不够严谨。有趣的是,当时的审查委员会成员们都是超级大牛:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第4张图片
  • Malus - 发现了光的偏振
  • Lagrange - 度量衡米制的改革
  • Legendre - 最小二乘法
  • Laplace - 天体力学


他们和傅里叶一起都是艾弗尔铁塔上刻着的72位名人中的几位。

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第5张图片


由于论文审查委员会的强烈反对,傅里叶在1807年提出的这篇论文从未发表,在多次尝试失败后,1822年傅里叶将这个理论写进了他的著作《热的解析理论》中, 其中有一个重要的纯数学的贡献,即:Any univariate function can be rewritten as a weighted sum of sines and cosines of different frequencies任何单变量函数都可以写成一系列正弦函数和余弦函数的加权和。
这个就是著名的傅里叶级数。

二、傅里叶级数


傅里叶级数是否在任意情况下都成立? 其实当初拉格朗日等人的反对是有道理的,傅里叶的数学证明确实不够完善,并不是每个单变量函数都满足其声明。事实上仅当单变量函数满足下面的“狄里赫莱条件”时傅里叶级数声明成立。当然即便是这样,当时也是一个令人震惊的成果。

  • 狄里赫莱条件
    • 在一个周期内信号必须绝对可积(能量有限);
    • 在一个周期内函数只能有有限个极大值和极小值;
    • 函数在任意有限区间内只有有限个不连续点且在不连续点上函数值有限。


傅里叶级数的基本构成是:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第6张图片


它说明,当累积足够多属性不同的基本构成模块后就可以构成任意的周期信号。
先看看两个一维信号的和是什么样子:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第7张图片


方波也能表示为多个sin函数的和:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第8张图片


可以用傅里叶级数从空域和频域上表示方波,注意右下图就是该信号在频域上的表达, 下一节我们仔细谈谈图像的频域和空域的关系

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第9张图片

三、图像的空域和频域


一维信号的频域表示通常只画出正半轴的情况,其中横坐标为0时表示的是频率为0,即直流信号,如下图所示:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第10张图片


对于二维信号,其频谱的表示如下,其中

  • 高频部分代表细节、边缘和噪声
  • 低频占据绝大多少能 量,其中直流分量 (零频)能量占比最 大。
  • 频率分布具有中心对 称性。

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第11张图片


这样就可以来看看一些基本二维图像的频谱了:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第12张图片

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第13张图片

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第14张图片

四、傅里叶变换


任意信号,包括非周期信号都可以用傅里叶变换转到频域:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第15张图片


进而,用欧拉公式来转换为一系列正弦和余弦的加权和:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第16张图片


信号的傅里叶变换有很多有用的性质

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第17张图片


这样很容易画出信号的频域表达:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第18张图片


同样,非周期性的二维图像也可以表达为频谱形式:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第19张图片


有趣的是,图像的相位信息非常重要。当你对比猎豹的相位融合斑马的幅度再转换到空域,以及猎豹的幅度融合斑马的相位再转换到空域时,图像分别是下面的左图和右图。

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第20张图片

五、图像的频域滤波


两个信号的乘积的傅里叶变换,等于它们各自的傅里叶变换的乘积。而在频域中两信号的成绩的反傅里叶变换等于它们各自的反傅里叶变换相卷积。
因此,可以通过在频域进行滤波,处理特定的频谱信号,再反傅里叶变换到空域来完成图像的滤波

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第21张图片


我们可以用此原理来分析高斯滤波和box滤波的效果为什么会有较大的区别:高斯滤波结果相对更加平滑,而boxFilter似乎有更多边缘和细节效应。

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第22张图片


我们分别来看看它们在频域上是如何滤波的. 可以看到高斯滤波的滤波核频谱很集中,是一个很典型的低通滤波器。所以其结果图像的频谱也主要集中在频谱图的中心部分。

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第23张图片


再来看看box滤波,很明显,它的滤波核的频谱相比高斯滤波核的频谱有更多的高频信息,所以其滤波后的结果也包含更多的高频信息。 这也是为什么其滤波结果不够光滑,有更多条纹状的效应。

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第24张图片


人们已经在傅里叶光学这个领域中证明,理想的薄透镜可以实现光学傅里叶变换。镜头其实也是一个滤波器,而其物理上的滤波核就是其光圈。因此为了使得滤波结果尽量的平滑,不杂乱,光圈越圆越好。

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第25张图片


以下还有一些频域滤波的示例:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第26张图片

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第27张图片

六、奈奎斯特采样定律


让我们重新看看第五章里面提到的奈奎斯特采样定律:
如果对一个连续信号进行采样,然后想要用采样之后的信号来恢复出原有信号的完整信息,那么采样率必须大于等于Nyquist Rate,而这个Rate是此连续信号中最高频分量频率的两倍。
以下摘引Wikipedia原文:

In signal processing, the Nyquist rate, named after Harry Nyquist, is twice the bandwidth of a bandlimited function or a bandlimited channel.
When it is relate to sampling:
It is a lower bound for the sample rate for alias-free signal sampling(not to be confused with the Nyquist frequency, which is half the sampling rate of a discrete-time system).
这也解释了为什么我们在构建图像金字塔时要先高斯模糊,再下采样了。每一次高斯模糊,都是在去除图像中的高频分量,这样图像的最大频率就会降低,于是就会满足采样频率fs > Nyquist Rate的要求,也就使得采样后的图像没有缺陷。

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第28张图片

七. 总结


在很多领域信号的傅里叶变换和频域处理都有广泛的应用,今天这篇文章主要介绍了图像的傅里叶变换、频域图像处理基础。下面是大纲:

matlab 二维高斯滤波 傅里叶_6. 傅里叶变换与图像的频域处理_第29张图片


我在如下的Jupyter Notebook中展示了本帖中的相关操作,你可以对着它获取更深入的理解,也能够进一步掌握用Python来进行图像处理的一些技巧。http://nbviewer.jupyter.org/github/yourwanghao/CMUComputationalPhotography/blob/master/class6/notebook6.ipynb
跟这一系列专题文章相关的Notebook可以从https://github.com/yourwanghao/CMUComputationalPhotography.git获取

参考资料:


这一篇文章的绝大部分素材来自于
[1] CMU 2017 Fall Computational Photography Course 15-463, Lecture 6
我也会参考下面的重要资料中的内容,尤其是其中傅里叶变换的性质和常见信号的傅里叶变换图像来自于此
[2] Richard Szeliski, Computer Vision : Algorithms and Applications, Section 3.4

其他相关我觉得比较好的书籍:

你可能感兴趣的:(matlab,二维高斯滤波,傅里叶,matlab图像频谱分析代码,图像处理傅里叶变换matlab)