傅里叶变换的作用
离散傅里叶变换是最经典的一种正弦余弦型正交变换,它建立了空间域与频率域间的联系,具有明确的物理意义,能够更直观、方便地解决许多图像处理问题。而且具有快速算法,因此广泛应用于图像处理等各个领域。
傅里叶变换的定义
狄里赫莱条件
- 函数在任意有限区间内连续或只有有限个第一类间断点
- 在单个周期内函数仅有限个极值点
- 在单个周期内函数绝对可积
只有满足狄里赫莱条件的周期函数才存在傅里叶变换。
连续傅里叶变换
一维傅里叶变换对:
F(μ)=∫−∞∞f(x)e−j2πμxdx
f(x)=∫−∞∞F(μ)ej2πμxdμ函数
F(μ)一般情况下是一个复数量,可表示为:
F(μ)=R(μ)+jI(μ)或
F(μ)=∣F(μ)∣ejϕ(μ)其中
f(x)称为空间域;
F(μ)称为
f(x)的频率谱或频率域;
∣F(μ)∣=R2(μ)+I2(μ)
,称为
f(x)的幅度谱;
ϕ(μ)=arctanR(μ)I(μ),称为
f(x)的相位谱。
二维傅里叶变换对:
F(μ,ν)=∫−∞∞f(x,y)e−j2π(μx+νy)dxdy
f(x,y)=∫−∞∞F(μ,ν)ej2π(μx+νy)dμdν同理二维傅里叶变换的
F(μ,ν)可表示为
F(μ,ν)=∣F(μ,ν)∣ejϕ(μ+ν)其中
F(μ,ν)称为
f(x,y)的频谱;
∣F(μ,ν)∣=R2(μ,ν)+I2(μ,ν)
称为
f(x,y)的幅度谱;
ϕ(μ,ν)=arctanR(μ+ν)I(μ+ν)称为
f(x,y)的相位谱
离散傅里叶变换
一维离散傅里叶变换
定义:设
{f(x)∣x=0,1,...,N−1}为维信号的
N个抽样,其离散傅里叶变换及其逆变换分别为:
F(μ)=x=0∑N−1f(x)e−j2πμx/N,μ=0,1,...,N−1
f(x)=N1μ=0∑N−1F(μ)ej2πμx/N,x=0,1,...,N−1
二维离散傅里叶变换对:
F(μ,ν)=x=0∑N−1y=0∑M−1f(x,y)e−j2π(Nμx+Mνy)
f(x,y)=MN1μ=0∑N−1ν=0∑M−1F(μ,ν)e−j2π(Nμx+Mνy)其中
x、
y、
μ、
ν的取值范围为:
μ,x=0,1,...,N−1;
ν,y=0,1,...,N−1
同样的,
F(μ,ν)亦可表示为:
F(μ,ν)=∣F(μ,ν)∣ejϕ(μ,ν)=R(μ,ν)+jI(μ,ν)其中
F(μ,ν)称为
f(x,y)的频谱;
∣F(μ,ν)∣=R2(μ,ν)+I2(μ,ν)
称为
f(x,y)的幅度谱;
ϕ(μ,ν)=arctanR(μ,ν)I(μ,ν)称为
f(x,y)的相位谱
python实现提取图像幅度谱与相位谱:
import numpy as np
import cv2 as cv
image = cv.imread(imagePath)
freSpectrum = np.fft.fft2(image)
freSpectrum = np.fft.fftshift(freSpectrum)
ampSpectrum = np.sqrt(freSpectrum.imag ** 2 + freSpectrum.real ** 2)
phaSpectrum = np.arctan(freSpectrum.imag / freSpectrum.real)
离散傅里叶变换的显示
1、对称平移
图像进行离散傅里叶变换的示意图:
在上图中,左一图即为
f(x,y),左二图即为
f(x,y)的幅度谱,白色部分为高频分量,阴影部分为低频分量,在四个角点频率最低,称其为直流部分或者直流分量。为了更好的体现图像的对称性,往往会将变换后的图像进行换位(对角交换),如左三图所示。这时,在频域的正中心即为直流分量,四周对应的就是高频分量
一个傅里叶变换实例:
python实现:
import numpy as np
import cv2 as cv
image = cv.imread(imagePath)
freSpectrum = np.fft.fft2(_image)
freSpectrum = np.fft.fftshift(freSpectrum)
2、值域动态范围压缩
由于傅里叶变换幅度谱的值域大于显示值域,会导致低频部分显示受限,因此要进行值域的动态范围压缩,放大低频压缩高频。通常办法是把频率谱取对数运算,表示为:
D(μ,ν)=clog(1+∣F(μ,ν)∣)其中
c=max[log(1+∣F(μ,ν)∣)]255,由此可见,
D(μ,ν)的值域是
[0,255]
python实现幅度谱值域动态范围压缩:
import numpy as np
import cv2 as cv
image = cv.imread(imagePath)
freSpectrum = np.fft.fft2(image)
freSpectrum = np.fft.fftshift(freSpectrum)
maxlogValue = []
for i in range(len(freSpectrum)):
maxlogValue.append(max(np.log(1 + np.abs(freSpectrum[i]))))
ampSpectrum = 255 / max(maxlogValue) * np.log(1 + np.abs(freSpectrum))
下图中的图三和图四分别是没有进行值域动态范围压缩的傅里叶变换幅度谱和进行了值域动态范围压缩的傅里叶变换幅度谱,可以看到高频部分被压缩、低频部分被放大,图片更加清晰。
二维离散傅里叶变换的幅度谱与相位谱
下图是傅里叶变换幅度谱及其逆变换
下图是傅里叶变换相位谱及其逆变换
很显然相位谱图像结果逆变换以后比幅度谱图像经过逆变换后的图像更加清晰直观,幅度谱图像经过逆变换后的图像过于抽象,难以理解。就这个现象来说,相位谱比起幅度谱携带着更容易被人类理解的信息。
快速傅里叶变换FFT
FFT的出现极大促进了傅里叶变换的实用化,它利用了傅里叶变换的周期性和对称性,大大降低了计算量。
离散傅里叶变换与快速傅里叶变换的运算量之比为:
r=log2N2N其中
N为图像大小
N |
4*4 |
128*128 |
512*512 |
1024*1024 |
2048*2048 |
r |
4 |
36.6 |
113.8 |
204.8 |
372.4 |
二维离散傅里叶变换的性质
1、可分离性
二维离散傅里叶变换的可分离性可以将一个二维变换分解为两个一维变换,简化计算
F(μ,ν)=x=0∑N−1y=0∑M−1f(x,y)e−j2π(Nxμ+Myν)=x=0∑N−1[y=0∑M−1f(x,y)e−j2πMyν]e−j2πNxμ=fT行{fT列[f(x,y)]}=fT列{fT行[f(x,y)]}
2、线性
傅里叶变换是一种线性变换正交变换,满足线性变换的叠加性
F[a1f1(x,y)+a2f2(x,y)]=a1F[f1(x,y)]+a2F[f2(x,y)]
3、共轭对称性
如果
F(μ,ν)是
f(x,y)的傅里叶变换,
F∗(−μ,−ν)是傅里叶变换的共轭函数,那么
F(μ,ν)=F∗(−μ,−ν)
4、平移不变性
目标在空域中进行平移不会改变其频谱和幅度谱
5、旋转性
若空间域中函数旋转角度为
θ0,那么在变换域中此函数的傅里叶变换也旋转同样的角度,即:
f(r,θ+θ0)⇔F(k,ϕ+θ0)
6、比例变换性
若在傅里叶变换中,
a与
b是两个标量,则有
af(x,y)⇔aF(μ,ν)
f(ax,by)⇔∣ab∣1F(aμ,bν)例如下图中空间域图像逆时针旋转45°,其频率域图像也逆时针旋转了45°
7、Parseval定理(能量保持定理)
若
F(μ,ν)是
f(x,y)的傅里叶变换,那么变换前后信号强度保持不变,即没有信息损失:
∫−∞∞∫−∞∞∣f(x,y)∣2dxdy=∫−∞∞∫−∞∞∣F(μ,ν)∣2dμdν
8、相关性定理
两个二维函数
f(x,y)、
g(x,y)的相关函数定义如下:
f(x,y)∘g(x,y)=∫−∞∞∫−∞∞f(α,β)g(x+α,y+β)dαdβ
f(x,y)∘g(x,y)⇔F∗(μ,ν)⋅G(μ,ν)
f∗(x,y)⋅g(x,y)⇔F(μ,ν)∘G(μ,ν)
9、卷积定理
两个二维函数
f(x,y)、
g(x,y)的卷积运算定义如下:
f(x,y)∗g(x,y)=∫−∞∞∫−∞∞f(α,β)g(x−α,y−β)dαdβ
f(x,y)∗g(x,y)⇔F(μ,ν)⋅G(μ,ν)
f(x,y)⋅g(x,y)⇔F(μ,ν)∗G(μ,ν)
傅里叶变换的应用
傅里叶变换的应用基于它的两个特点:
- 反应频域特性
- 将卷积运算转化为乘积运算
在图像滤波中的应用
变换后的图像,中间部分为低频部分,越靠外频率越高。根据这个特性自行构建滤波器选择所需要的高频或低频部分
在图像压缩中的应用
根据高频反应细节、低频反应概貌的特性可以把一下无关紧要的频率分量虑除掉以降低图像大小