图像处理(4)-傅立叶变换
7. 傅里叶变换
7.1 理解傅里叶分析(摘自知乎专栏)
以下内容摘自作者韩昊发在知乎上的傅里叶分析之掐死教程
知乎:Heinrich
微博:@花生油工人
7.1.1 什么是频域
从我们出生,我们看到的世界都以时间贯穿,世间唯一不变的就是万事万物都在变化,而且都是在时间轴上发生变化。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。我们当然也会认为万物都在随时间不停的改变而且永远不会停下来,但是当我们用另外一种方法来观察世界的话,我们会发现世界也许是永恒不变的,这个静止的世界就是频域。这个想法在乐谱上可以很好的体现出来,我们对音乐的普遍理解就是乐器随着时间变化的震动,如下图所示:
但是对于一个乐手来说,音乐更直观的理解是:
在时域上我们观察到琴弦的震动,而在频域这一串震动就只是一个永恒的音符。
你眼中看似落叶纷飞变幻无常的世界,实际上只是躺在上帝怀中一份早已谱好的乐章。
傅里叶告诉我们,任何周期函数都可以看作是不同振幅,不同相位正弦波的叠加。而贯穿时域和频域的方法之一就是傅里叶分析。傅里叶分析可以分为傅里叶级数(Fourier Series)和傅里叶变换(Fourier Transformation)
7.1.2 傅里叶级数(Fourier Series)的频谱
如果说可以用正弦曲线叠加出一个带90°角的矩形波,你可能不会相信,不过我们来看下面的示例:
作者:Heinrich
微博:@花生油工人
第一幅图是一个郁闷的正弦波
第二幅图是两个卖萌的正弦波的叠加
第三幅图是四个发春的正弦波的叠加
随着正弦波数量逐渐的增长,他们最终会叠加成一个标准的矩形。
随着叠加的递增,所有正弦波中上升的部分逐渐让原本缓慢增加的曲线不断变陡,而所有正弦波中下降的部分又抵消了上升到最高处时继续上升的部分,使其变为水平线,一个矩形就这么叠加而成了。但是需要多少个正弦波叠加呢,答案是无穷多个。
不仅仅是矩形,你能想到的任何波形都是可以使用这个方法用正弦波来叠加出来,接受了这个设定,那就可以继续看后面的了。
还是上图的正弦波累加成矩形波,我们换个角度来看:
在这几幅图中,最前面黑色的线就是所有正弦波叠加而成的总和,也就是越来越接近矩形波的图形。而后面依不同颜色排列而成的正弦波就是组合为矩形波的各个分量。
在这里如果我们把第一个频率最低的分量看作
对于我们最常见的有理数轴,1就是有理数轴的基本单元。
时域的基本单元就是1秒,如果我们将一个角频率为
有了1那还要有0才能构成完整的世界,在频域中的0是什么呢?
我们回忆一下初中时老师是怎么定义正弦波的:
正弦波就是一个圆周运动在一条直线上的投影,所以频域的基本单元也可以理解为一个始终在旋转的圆:
介绍完了频域的基本组成单元,我们就可以看一看一个矩形波,在频域里的另一个模样了:
这就是矩形波在频域的样子,其实频域图像就是在侧面去看累加正弦波的图片,再清楚一点:
可以发现,在频谱中,偶数项的振幅都是0,也就对应了图中的彩色直线。振幅为0的正弦波。
在之后我们会去了解相位谱,但是在讲相位谱之前,我们先回顾一下刚刚这个例子意味着什么。前面我们说的那句世界是静止的,想象一下,世界上每一个看似混乱的表象,实际都是一条时间轴上不规则的曲线,但实际这些曲线都是由这些无穷无尽的正弦波组成。我们看似不规律的事情反而是规律的正弦波在时域上的投影,而正弦波又是一个旋转的圆在直线上的投影,到这里,你的脑海中有一个什么画面呢?
我们眼中的世界就像皮影戏的幕布,幕布后面有无数的齿轮,大齿轮带动小齿轮,小齿轮再带动更小的。在最外面的小齿轮上有一个小人,那就是我们自己。我们只看到这个小人毫无规律的在幕布前表演,却无法预测他下一步会去哪。而幕布后面的齿轮却永远一直那样不停的旋转,永不停歇。
7.1.3 傅里叶级数(Fourier Series)的相位谱
- 上一部分的关键词是:从侧面看。这一部分我们的关键词是:从下面看
在这一部分作者先回答了一个问题,傅里叶分析究竟是干什么用的?
先说一个最直接的用途。无论听广播还是看电视,我们一定对一个词不陌生--频道。频道那就是频率的通道,不同的频道就是将不同的频率作为一个通道来进行信息传输。我们来尝试一件事情:
先在纸上画一个
那接下来再画一个
但是在频域呢?那就很简单了,无非是几条竖线而已。
所以在很多时域中看似不可能做到的数学操作,在频域相反很容易。这就是需要傅里叶变换的地方。尤其是从某条曲线中去除一些特定的频率成分,这在工程上称为滤波,是信号处理最重要的概念之一,只有在频域才能轻松做到。
再说一个更重要的地方但是稍微复杂一点--求解微分方程
微分方程重要性就不多强调了,但是求解微分方程却是一件相当麻烦的事情。因为除了要计算加减乘除还要计算微分积分。而傅里叶变换则可以让微分和积分在频域中变为乘法和除法,大学数学瞬间变小学算术。
下面我们继续说相位谱:
通过时域到频域的变换,我们得到了一个从侧面看的频谱,但是这个频谱并没有包含时域中全部的信息。因为频谱只代表每一个对应的正弦波的振幅是多少,而没有提到相位。基础的正弦波
鉴于正弦波是周期的,我们需要设定一个用来标记正弦波位置的东西。在图中就是那些小红点。小红点是距离频率轴最近的波峰,而这个波峰所处的位置离频率周有多远呢?为了看的更清楚,我们将红色的点投影到下平面,投影点我们用粉色点来表示。当然,这些粉色的点只标注了波峰距离频率轴的距离,并不是相位。
这里需要纠正一个概念:时间差并不是相位差。如果将全部周期看作
在完整的立体图中,我们将投影得到的时间差依次除以所在频率的周期,就得到了最下面的相位谱。所以,频谱总是侧面看,相位谱是从下面看。
注意到,相位谱中的相位除了0,就是
最后来一张大集合:
7.1.4 傅里叶变换(Fourier Transformation)
通过前面的三个小结,大家对频域以及傅里叶级数都有了一个全新的认识。但是开始时关于琴谱的例子其实是公式错误但是概念典型的例子。所谓的公式错误在哪里呢?
傅里叶级数的本质是将一个周期的信号分解成无限多分开的(离散的)正弦波,但是宇宙似乎并不是周期的。在这个世界上,有的事情一期一会,永不再来,并且时间始终不曾停息地将我们的记忆连续地标记在时间点上。但是这些事情往往又成为了我们格外宝贵的回忆,而平淡的回忆则逐渐被我们忘却。因为,往昔是一个连续的非周期信号,而回忆是一个周期离散信号。
是否有一种数学工具将连续非周期信号变换为周期离散信号呢?真的没有=。=
比如傅里叶级数,在时域是一个周期且连续的函数,而在频域是一个非周期离散的函数。而在我们接下来要讲的傅里叶变换,则是将一个时域非周期的连续信号,转换为一个在频域非周期的连续信号。如下图:
或者我们换一个角度解释:傅里叶变换实际上是对一个周期无限大的函数进行傅里叶变换。
所以说钢琴谱其实并非一个连续的频谱,而是在很多时间上离散的频率,因此傅里叶变换在频域上就从离散谱变成了连续谱,那么连续谱是什么样子呢?
为了方便对比,这次从另一个角度来看频谱,还是傅里叶级数中用到最多的那幅图,我们从频率较高的方向看。
以上是离散谱,那么连续谱是什么样的呢?
通过这两幅图去比较,大家应该可以理解如何从离散谱变成连续谱了吧?原来离散谱的叠加,变成了连续谱的累积。所以在计算上也从求和符号变成了积分符号。到了这里傅里叶变化还没有讲完,再继续之前要引入一个数学工具:欧拉公式。
7.1.5 欧拉公式
虚数
这里有一条数轴,在数轴上有一个红色的线段,它的长度是1,当他乘以3的时候,它的长度发生了变化,变成了蓝色的线段,而当它乘以-1时,就变成了绿色的线段,或者说线段在数轴上围绕原点旋转了180°。
我们知道乘以-1就是乘以两次
这样,我们获得了一个垂直的虚数轴。实数轴与虚数轴共同构成了一个复数的平面,也称复平面。这样我们就了解到,乘虚数
现在,我们就可以来看一下欧拉公式了:
这个公式在数学领域的意义要远大于傅里叶分析,当
这个公式关键的作用,时将正弦波统一成了简单的指数形式。我们来看看图像上的含义:
欧拉公式所描绘的,是一个随着时间变化,在复平面上做圆周运动的点,随着时间的改变,在时间轴上就成了一条螺旋线。如果只看它的实数部分,也就是螺旋线在左侧的投影,就是一个最基础的余弦函数。而右侧的投影则是一个正弦函数。
7.1.6 指数形式的傅里叶变换
有了欧拉公式的帮助,我们便知道:正弦波的叠加,也可以理解为螺旋线的叠加在实数空间的投影。而螺旋线的叠加如果用一个形象的例子来理解是什么呢?
光波
高中时我们就学过,自然光是由不同颜色的光叠加而成的,而最著名的实验就是牛顿的三棱镜实验:
所以其实我们在很早就接触到了光的频谱,只是没有了解频谱更重要的意义。
但不同的是,傅里叶变换出来的频谱不仅仅是可见光这样频率范围有限的叠加,而是频率从0到无穷所有频率的组合。
这里我们可以用两种方式来理解正弦波:
第一种前面已经讲过了,就是螺旋线在实轴的投影。
另一种需要借助欧拉公式的另一种形式去理解:
将以上两式相加再除以2,得到:
这个式子怎么理解呢?
我们刚才讲过,
到这里傅里叶分析也就结束了,最后一张图来总结一下傅里叶变换: