低通滤波器
一、理想低通滤波器(ILPF)
本文主要介绍三种常见低通滤波器的实现方法及其透视图
1.1 理想低通滤波器介绍
在以原点为中心、以
D
0
D_0
D0为半径的圆内,无衰减地通过所有频率,而在该圆外“切断”所有频率的二位低通滤波器,称为理想低通滤波器(ILPF);理想低通滤波器有下面的函数确定:
(1.1)
H
(
u
,
v
)
=
{
1
,
D
(
u
,
v
)
≤
D
0
0
,
D
(
u
,
v
)
>
D
0
H(u,v) = \begin{cases} 1, & D(u,v) \leq D_0 \\ 0, & D(u,v) > D_0 \\ \end{cases} \tag{1.1}
H(u,v)={1,0,D(u,v)≤D0D(u,v)>D0(1.1)
其中,
D
0
D_0
D0是一个正常数,
D
(
u
,
v
)
是
频
率
域
中
的
点
D(u,v)是频率域中的点
D(u,v)是频率域中的点
(
u
,
v
)
(u,v)
(u,v)$与矩形中心的距离,即
(1.2)
D
(
u
,
v
)
=
[
(
u
−
P
/
2
)
2
+
(
v
−
Q
/
2
)
2
]
1
/
2
D(u,v) = \sqrt[1/2]{[(u - P / 2)^2 + (v - Q / 2)^2]} \tag{1.2}
D(u,v)=1/2[(u−P/2)2+(v−Q/2)2](1.2)
其中,
P
P
P和
Q
Q
Q分别为坐标轴
u
u
u和
v
v
v的最大值。
1.2 理想低通滤波器的Matlab实现
该部分代码同时包含了低通和高通滤波器,其中返回值H_L为理想低通滤波器,H_H为理想高通滤波器。
%{
Code for function of Ideal Filter
Created on Mon Aug 12 2019
@author: hjn
%}
% Parameters:
% H_L: Low-Pass Filter
% H_H: High-Pass Filter
function [H_L, H_H] = ILP(u_max, v_max, D0)
% defining range of axis
U=0:u_max;
V=0:v_max;
% calculating coordinate of center
center_u = ceil(u_max/2);
center_v = ceil(v_max/2);
% initilization
H_L=zeros(u_max, v_max);
H_H=zeros(u_max, v_max);
for u=1:u_max+1
for v=1:v_max+1
% distance between (u,v) and center
dist = sqrt((U(u) - center_u)^2 + (V(v) - center_v)^2);
% judge thread
if(dist<=D0)
H_L(u,v) = 1;
H_H(u,v) = 0;
else
H_L(u,v) = 0;
H_H(u,v) = 1;
end
end
end
figure(1);
surf(U,V,H_L)
xlabel('u')
ylabel('v')
zlabel('H(u,v)')
legend('H(u,v)')
1.3 理想低通滤波器的实现结果
运行如下代码:
[H_L_100_100_10, H_H_100_100_10] = ILP(100, 100, 10);
结果:
二、布特沃斯低通滤波器(BLPF)
2.1 布特沃斯低通滤波器介绍
截止频率位于距原点
D
0
D_0
D0处的
n
n
n阶布特沃斯低通滤波器的传递函数定义为
(2.1)
H
(
u
,
v
)
=
1
1
+
[
D
(
u
,
v
)
/
D
0
]
2
n
H(u,v) = \frac{1} {1 + [D(u,v)/D_0]^{2n}} \tag{2.1}
H(u,v)=1+[D(u,v)/D0]2n1(2.1)
其中,
D
(
u
,
v
)
D(u,v)
D(u,v)由式(1.2)给出。
2.2 布特沃斯低通滤波器的Matlab实现
该部分代码同时包含了低通和高通滤波器,其中返回值H_L为布特沃斯低通滤波器,H_H为布特沃斯高通滤波器。
%{
Code for function of Butterworth Filter
Created on Mon Aug 12 2019
@author: hjn
%}
% Parameters:
% H_L: Low-Pass Filter
% H_H: High-Pass Filter
function [H_L, H_H] = BLP(u_max, v_max, D0, n)
% define range of axis
U=0:u_max;
V=0:v_max;
% calculate coordinate of center
center_u = ceil(u_max/2);
center_v = ceil(v_max/2);
% initilization
H_L=zeros(u_max, v_max);
H_H=zeros(u_max, v_max);
for u=1:u_max + 1
for v=1:v_max + 1
% distance between (u,v) and center
dist = sqrt((U(u) - center_u)^2 + (V(v) - center_v)^2);
H_L(u,v)=1 / (1 + power(dist/D0, 2*n));
H_H(u,v)=1 / (1 + power(D0/dist, 2*n));
end
end
figure(1);
surf(U,V,H_L)
xlabel('u')
ylabel('v')
zlabel('H(u,v)')
legend('H(u,v)')
2.3 布特沃斯低通滤波器的实现结果
运行如下代码:
[H_L_100_100_10, H_H_100_100_10] = BLP(100, 100, 10, 1);
结果:
三、高斯低通滤波器(GLPF)
3.1 高斯低通滤波器介绍
截止频率位于距原点
D
0
D_0
D0处的高斯低通滤波器的传递函数定义为
(3.1)
H
(
u
,
v
)
=
e
−
D
2
(
u
,
v
)
/
2
D
0
2
H(u,v) = e^{-D^2(u,v)/{2D_0^2}} \tag{3.1}
H(u,v)=e−D2(u,v)/2D02(3.1)
3.2 高斯低通滤波器的Matlab实现
%{
Code for function of Gaussion Filter
Created on Mon Aug 12 2019
@author: hjn
%}
% Parameters:
% H_L: Low-Pass Filter
% H_H: High-Pass Filter
function [H_L, H_H] = GLP(u_max, v_max, sigma)
% defining range of axis
U=0:u_max - 1;
V=0:v_max - 1;
% calculating coordinate of center
center_u = ceil(u_max/2);
center_v = ceil(v_max/2);
% initialization
H_L=zeros(u_max, v_max);
H_H=zeros(u_max, v_max);
for u=1:u_max
for v=1:v_max
% distence between U(u,v) and center
dist = sqrt((U(u) - center_u)^2 + (V(v) - center_v)^2);
H_L(u,v) = exp(-dist^2/(2*sigma^2));
H_H(u,v) = 1 - H_L(u,v);
end
end
figure(1);
surf(U,V,H_L)
xlabel('u')
ylabel('v')
zlabel('H(u,v)')
legend('H(u,v)')
3.3 高斯低通滤波器的实现结果
运行如下代码:
[H_L_100_100_10, H_H_100_100_10] = GLP(100, 100, 10);
结果:
总结
低通滤波器可用来平滑图像,其中 D 0 D_0 D0越大,即截止频率越大,图中的类似柱状物越粗,即通过的频率分量越多。