冈萨雷斯的选频滤波器太荒谬了,不破不立。
二维FIR(Finite Impulse Response)数字滤波器设计中,窗函数法是一种常用的方法。它基于一维窗函数的设计思想扩展到二维空间。
1. 确定理想频率响应
首先定义理想的频率响应 H d ( u , v ) H_d(u, v) Hd(u,v),其中u和v是频率变量。这通常是一个理想的低通、高通、带通或带阻滤波器的响应。对于图像处理来说,这些滤波器可以用来平滑图像(低通)、锐化图像(高通)等。
2. 计算理想的脉冲响应
利用傅里叶逆变换从理想的频率响应 H d ( u , v ) H_d(u, v) Hd(u,v)中计算出对应的理想脉冲响应 h d ( m , n ) h_d(m, n) hd(m,n),即滤波器的系数。这里m和n是离散空间坐标。然而,这个理想的脉冲响应通常是无限长的,并且包含有吉布斯现象(Gibbs phenomenon),即在不连续点附近出现的振荡。
3. 设计窗函数
选择一个适当的二维窗函数 W ( m , n ) W(m, n) W(m,n)来截断并加权理想的脉冲响应 h d ( m , n ) h_d(m, n) hd(m,n),以创建有限长度的滤波器系数。常用的窗函数包括矩形窗、汉宁窗(Hanning window)、汉明窗(Hamming window)、布莱克曼窗(Blackman window)等。二维窗函数可以通过一维窗函数的乘积形式得到,例如:
W ( m , n ) = w ( m ) × w ( n ) W(m, n) = w(m) \times w(n) W(m,n)=w(m)×w(n)
其中 w ( m ) w(m) w(m)和 w ( n ) w(n) w(n)是相同或不同的窗函数。
也有专门为二维设计的窗函数(如圆形窗)。
窗函数的选择会影响滤波器的过渡带宽和阻带衰减特性。
4. 加窗处理
将理想的脉冲响应 h d ( m , n ) h_d(m, n) hd(m,n)与窗函数 W ( m , n ) W(m, n) W(m,n)相乘,并获得有限长度的实际脉冲响应 h ( m , n ) h(m, n) h(m,n):
h ( m , n ) = h d ( m , n ) × W ( m , n ) h(m, n) = h_d(m, n) \times W(m, n) h(m,n)=hd(m,n)×W(m,n)
这样做不仅限定了滤波器的尺寸,而且通过窗函数的应用可以减少吉布斯现象的影响。
5. 滤波器实现
使用获得的滤波器系数 h ( m , n ) h(m, n) h(m,n)对输入信号进行卷积操作,从而实现滤波功能。在图像处理中,这意味着对图像像素值应用该卷积核。
6. 性能评估
最后,对设计好的滤波器进行性能评估,检查其是否满足特定的应用需求,如通带纹波、阻带衰减、过渡带宽等指标。如果必要,可以根据评估结果调整窗函数或其他参数重新设计滤波器。
- 窗函数的选择:不同类型的窗函数会影响滤波器的频域特性。例如,矩形窗会提供最窄的主瓣但旁瓣较高;而其他窗函数可能会增加主瓣宽度但减少旁瓣电平。
- 滤波器尺寸:较大的滤波器尺寸可以更好地逼近理想的频率响应,但也会增加计算复杂度。
- 边界效应:在实际应用中,需要注意处理好图像边缘处的卷积运算,避免边界效应带来的失真。
不同结构的滤波器设计
在一维FIR数字滤波器设计——窗函数设计法的基础上,二维滤波器窗函数设计法有圆对称和可分离两种。
圆对称滤波器
1. 确定理想频率响应
首先,定义理想的频率响应 H d ( u , v ) H_d(u, v) Hd(u,v)。对于圆对称滤波器,理想频率响应是一个圆盘形状,即在某个半径内为1,之外为0。
H d ( u , v ) = { 1 if u 2 + v 2 ≤ ω c 0 otherwise H_d(u, v) = \begin{cases} 1 & \text{if } \sqrt{u^2 + v^2} \leq \omega_c \\ 0 & \text{otherwise} \end{cases} Hd(u,v)={10if u2+v2≤ωcotherwise
其中,
ω
c
\omega_c
ωc是截止频率。
2. 计算理想脉冲响应
通过逆离散傅里叶变换(IDFT)将理想频率响应转换为时域的脉冲响应 h d ( m , n ) h_d(m, n) hd(m,n):
h d ( m , n ) = IDFT { H d ( u , v ) } h_d(m, n) = \text{IDFT}\{H_d(u, v)\} hd(m,n)=IDFT{Hd(u,v)}
3. 应用圆对称窗函数
应用高斯窗函数 w ( m , n ) w(m, n) w(m,n)来平滑边缘,减少吉布斯现象。
win = fspecial('gaussian',21,2);
win = win ./ max(win(:));
4. 设计滤波器系数
将理想脉冲响应与矩形窗函数相乘,得到实际的滤波器系数 h ( m , n ) h(m, n) h(m,n):
h ( m , n ) = h d ( m , n ) ⋅ w ( m , n ) h(m, n) = h_d(m, n) \cdot w(m, n) h(m,n)=hd(m,n)⋅w(m,n)
可分离滤波器
1. 定义理想频率响应
定义理想的频率响应 H d ( e j ω 1 , e j ω 2 ) H_d(e^{j\omega_1}, e^{j\omega_2}) Hd(ejω1,ejω2)。对于可分离滤波器,理想频率响应是一个矩形形状:
H d ( e j ω 1 , e j ω 2 ) = { 1 if ∣ ω 1 ∣ ≤ ω c and ∣ ω 2 ∣ ≤ ω c 0 otherwise H_d(e^{j\omega_1}, e^{j\omega_2}) = \begin{cases} 1 & \text{if } |\omega_1| \leq \omega_c \text{ and } |\omega_2| \leq \omega_c \\ 0 & \text{otherwise} \end{cases} Hd(ejω1,ejω2)={10if ∣ω1∣≤ωc and ∣ω2∣≤ωcotherwise
其中,
ω
c
\omega_c
ωc是截止频率。
2. 计算理想脉冲响应
通过逆离散傅里叶变换(IDFT)将理想频率响应转换为时域的脉冲响应 h d ( m , n ) h_d(m, n) hd(m,n):
h d ( m , n ) = IDFT { H d ( e j ω 1 , e j ω 2 ) } h_d(m, n) = \text{IDFT}\{H_d(e^{j\omega_1}, e^{j\omega_2})\} hd(m,n)=IDFT{Hd(ejω1,ejω2)}
3. 分解脉冲响应
将 h d ( m , n ) h_d(m, n) hd(m,n)分解为两个一维滤波器的乘积:
h d ( m , n ) = h 1 ( m ) ⋅ h 2 ( n ) h_d(m, n) = h_1(m) \cdot h_2(n) hd(m,n)=h1(m)⋅h2(n)
4. 应用窗函数
应用矩形窗函数 w ( m ) w(m) w(m)和 w ( n ) w(n) w(n)来平滑边缘,减少吉布斯现象。
w ( m ) = { 1 if ∣ m ∣ ≤ M / 2 0 otherwise w(m) = \begin{cases} 1 & \text{if } |m| \leq M/2 \\ 0 & \text{otherwise} \end{cases} w(m)={10if ∣m∣≤M/2otherwise
w ( n ) = { 1 if ∣ n ∣ ≤ N / 2 0 otherwise w(n) = \begin{cases} 1 & \text{if } |n| \leq N/2 \\ 0 & \text{otherwise} \end{cases} w(n)={10if ∣n∣≤N/2otherwise
M
M
M、
N
N
N为滤波器尺寸。
5. 设计滤波器系数
将理想脉冲响应与矩形窗函数相乘,得到实际的滤波器系数 h ( m , n ) h(m, n) h(m,n):
h ( m , n ) = h 1 ( m ) ⋅ w ( m ) ⋅ h 2 ( n ) ⋅ w ( n ) h(m, n) = h_1(m) \cdot w(m) \cdot h_2(n) \cdot w(n) h(m,n)=h1(m)⋅w(m)⋅h2(n)⋅w(n)