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