目录
1概述
2周期信号的频谱
2.1周期信号
2.2复数
2.3欧拉公式
2.4傅里叶级数
2.5幅值频谱
2.6相位频谱
2.7双边频谱
小结
3非周期信号的频谱
3.1非周期信号
3.2傅里叶变换
3.3频谱图
小结
4常用性质
4.1频移性
4.2卷积定理
5单位脉冲信号
特性
6周期函数的傅里叶变换
7周期单位脉冲信号
8采样与复原
8.1采样
8.2采样定理
8.3混频
8.4复原
8.5泄漏
9离散傅里叶变换(DFT)
10二维傅里叶变换
10.1性质
10.2频谱与相角
频谱
相角
10.3二维离散卷积定理
10.4 DFT的卷积混叠
结语
参考文章
法国数学家 Jean Baptiste Joseph Fourier(吉恩.巴普提斯.约瑟夫.傅里叶)在1807年发表的传记和1822年出版的《热分析理论》一书中指出:无论函数多么复杂,只要它是周期的,并且满足某些适度的条件,都可以表示为不同频率的正弦和(或)余弦函数之和的形式,每个正弦和(或)余弦函数都乘以不同的系数(现称之为傅里叶级数)。
如图1所示,多个正余弦信号叠加,即可得到方波信号,而通过傅里叶级数即可逆向将方波信号分解为多个正余弦信号之和。
甚至是非周期函数(曲线下的面积有限)也可以用正弦和(或)余弦函数乘以加权函数的积分来表示(傅里叶变换)。用傅里叶级数或变换表示的函数特征完全可以通过傅里叶反变换来重建,且不会丢失任何信息。
周期信号是按一定时间间隔周而复始,无始无终的信号,其数学表达式为:
式中,T 表示周期。
周期信号可进一步分为简单周期信号,即正余弦信号(也称为简谐信号或谐波),和复杂周期信号,如方波。两者最大的不同在于频率结构上分别为单频和多频。
如图2.1.1即为一个f=400MHz的正弦波,其表示为做圆周运动的点在直线上的投影。
常见的周期信号是正余弦信号,两者可以相互转化。其中正弦信号的数学表达式为:
由于正余弦信号只含有一个频率成分 ,从这点看,上式不仅是其时域描述也是其频域描述,无需进行变换,可时域与频域是合二为一的,因此适合将其做为合成其他任意信号的基本信号。而对于复杂周期信号,由于其是多频结构,无法直接观察其频率构成,故需要先将其转换为多个不同频率的正余弦信号之和,而这个工具就是“傅里叶级数”。
【注】:信号不仅能分解为正余弦信号,也可以分解为其他信号,如幂级数展开、泰勒展开,但在工程应用中为了简化问题的需要,故将其分解为正余弦信号。
复数C的定义如下:
其中,R 和 I 皆为实数,分别表示复数C的实部(Real part)和虚部(Imaginary part),而 则表示等于 -1 平方根的虚数,即 ,复数C的共轭复数 表示为
从几何角度来看,复数可视为复平面上的一个点,横坐标为实轴(R的值),纵坐标为虚轴(I 的值),即点 。同时,在极坐标下,复数C可表示为:
同时,由欧拉公式可得:
其中 是复平面的原点到点 的向量的长度, 是该向量与实轴的夹角,以图2.2.1和图2.2.2为例,分别表示 时和 时复数 C 在复平面上的点。
图2.2.1 |C|=1时,复平面表示 图2.2.2 |C|=a时,复平面上的点
注意:计算 时,因为 arctan函数 的值域为 ,且 R 和 I 可独立地为正或负,因此需要追踪 R 和 I 的符号来进行计算,得到全域 的解,如在python中,可通过调用函数:atan2(Imag, Real) 来实现。例如,复数 得极坐标是 ,其中 。
import math c1 = 1 + 1j # 定义复数 1+1j c2 = c1.conjugate(c1) # 得到复数c1的共轭复数 1-1j c3 = -c1 # 得到复数c1的相反数 -1-1j math.degrees(math.atan2(c1.imag, c1.real)) # atan2函数的返回值为弧度,转为角度后为45.0度 math.degrees(math.atan2(c3.imag, c3.real)) # -135.0
以上公式还可应用于复函数,如变量 的复函数 可以表示为 ,共轭复函数 ,幅值 ,角度 。
欧拉公式所描绘的,是一个随着时间变化,在复平面上做圆周运动的点,随着时间的改变,在时间轴上就成了一条螺旋线。如果只看它的实数部分,也就是螺旋线在左侧的投影,就是一个最基础的余弦函数。而右侧的投影则是一个正弦函数。如图2.3所示。
【推导】(准确说是验证):
先对如下三个函数进行幂级数展开:
将 带入上式可得:
即可推广至出欧拉公式的一般形式
一个周期为T的信号,如果满足狄里赫利条件,即在一个周期内:
则此信号 可以展开为傅里叶级数,其有三个等价公式:
(1-1)
式(1-2)主要用于作频谱图,由式(1-1)中的正、余弦项合并而成,其中:,。
式(1-3)主要用于数学推导,由式(1-1)结合欧拉公式得到,其中:。
是一个常数,不随时间变化的静态量(或称直流分量)。当 n=1 时,所对应的正、余弦项称为基波,频率 称为基频,其次依次为二次谐波(n=2,频率为 2),三次谐波,...,n次谐波(频率为 ),也就是说:频域轴的基本单位就是 。
【注意】:在作幅值频谱图和相位频谱图时,式(1-2)和(1-3)皆以 为横坐标,不过在幅值频谱图中,式(1-2)中以 为纵坐标,式(1-3)则以 为纵坐标。在相位频谱图中,式(1-2)以 为纵坐标 。
如图2.4.1所示,橙色圆表示 的正弦波形,绿色圆表示 的正弦波,蓝色圆表示 的正弦波形,红色圆表示 的正弦波形。将橙色圆与绿色圆相叠加,即 ,即可组成右侧的绿色的波形,将这四个正弦波全部叠加,即 ,即可组成右下角的红色波形,已越来越接近方波了,其实依此规律继续叠加,最终将得到周期方波的图像。
如图2.4.2所示,最前面(左边)的黑色的近似矩形的线,就是后面各种颜色波形的叠加状态,而后面依不同颜色排列而成的正弦波就是组合为矩形波的各个分量。这些正弦波按照频率从低到高从前向后排列开来,不同颜色则代表着不同振幅、频率及相位的不同波形。当然,上图每两个正弦波之间都还有一条直线,这代表着振幅为 0 的正弦波,也就是说,为了组成特殊的曲线,有些正弦波成分是不需要的。
注意:振幅为0的正弦波不一定存在,根据实际波形而定,如周期方波的仅包含奇数次正弦波,偶数次正弦波和余弦波皆为0。
注意:静态量 可以理解为频率为0时的波,其是一个常数,在图中也就是一条直线,所以也称为直流分量,其仅仅影响全部波形相对于数轴整体向上或是向下但不改变波的形状
定量地看,式(1-2)中的两个随整数 n 变化的函数序列 和 分别代表各次谐波分量的幅值和初相角,当谐波频率 作离散变化时, 和 都有确定的值与之相对应,这两个对应关系分别称为 “幅值频谱” 和 “相位频谱”,共同来反应周期信号的频率结构。
以下图为例,幅值频谱即为从该图像的侧面看过去,不同颜色的正弦波所投影到侧边平面上的图像。其中波形的频率即对应幅值频谱的横轴,波形的幅值对应了幅值频谱图的纵轴。
投影后的幅值频谱图如下图所示:
幅值频谱投影到了侧面,而相位谱即为波形在下方的投影,但此处为间接投影。
如下图所示,对于正弦分量来说,小红点(一个周期内,导数>0的曲线与横坐标的交点)与纵坐标的距离即为正弦信号所移动的时间差,记为 ,而 即为相位。故波形在下侧的投影并不能直接表示为相位频谱,还需要对其时间差进行转换,得到相位值,进而得到相位频谱。同理,对于余弦分量来说,小红点(一个周期内,距离频率轴最近的波峰)在横坐标上的投影点用橘黄色点表示,其与纵坐标的距离即为余弦分量所移动的时间差,进而再转换为相位。
除了根据式(1-2)来描绘频谱图外,还可以使用式复数指数函数(1-3)来进行描述。但根据欧拉公式,三角式中的的一项对应到指数式中就变为了两项,多了一个频率为 的分量,但同时因为 ,故幅度值也会减为原来的一半。即图像变为了以纵轴对称的形式。以某一正弦分量为例:
对上式作频谱图,如图2.7.1所示,左边按三角式 所作的称为单变频谱,右边按指数式 所作的称为双边频谱。
【注意】:两个频谱在理论上是等效的,只不过双边频谱中的 “负频率” 在实际工程中并不存在,近视数学处理的结果。
【实例】:如图2.7.2所示,求周期方波的傅里叶级数及其频谱图
解:(1) 一个周期内,波形在横轴上下所围成的面积相等,故
(2) 是奇函数,是偶函数,所以 为奇函数(奇函数在一个对称区间内的积分值为零),因此
(3) 故此周期方波信号仅有正弦分量构成,其各次正弦波的幅值:
(4) 故最终此周期方波信号的傅里叶级数如下,不含静态分量,仅含奇次谐波。
作其频谱图如图2.7.3所示:
多个正余弦信号叠加,如果任意两个分量的频率之比不是有理数(或没有公倍数),那么合成的信号就不是周期信号
该信号即为一种非周期信号,但其频谱图仍然是离散的,保持着部分周期信号的特点,故称这种信号为 “准周期信号”。
【注】:在工程领域,多个独立的振动源共同作用所引起的振动往往属于这类信号。
在非周期信号中,除了准周期信号,还有瞬变信号,且通常非周期信号就是指瞬变信号,如下图所示,皆为常见的非周期信号,其中,(a)为矩形脉冲信号,(b)为指数衰减信号,(c)为截断的余弦信号,(d)为单脉冲信号。
非周期信号不能直接通过傅里叶级数来进行分解,但可通过其概念的引申来加以解决,即把非周期信号仍视为周期信号,只是认为其周期极大,在无限远处重复。在周期信号的频谱图中,其频率间隔 ,此时,因周期 则使得 即 ,这就意味着随着周期的无限扩大,其频率间隔变为了一个微量 ,也就是说其频率间隔无限缩小,以致于离散的频谱变为了一条连续的曲线。即非周期信号可分解为无限多个频率极其接近的正余弦分量的合成。
傅里叶变换的复指数公式(也称为傅里叶变换对)如下:
(1-4)
如图3.2.1所示,傅里叶级数的分析图为无限的离散量:
如图3.2.2所示,傅里叶变换的分析图为无限的连续量:
【推导】:
根据周期信号式(1-3)的复指数表达式:
当周期信号向非周期信号转变时,即 ,此式有两个变化:
这样 与 之间就建立起了确定的对应关系,称为 “傅里叶变换对”,表示为:。其中 为傅里叶(正)变换, 称为傅里叶逆变换,也称为傅里叶积分。由于傅里叶变换对中出现了常数项 在运算中造成不便,故,采用 来代替 ,消除了 ,即可得到最终的式(1-4)、(1-5)的傅里叶变换对。
其三角表达式如下,不同于周期信号的离散和,非周期为连续和。
通常 是复变函数,可以写为:,也可表示为:,则
(1-6)
其中, 和 分别称为非周期信号的实频谱和虚频谱。 称为非周期信号的 幅值密度频谱 或 幅值谱密度,也可简称为幅值频谱, 称为非周期信号的相位频谱。
【注意】:“幅值密度” 与 “幅值” 的概念是不同的。
对比傅里叶级数与傅里叶积分的表达式:
可以看出,非周期信号的 与周期信号的 相对应,因为 代表周期信号中各谐波的幅值,故 也应代表非周期信号中各谐波的幅值。然而,因为 是一个无穷小量,故 也为无穷小量,这就意味着非周期信号中所含各谐波分量的幅值均趋于0。
从能量的角度考虑,由于具有无穷多个频率分量,所以每个频率分量的能量,即幅值也就减为了无穷小量,但是,信号的能量不会因信号的分解而消失为0,可以肯定的是,信号的能量分布肯定存在,虽然每个分量为无穷小量,但在不同频率的分量上,幅值的分布仍将不同。因此,作非周期信号的频谱图不能直接照搬周期信号的方法(直接用谐波分量的幅值来表示),而需要作进一步的分析以寻找合适的量。
故此处对 除以 ,将 与 分离,使其不再是无穷小量,由于 在概念上为频率宽度(频宽),所以 就是非周期信号在单位频宽上的幅值,也就是说,其代表了非周期信号中谐波的幅值密度与频率的对应关系。
如下图所示的幅值密度频谱(简称幅值频谱),频率 处的谐波幅值 为无穷小,而单位频宽上的幅值 可视为 ,其值不再为无穷小。
【例】:
1、如图3.3.2(a) 所示,求单边指数脉冲的频谱
解:该非周期信号的频谱函数为:
2、如图3.3.3(a) 所示,求单个矩形脉冲(矩形窗函数)的频谱
解:该矩形脉冲频谱函数为:(波形图如图3.3.3(d)所示)
其幅值频谱(如图3.3.3(b)所示):
时域信号乘以虚指函数 (逆时针旋转 ),等效于频谱向左平移 (+)。该性质反过来就是时移性:频域信号乘以虚指函数 (相位谱逆时针旋转 ),等效于时域信号向右平移 (-)。简单说,就是时移性的符号是相同的,而频移性符号相反。
建立在频移性质上的频谱搬移技术在测试系统和通信系统中有着广泛的应用,如调幅、同步解调、变频等。实际中,频谱搬移是通过将时域信号 乘以物理上能够产生的 或 来实现的,其会将 的频谱 一分为二(幅值减半),然后向左向右各平移 。
【例】:
故:
同理可得:
其意义为,一个函数 关于纵轴翻转(180°)并滑过另一个函数 ,在滑动的过程中的每一个时刻 处执行计算(曲线 下的面积 )。式中,负号表示“翻转”, 是一个函数滑过另一个函数的位移, 是积分假变量。
很多情况下,卷积积分在时域中的积分方法计算较为困难,则可利用傅里叶变换将其转换到频域中去求解,再将结果经过傅里叶反变换复原即可。卷积定理如下:
【推导】:
方括号中的蓝色部分为 的傅里叶变换,而根据时移性:
上式:
是具有现实意义的,如,两个物体相碰撞,其碰撞时间很短,冲量有限,设冲击力为 。其具有以下性质:
由此可见, 是冲击力以及其他具有相同性质的物理现象的抽象。
周期信号不能直接进行傅里叶变换,但是在引入脉冲信号 并认为其具有意义的情况下,周期信号则可进行傅里叶变换。其计算过程如下:
(1)根据傅里叶级数式(1-3),计算周期信号 的傅里叶展开:
(2)对其展开式进行傅里叶变换:
【例】:正余弦信号的傅里叶变换:
同理可得正弦函数:
如图7.2 所示, 仍是一个周期脉冲
如图8.1.1所示,在计算机处理之前,输入的连续信号必须先通过采样和量化转换为离散的值序列,再经过编码,形成计算机所能处理的数字信号。
采样:将输入的随时间变化的模拟量离散化,形成时间域上断续的模拟量。
量化:将时间域上断续的模拟量进行离散化,使其在幅度上也离散。
编码:将量化后的信号幅值变为对应的二进制码。
此处,主要关注采样,如图8.1.2所示,对于一个连续函数 ,其自变量 从 扩展到 ,若我们希望以均匀间隔 来进行采样,其模拟采样的一种方法是,用一个周期为 单位脉冲作为采样函数来乘以 来进行采样,采样后的函数表示为 ,即:
可以看出,式中每个成分都是由该脉冲位置处 的值加权后的脉冲,故每个采样值由加权后的脉冲“强度”给出,也就是说,任意采样值 为:
采样后函数 的傅里叶变换:
(卷积定理)
( 关于轴对称)
如下图所示,假设某一连续信号采样后的函数 的傅里叶变换 是 的一个副本的无限的、周期的序列。副本的间隔由 决定, 越大,即 越小,副本的间距越大。
带限函数:对于以原点为中心的有限区间(带宽) 之外的频率值,其傅里叶变换 为 0 的函数 ,也意味着 必须从 扩展到 ,(从 扩展到 的函数不一定是带限函数)。
如果能从 中包含的这个函数的副本周期序列中分离出 的一个副本,就可以从采样后的函数中复原 ,这个复原的前提是副本之间的间距足够大。 如上图x所示,(b)为过采样,其副本之间拥有足够的间距,可用来进行副本分离,(c)为临界采样,副本之间紧挨(间距为0),“恰好” 可以分离出副本(实际中,由于其他原因临界采样依旧会混频),而(d)为欠采样,副本已发生了混频,不可能分离出副本。
故,对于 ,我们需要其:
即,如果以超过原函数的最高频率的2倍的采样频率来进行采样,则可以从采样后的函数中复原原函数,也就是说,采样样函数 的采样周期 必须足够小,以至于其采样频率 足够大,超过 。
奈奎斯特采样率:完全等于最高频率的2倍的采样率,即临界采样。
如图8.3.1 (d)所示,当欠采样时,副本之间相互“堆叠”,无论使用何种滤波器,都不能可再复原出原始信号,由函数欠采样导致的这种效果,就称为“混频”。实践中,可通过对输入函数进行平滑滤波减少其高频成分来降低混频的影响(如直接采用低通滤波器去掉 的频谱部分),然后再进行采样,但频域发生了改变,时域也无法恢复其原始信号。
以下图为例,两个方向无限扩展的正弦信号,其属于带限函数。由于过低的采样率,采样后的函数最然看上去像正弦波,但频率已变为原始信号的 。
如下图8.4.1所示,从理论角度阐释了如何从 中复原 ,(a)为一个以略高于奈奎斯特采样率采样后的函数的傅里叶变换,(b)中(理想)低通滤波器 由下式定义:
当使用 乘以 时,就分离出了以原点为中心的那个副本,即图8.4.1(c),而得到了 之后即可通过傅里叶反变换来复原 。公式如下:
上式表明,理想的复原函数 是用采样值加权 函数的无限和。
对于任何 ( 为整数), 中,当 时,,而对于其他 值(),( (整数)=0 ),故在样本点处, 等于第 个样本 。
而对于其他 值(不在样本点处的 ,如 ),即样本点之间的 值是由 函数与 函数乘积的无限和形成的内插值。
【注意】:上式中样本间的内插值有无限多项,而实际中无法实现,即会选择一种有限个的近似方法(插值越密,越接近无限个,复原的函数也越趋于连续函数),如图像处理中主要使用最邻近法、双线性法、双三次内插法。
该(理想)低通滤波器是从采样后的函数来复原(重建)原始函数的重要手段,用于此目的的滤波器也称为 “重建滤波器”。
【注意】:理论上,该复原方法中的 必须为带限函数,即 的范围为 ,实际中这个条件无法满足。
实践中,我们不可能处理一个无限长的信号,必须限制信号的持续时间,假设把带限函数 的只需时间控制在 内,则可以让其乘以矩形窗函数 来实现:
如下图所示,余弦信号 的时域分布为无限长(带限函数),当用矩形窗函数 与其相乘后,得到截断信号 ,其频谱是两信号的卷积。对比 截断信号的频谱 与原始信号的频谱 可知,其频谱已发生了“畸变”,原来集中在 处的能量被分散到已 为中心的较宽的频带中去了,这种现像就称之为 “泄漏”。
用有限的长度来进行采样,泄漏将不可避免,其带来的频谱误差与使用的“窗函数”的宽度和形状有关,为降低泄漏误差,需要窗函数的频谱:
一般可采取如下措施:
【注意】:两者不可兼得,需根据实际需要进行调整。
在对连续信号进行傅里叶(正 / 逆)变换时,无论在时域还是频域都需要在无限区间 进行积分运算,而对于计算机而言,要实现该运算,必须先将连续的模拟信号变为离散信号,同时将计算范围收缩至有限区间。
其完整的实现过程如下图所示:
(1)采样(模拟信号离散化)
如下图所示,首先对一般连续信号 (实际中所处理的一般信号几乎不会是带限函数)进行离散化,得到采样信号 ,如图(c)所示,由于 的带宽不是有限的,故 的混频不可避免,只能尽量降低。其中,时域的采样周期为 (采样率 )。
(2)截断(将运算收缩至有限区间)
此时,连续的信号已经变为了离散的信号,但仍具有无限多个点,因此还需要对其时域进行截断。其截断长度为 ,取出有限的 个数据点,截断后的频谱 由于泄漏而出现了“畸形褶皱”。
(3)频域采样
此时,时域信号已离散为有限区间,但频域仍为连续的无限区间,故先对频谱进行离散化,即乘以频域周期脉冲信号 ,根据卷积定义,其对应时域做卷积运算。
频率采样间隔(谱线间隔) 是频率分辨力的指标,其与被采样信号的时间记录长度 的关系是: 。
【注意】: 选定后,要提高频率分辨力 ,就只能增加数据点数 ,但这样也会导致计算量增加,解决该问题一般可通过(1)处理过程中只提高感兴趣的局部频段上的频率分辨力(2)换用其他将时域变为频域的方法。
(4)频域截断
此时,时域和频域信号虽然都是离散信号,但都周期化了(变为了区间无限长的离散傅里叶变化对),故需再对其进行截断,即分别取一个周期上的 个时域采样值和 个频域采样值(如图9.4 所示),最终得到与原连续信号 及其傅里叶变换 相对应的有限离散傅里叶变换对,分别称为 离散傅里叶变换(DFT)和离散傅里叶逆变换(IDFT),定义如下:
卷积的离散表示为:
【注】:时域采样会使得频域周期化,频域采样也会使得时域周期化
【注意】:总的来说,由于采样和截断处理,一般信号经过离散傅里叶变换后得到的频谱只能是 “估计值”,其不仅存在着 “混叠”、“泄漏”、“栅栏”等效应引起的误差,而且对于随机信号,它还存在用 “样本” 估计 “总体” 所必然存在的统计误差。
参数确定
离散傅里叶变换的基本参数有:
—— 采样时间间隔
—— 信号(或感兴趣)的最高频率
—— 频率分辨力
—— 截断的长度(信号记录长度)
—— 时域和频域的采样点数
【例】:已知某信号的最高频率 ,要求频率分辨力不大于 ,求采样时间间隔 ,信号记录长度 和采样点数 。
采样频率:
记录长度:
【注意】:由于计算机是以二进制储存数据,故 一般是 2 的整数次方,取 (个)
【注】:离散傅里叶变换(DFT)虽然解决了在计算机上实现傅里叶变换的问题,但由于巨大的计算量,仍不具备实用性,故在此基础上诞生了快速傅里叶变换(FFT)。
根据一维的离散傅里叶变换,可进一步引申出二维的傅里叶变换,令 表示一幅大小为 的图像,其中 , 表示其傅里叶变换(DFT),称为频率矩形,其中,公式如下:
(10-1)
给出 也可使用傅里叶反变换(IDFT)得到 :
两式构成了二维离散傅里叶变换对,明显可知,频率矩形 与输入图像 的大小相同(皆为 )。
【注】:默认空间域和频率域的原点都在左上角,且纵轴为 或 ,横轴为 或 。
【例】:如图10.1 所示,求该块函数的傅里叶变换
图10.1 原函数
则其频谱(如图10.2所示)为:
【注意】:平移再变换不等于变换再平移,即 。原理上是先平移再变换,而python的程序实现是先变换再平移。
二维DFT运算后通常是复数,故可使用极坐标形式来表示:
幅值频谱(频谱):
相位频谱(相角): (如2.2节所述,需要使用四象限反正切来计算)
【注】:在此阶段,、、 、 皆为 的矩形。(图像卷积需要变换尺寸)
根据对称性的推论,实函数的DFT是共轭对称的,表明:
频谱是关于原点对称的:
相角关于原点奇对称:
故: (10-2)
因为 (图像尺寸)通常很大,所以 是频谱的最大成分(远大于其他), 常称为“直流分量”。在显示图像时,由于低频处(尤其 )相比高频处拥有过高的值,故高频处灰度的动态范围被压缩了,为了显示时保留细节,故可对其进行图10.2.1所示的灰度变换(此处选择对数变换),将小值放大,大值缩小。
同时,结合图10.2.1 由周期性可知,4个角皆处于频谱波峰的重叠处,即具有相同的最大值:。同时,4个角区域所包含得也是相同较大值(低频部分),故中心化后,4个角区域的能量会集中到频谱的中心位置。
【证明】:
同理可证:
即:
在一幅图像DFT的频谱图中,较大的幅值意味着图像中该频率的正/余弦波比较突出(占据着信号的主要能量)。如图10.2.2所示,图(a) 为一幅空间域的8位灰度图像;图(b)为图(a)的频谱图,由于周期性,其原点及其他3个角包含了相同的最大值(图像中表现为高亮);图(c)为中心化后的频谱,能量被集中到了中心位置,频谱图像更易观察;图(d)为对频谱图(中心化之前)对数增强后的图像,采用的算法为: 。
import numpy as np
import cv2
from matplotlib import pyplot as plt
fimg = cv2.imread('rectangle.tif', 0) # 得到输入图像
Fimg = np.fft.fft2(fimg) # 计算DFT(一般为复数)
AFimg = np.abs(Fimg) # 得到频谱图
AFshift = np.abs(np.fft.fftshift(Fimg)) # 中心化后的频谱图
Simg = 1 + np.log(np.abs(AFshift)) # 图像增强
'''
ReFimg = np.real(Fimg) # 得到频谱的实部
ImFimg = np.imag(Fimg) # 得到频谱的虚部
phi = np.arctan2(ImFimg, ReFimg) # 计算反正切得到相角
'''
phi = np.angle(Fimg) # 内置相角计算
【注】:图像那里的幅度变化非常大呢?边界点或者噪声。所以我们说边界和噪声是图像中的高频分量(注意这里的高频是指变化非常快,而非出现的次数多)。如果没有如此大的幅度变化我们称之为低频分量。
【注】:实际中,计算机使用的是快速傅里叶变换(FFT)。
(1)平移图像的DFT
相角是各个正/余弦成分关于原点位移的度量。如图10.2.3所示,时域图像的平移对频谱没有影响,但会使相角旋转。图(a)为图x(a)的相角;图(b)为图x(a)中平移后的图像;图(c)平移后图像的频谱;图(d)平移后图像的相角。
import numpy as np
import cv2
from matplotlib import pyplot as plt
fimg1 = cv2.imread('rectangle.tif', 0) # 原图像
fimg = cv2.imread('translation.tif', 0) # 平移后的图像
Fimg1 = np.fft.fft2(fimg1) # 计算原图像的DFT
phi1 = np.angle(Fimg1) # 计算相角图
Fimg = np.fft.fft2(fimg) # 计算平移后图像的DFT
AFshift = np.abs(np.fft.fftshift(Fimg)) # 中心化后的频谱图
Simg = 1 + np.log(np.abs(AFshift)) # 对数增强
phi = np.angle(Fimg) # 得到相角图
(2)旋转图像的DFT
时域图像的旋转(如图10.2.4 所示旋转45°)会使频谱旋转相同的角度,相角也会旋转但小于45°。图(a)为图x(a)中旋转45°后的图像;图(b)旋转后图像的频谱;图(c)旋转后图像的相角。
【注】:频谱的成分决定了图像中的灰度,相角则携带较多关于图像中可辩别物体的定位信息。
卷积定理:
在DFT计算中,由于存在周期性,而且两个周期函数的卷积也是周期的,相邻周期的副本将会导致计算相互干扰,导致“混叠错误”。以下图两个函数为例,其一维离散卷积运算表达式为:
【注】:卷积是位移变量 的函数,因为 和 的区间都是400, 而卷积运算要求整个 完全滑过 ,故卷积后函数的区间 为 。
对于该问题,考虑分别有长度为 的 和 的 ,可将 0 填充到两个函数中,扩充其周期,使两者长度皆为 ,将避免卷积的“混叠”问题,此处 有如下定义:
而对于大小分别为 和 的图像阵列 和 ,令其填充后的大小皆为 ,此处 和 有如下定义:
可知,对于两个大小相同,皆为 的图像,其填充定义为:, 。
【注】:DFT算法对偶数尺寸的阵列计算较快,故一般将 和 设置为满足上述方程的最小偶整数。
【注意】:0填充时,若原函数在尾端的不是0,那么填充后将创建一个不连续的函数,这类似于用矩形窗函数对原函数进行了截断,将导致 “频谱泄漏”,泄漏会在图像上产生块效应。虽然泄漏无法避免,但可通过采用其他窗函数乘以原函数来尽量减少,使函数在尾端平滑地过渡到0,其窗函数可使用二维高斯函数,该函数的优点是傅里叶变换也是高斯的,将会产生较低的泄漏。
写博客的初衷就是记录,留下日常学习中的点点滴滴,并逐渐扩充为自己的知识体系,方便随时查阅,避免遗忘,同时也能够帮助他人,赠人玫瑰,手有余香。也希望能有更多的朋友加入进来,博客不同于论文,不需要多大的创新点,也没有严苛的审查制度,不过并不意味着不需要质量,对知识点的总结、解决某一实际问题的方法、哪怕是一个小小的感悟,写的过程,能加深对知识的理解,回顾起来,也会是一种收获。
持续更新...
《测试技术与信号处理》
《数字图像处理》(第三版)
神奇“数学动态图”
欧拉公式之美
“上帝公式”真的神到无法触碰?
世界上有完美的东西,那就是美到让人窒息的傅里叶变换(一)
傅里叶分析之掐死教程(完整版)
作 者:韩 昊
知 乎:Heinrich
微 博:@花生油工人
知乎专栏:与时间无关的故事
谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。
复数的物理意义是什么?
傅里叶为何变换?
OpenCV官方教程