低通滤波器
一、理想低通滤波器(ILPF)
本文主要介绍三种常见低通滤波器的实现方法及其透视图
1.1 理想低通滤波器介绍
在以原点为中心、以D 0 D_0D0为半径的圆内,无衰减地通过所有频率,而在该圆外“切断”所有频率的二位低通滤波器,称为理想低通滤波器(ILPF);理想低通滤波器有下面的函数确定:
(1.1) H ( u , v ) = { 1 , D ( u , v ) ≤ D 0 0 , D ( u , v ) > D 0 H(u,v) =
{1,0,amp;D(u,v)≤D0amp;D(u,v)gt;D0{1,amp;D(u,v)≤D00,amp;D(u,v)gt;D0
\tag{1.1}H(u,v)={1,0,D(u,v)≤D0D(u,v)>D0(1.1)
其中,D 0 D_0D0是一个正常数,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 PP和Q QQ分别为坐标轴u uu和v vv的最大值。
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);
- 1
结果:
图1 理想低通滤波器的透视图
二、布特沃斯低通滤波器(BLPF)
2.1 布特沃斯低通滤波器介绍
截止频率位于距原点D 0 D_0D0处的n nn阶布特沃斯低通滤波器的传递函数定义为
(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);
结果:
图2 布特沃斯低通滤波器的透视图
三、高斯低通滤波器(GLPF)
3.1 高斯低通滤波器介绍
截止频率位于距原点D 0 D_0D0处的高斯低通滤波器的传递函数定义为
(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);
结果:
图3 高斯低通滤波器的透视图
总结
低通滤波器可用来平滑图像,其中D 0 D_0D0越大,即截止频率越大,图中的类似柱状物越粗,即通过的频率分量越多。