Matlab图像处理--低通滤波器的Matlab实现及透视图

一、理想低通滤波器(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)={10D(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[(uP/2)2+(vQ/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);

结果:在这里插入图片描述

图1 理想低通滤波器的透视图

二、布特沃斯低通滤波器(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);

结果:
在这里插入图片描述

图2 布特沃斯低通滤波器的透视图

三、高斯低通滤波器(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)=eD2(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_0 D0越大,即截止频率越大,图中的类似柱状物越粗,即通过的频率分量越多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值