下式是二维傅里叶变换DFT
F(μ,v)=M−1∑x=0N−1∑y=0f(x,y)e−j2π(μx/M+vy/N)
其中f(x,y)是大小为M×N的数字图像,当给出F(μ,v)的呀得到傅里叶反变换IDFT:
f(x,y)=1MNM−1∑μ=0N−1∑v=0F(μ,v)ej2π(μx/M+vy/N)
二维离散傅里叶变换的一些性质
空间和频率间隔的关系
和一维的类似,假设对连续函数f(t,z)取样生成了一幅数字图像f(x,y),分别在t和z方向所取的M×N个样本点组成,ΔT,ΔZ表示样本间的间隔:
Δu=1MΔT,Δv=1NΔZ
平移和旋转
- 平移:用指数项乘以f(x,y)将使DFT的原点一道点(μ0,v0),反之,用负指数乘以F(μ,v)将使f(x,y)的原点移到(x0,y0),平移不影响幅度,原图像平移之后对应的傅里叶变换和原图像的傅里叶变换是相同的
f(x,y)ej2π(μ0x/M+v0y/N)⇔F(μ−μ0,v−v0)f(x−x0,y−y0)⇔F(μ,v)e−j2π(μ0x/M+v0y/N)
x=rcosθ,y=rsinθ,y=ωcosφ,v=ωsinφ
可以得到:
f(r,θ+θ0)⇔F(ω,φ+φ0)
也就是,若f(x,y)旋转θ0角度,那么F(μ,v)也旋转相同的角度,反之相同
周期性
二维傅里叶变换及其反变换在μ,v方向是无限周期的,即:
F(u,v)=F(u+k1M,v)=F(u,v+k2N)=F(u+k1M,v+k2N)f(x,y)=f(x+k1M,y)=f(x,y+k2N)=f(x+k1M,y+k2N)
先考虑一维的情况,在区间[0,M−1]中,变换数据由两个在点M/2处碰面的背靠背的半个周期组成,在该区间内有一个完整的周期会更加方便:
f(x)ej2π(ux0/M)⇔F(u−uo)
假设u0=M/2那么指数项变为ejπx,又因为x是整数,所以指数项为(−1)x:
f(x)(−1)x⇔F(u−M/2)
即用(−1)x乘以f(x)将位于原点的数据F(0)移动到区间[0,M−1]的中心位置,在二维情况下原理是一样的:
f(x,y)(−1)x+y⇔F(u−M/2,v−N/2)
对称性:
任何实函数或虚函数w(x,y)可表示为一个奇数部分和一个偶数部分的和:
w(x,y)=we(x,y)+wo(x,y)
其中偶数部分和奇数部分定义为:
we(x,y)=w(x,y)+w(−x,−y)2wo(x,y)=w(x,y)−w(−x,−y)2
偶函数是对称的,奇函数是反对称的,因为:
we(x,y)=we(−x,−y)wo(x,y)=−wo(−x,−y)
因为DFT,IDFT中所有指数都是正的,所以是关于序列中点的对称(反对称):
we(x,y)=we(M−x,N−y)wo(x,y)=−wo(M−x,N−y)
一个奇函数和一个偶函数的乘积是奇函数,而离散函数为奇函数的唯一方法就是所有的样本的和为0:
M−1∑x=0N−1∑y=0we(x,y)wo(x,y)=0
离散函数例如:
f={f(0) f(1) f(2) f(3)}
其中M=4,可以看到,如果需要该函数是偶函数那么只需要f(1)=f(3),如果需要该函数为奇函数,那么需要满足条件f(0)=f(2)=0,f(1)=−f(3)
实函数f(x,y)的傅里叶变换是共轭对称的:
F∗(u,v)=F(−u,−v)
虚函数f(x,y)是共轭反对称的,F∗(−u,−v)=−F(u,v)
下标列出了傅里叶变换的对称性和相关的性质,双箭头表示傅里叶变换对,即对于表中的任意一行,右边的性质可由拥有左边性质的函数的傅里叶变换来满足,反之亦然,例如对于第三条性质,读作:如果f(x,y)是实函数,则其DFT的实部是偶函数,其虚部是奇函数,类似的,如果一个DFT分别具有偶函数的实部和奇函数的虚部,则其IDFT是一个实函数

傅里叶谱和相角
通常二维DFT是复函数,可以使用极坐标表示:
F(u,v)=|F(u,v)|ejϕ(u,v)
R,I分别是函数F(u,v)的实部和虚部,其中,幅度:
|F(u,v)|=[R2(u,v)+I2(u,v)]1/2
称为傅里叶谱或频谱,相角为:
ϕ(u,v)=arctan[I(u,v)R(u,v)]
功率谱定义为:
P(u,v)=|F(u,v)|2=R2(u,v)+I2(u,v)
实函数的傅里叶变换是共轭对称的,所以谱是关于原点偶对称的:
|F(u,v)|=|F(−u,−v)|
相角是关于原点奇对称的:
ϕ(u,v)=−ϕ(−u,−v)
有:
F(0,0)=M−1∑x=0N−1∑y=0f(x,y)
指出零频率项与f(x,y)的平均值成正比:
F(0,0)=MN1MNM−1∑x=0N−1∑y=0f(x,y)=MN¯¯¯f(x,y)
其中¯¯¯f表示f的平均值
- 当二维DFT的幅度是一个阵列时,其谱决定了图像中的灰度,相角决定了图像细节,也就是仅用相角信息反傅里叶变换可以重建图像的基本形状,但仅有谱信息不可以
二维卷积定理
f(x,y)★h(x,y)⇔F(u,v)H(u,v)f(x,y)h(x,y)⇔F(u,v)★H(u,v)
两个周期函数卷积的时候为了避免缠绕错误必须要对函数进行填充操作,在二维下,令f(x,y)和h(x,y)分别是大小为A×B和C×D像素的图像阵列,在循环卷积中的缠绕错误可以通过对这两个函数进行零填充来避免:
fp(x,y)={f(x,y)0≤x≤A−1,0≤y≤B−10A≤x≤P,B≤y≤Qhp(x,y)={h(x,y)0≤x≤C−1,0≤y≤D−10C≤x≤P,D≤y≤QP≥A+C−1Q≥B+D−1
填充后的图像大小为P×Q
频率域滤波基础
假定输入图像为一幅大小为M×N的f(x,y),那么基本滤波公式如下:
g(x,y)=J−1[H(u,v)F(u,v)]
F(u,v)是输入图像f(x,y)的DFT,H(u,v)是滤波函数,g(x,y)是滤波后的输出图像
频率域滤波步骤小结
- 给定一幅大小为M×N的输入图像f(x,y),选择填充参数P=2M,Q=2N
- 对f(x,y)添加必要数量的0,形成大小为P×Q的填充后的图像fp(x,y)
- 用(−1)x+y乘以fp(x,y)移到其变换的中心
- 计算变换后的图像的傅里叶变换得到F(u,v)
- 生成一个实的、对称的滤波函数H(u,v),其大小为P×Q,中心在(P/2,Q/2)处
- 用阵列相乘形成乘积G(u,v)=H(u,v)F(u,v),即G(i,k)=H(i,k)F(i,k)
- 得到处理后的图像:
gp(x,y)={real[J−1[G(u,v)]]}(−1)x+y
其中为了忽略由于计算不准确导致的寄生复分量,选择了实部,下标p指出了我们处理的是填充后的阵列
- 通过从gp(x,y)的左上象限提取M×N的区域,得到最终处理结果g(x,y)
空间和频率域滤波间的对应
h(x,y)⇔H(u,v)
- 在实践中使用空间滤波器,因为实现时速度快而且容易,但是滤波的概念在频率域更加直观,有些在空间域异常困难的或不可能直接用公式表达的任务在频率域却变得很容易,综合两个域的特性的优点的一个方法是在频率域规定一个滤波器,计算它的IDFT得到全尺寸的空间滤波器
- 一个高斯函数的正、反傅里叶变换都是实高斯函数,考虑一维高斯滤波器,用H(u)表示一维频率域高斯滤波器:
H(u)=Ae−u22σ2
空间域中相应滤波器为上式的傅里叶反变换:
h(x)=√2πσAe−2π2σ2x2
使用频率滤波器平滑图像
一幅图像的边缘和其他尖锐的灰度转变如噪声对其傅里叶变换的高频内容有贡献,滤波函数H(u,v)可以理解为大小为P×Q的离散函数,离散频率变量范围为u=0,1,⋯,P−1,v=0,1,2,⋯,Q−1
理想低通滤波器ILPF
H(u,v)={1D(u,v)≤D00D(u,v)>D0
其中:
D(u,v)=[(u−P/2)2+(v−Q/2)2]1/2
D0是一个常数,称为截止频率,这一滤波器在半径为D0的圆内所有频率无衰减的通过,而在此圆之外的所有频率则完全的被衰减,这种滤波器不能使用电子元件来实现,但是可以在计算机上面模拟

截止频率和规定的总图像功率值PT的关系,u=0,1,⋯,P−1,v=0,1,⋯,Q−1:
PT=P−1∑u=0Q−1∑v=0P(u,v)P(u,v)=|F(u,v)|2=R2(u,v)+I2(u,v)
如果DFT已经被中心化了,那么原点位于频率矩形的中心处,半径为D0的圆将包含α%的功率:
α=100[∑u∑vP(u,v)/PT]
振铃现象是理想滤波器的一种特性
布特沃斯低通滤波器BLPF
截止频率位于距原点D0处的n阶布特沃斯低通滤波器BLPF的传递函数定义为:
H(u,v)=11+[D(u,v)/D0]2n

具有平滑传递函数的滤波器的截止频率的定义:使得H(u,v)下降为其最大的某个百分比的点,从上式可以得出截止频率点是D(u,v)=D0,也就是H(u,v)=0.5的点,这种滤波器大大减小了振铃现象,在低阶的时候振铃现象很难察觉,但是随着n的增加,振铃现象会逐渐明显,二阶的BLPF是有效的低通滤波和可接受的振铃特性之间的好的折中:

高斯低通滤波器GLPF
H(u,v)=e−D2(u,v)/2σ2
σ是关于中心的扩展度的度量,通过令σ=D0:
H(u,v)=e−D2(u,v)/2D20
D0是截止频率,此时D(u,v)=D0,H(u,v)=0.607,GLPF的傅里叶反变换也是高斯的,也就是通过IDFT得到的空间滤波器没有振铃现象:

使用频率域滤波器锐化图像
高通滤波会衰减傅里叶变换中的低频分量而不会扰乱高频信息,滤波函数H(u,v)可以理解为大小为P×Q的离散函数,离散频率变量范围为u=0,1,⋯,P−1,v=0,1,2,⋯,Q−1,一个高通滤波器可以从给定的低通滤波器从下式得到:
HHP(u,v)=1−HLP(u,v)
理想高通滤波器IHPF
H(u,v)={0D(u,v)≤D01D(u,v)>D0
IHPF和ILPF是相对的,ILPF将半径D0的圆内的所有频率置零,毫无衰减的通过圆外的所有频率,在物理上也是没有办法实现的,也会产生失真的情况
布特沃斯高通滤波器BHPF
H(u,v)=11+[D0/D(u,v)]2n
高斯高通滤波器GHPF
H(u,v)=1−e−D2(u,v)/2D20
频率域的拉普拉斯算子
H(u,v)=−4π2(u2+v2)
或者,关于频率矩形的中心,使用如下滤波器:
H(u,v)=−4π2[(u−P/2)2+(v−Q/2)2]=−4π2D2(u,v)
其中D(u,v)是距离函数,拉普拉斯图像由下式得到:
∇2f(x,y)=J−1{H(u,v)F(u,v)}
增强可以用下式实现:
g(x,y)=f(x,y)+c∇2f(x,y)
这里因为H(u,v)是负的,所以c=−1,在这里f(x,y)和∇2f(x,y)可能不是在一个量级,处理该问题的一个方法是在计算f(x,y)的DFT之前将f(x,y)的值归一化到区间[0,1]内,并用它的最大值除以∇2f(x,y)
钝化模板、高提升滤波和高频强调滤波
频率域中的模板:
gmask(x,y)=f(x,y)−fLP(x,y)
其中:
fLP(x,y)=J−1[HLP(u,v)F(u,v)]
FLP(x,y)是平滑之后的图像,类似于¯¯¯f(x,y),有:
g(x,y)=f(x,y)+k×gmask(x,y)
k=1时的钝化模板,k>1时高提升滤波器,高频强调滤波器:
g(x,y)=J−1{[1+k×[1−HLP(u,v)]]F(u,v)}=J−1{[1+k×HHP(u,v)]F(u,v)}
高通滤波器将直流项设置为0,这样,就把滤波后的图像的平均灰度减小为0,高频强调滤波器不存在这一个问题,因为在高通滤波器上加了1,常数k给出了影响最终结果的高频的比例,高频强调滤波的更一般的公式为:
g(x,y)=J−1{[k1+k2×HHP(u,v)]F(u,v)}
同态滤波
一幅图像f(x,y)可以表示成照射分量i(x,y)和反射分量r(x,y)的乘积:
f(x,y)=i(x,y)r(x,y)
因为:
J[f(x,y)]≠J[i(x,y)]J[r(x,y)]
所以假定:
z(x,y)=lnf(x,y)=lni(x,y)+lnr(x,y)
有:
J{z(x,y)}=J{lnf(x,y)}=J{lni(x,y)}+J{lnr(x,y)}Z(u,v)=Fi(u,v)+Fr(u,v)
Fi(u,v),Fr(u,v)分别是lni(x,y),lnr(x,y)的傅里叶变换,可以利用H(u,v)对Z(u,v)进行滤波:
S(u,v)=H(u,v)Z(u,v)=H(u,v)Fi(u,v)+H(u,v)Fr(u,v)
在空间域,滤波之后的图像为:
s(x,y)=J−1{S(u,v)}=J−1{H(u,v)Fi(u,v)}+J−1{H(u,v)Fr(u,v)}
定义:
i′(x,y)=J−1{H(u,v)Fi(u,v)}r′(x,y)=J−1{H(u,v)Fr(u,v)}
所以有:
s(x,y)=i′(x,y)+r′(x,y)
因为s(x,y)是原图像取自然对数产生的,所以输出之后的图像为:
g(x,y)=es(x,y)=ei′(x,y)er′(x,y)=i0(x,y)r0(x,y)
其中:
i0(x,y)=ei′(x,y)r0(x,y)=er′(x,y)
是处理后的图像的照射分量和反射分量,图像的照射分量通常由慢的空间变化来表征,而反射变量引起突变,也就是低频成分与照射相联系,高频成分与反射相联系,使用同态滤波器可以更好的控制照射分量和反射分量,例如下面就是一个同态滤波器:

可以看到上面的滤波器趋向于衰减低频照射的贡献,增强了高频反射的贡献,最终可以达到动态范围压缩和对比度增强的效果,类似于高频强调滤波器
选择性滤波
目的:之前讨论的滤波器在整个频率矩形上面操作,但是在很多应用中,需要处理指定的频段或频率矩形的小区域,第一类滤波器称为带阻滤波器或带通滤波器,第二类称为陷波滤波器
带阻滤波器和带通滤波器
- 带阻滤波器:

- 带通滤波器:从带阻滤波器中得到
HBP(u,v)=1−HBR(u,v)
陷波滤波器
陷波滤波器拒绝或通过实现定义的关于频率矩形中心的一个领域的频率,零相移滤波器必须是关于原点对称的,因此一个中心位于(u0,v0)的陷波在位置(−u0,−v0)必须有一个相应的陷波,陷波滤波器可以用中心已被平移到陷波滤波器中心的高通滤波器的乘积来构造,一般形式为:
HNR(u,v)=Q∏k=1Hk(u,v)H−k(u,v)
其中Hk(u,v),H−k(u,v)是高通滤波器,他们的中心分别位于(uk,vk),(−uk,−vk)处,这些中心是根据频率矩形的中心(M/2,N/2)来确定的,对于每个滤波器,距离的计算由下式执行:
Dk(u,v)=[(u−M/2−uk)2+(v−N/2−vk)2]1/2D−k(u,v)=[(u−M/2+uk)2+(v−N/2+vk)2]1/2
例如一个包含三个陷波对的n阶布特沃斯陷波带阻滤波器:
HNR(u,v)=3∏k=1[11+[D0k/Dk(u,v)]2n][11+[D0k/D−k(u,v)]2n]
陷波带通滤波器可由陷波带通滤波器得到:
HNP(u,v)=1−HNR(u,v)
陷波滤波的一个主要应用就是选择性的修改DFT的局部区域
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律