图像的频域滤波-低通滤波

图像的频域滤波-低通滤波

1.理想低通滤波

介绍

ilpf
如图,通带内留下,阻带内直接干掉。


效果
这里写图片描述

  • 理想低通最大的缺点就是会产生振铃效应,从滤波后结果的图片就可以发现(有一圈圈波纹的感觉)。

实例代码

clc;
clear all;
close all;
%理想低通滤波器所产生的模糊和振铃现象 
I=imread('lena.jpg');
if size(I, 3)==3
    I = rgb2gray(I);
end
subplot(3,3,1);imshow(I);xlabel('(a)原始图像');
I=double(I);
%采用傅里叶变换
f=fft2(I);
g0=fftshift(f);
subplot(3,3,2);imshow(log(1+abs(g0)), []);xlabel('(b)频谱图像');


%color(jet(64));
[M,N]=size(f);
n1=floor(M/2);
n2=floor(N/2);

% d0=5, 15, 45, 65 理想低通的截取半径
d0=5;
for i=1:M
    for j=1:N
        d=sqrt((i-n1)^2+(j-n2)^2);
        if d<=d0 %列出传递函数
            h=1;
        else
            h=0;
        end
        g1(i,j)=h*g0(i,j);
    end
end
g1=ifftshift(g1);%频谱变回左上角为直流分量的形式
g1=uint8(real(ifft2(g1)));
subplot(3,3,3);imshow(g1);xlabel('(c)被滤掉10%高频能量')

d1=15;
for i=1:M
    for j=1:N
        d=sqrt((i-n1)^2+(j-n2)^2);
        if d<=d1
            h=1;
        else
            h=0;
        end
        g2(i,j)=h*g0(i,j);
    end
end
g2=ifftshift(g2);
g2=uint8(real(ifft2(g2)));
subplot(3,3,4);imshow(g2);
xlabel('(d)被滤掉3.6%高频能量')

d2=45;
for i=1:M
    for j=1:N
        d=sqrt((i-n1)^2+(j-n2)^2);
        if d<=d2
            h=1;
        else
            h=0;
        end
        g3(i,j)=h*g0(i,j);
    end
end
g3=ifftshift(g3);
g3=uint8(real(ifft2(g3)));
subplot(3,3,5);imshow(g3);
xlabel('(e)被滤掉1%高频能量')

d3=65;
for i=1:M
    for j=1:N
        d=sqrt((i-n1)^2+(j-n2)^2);
        if d<=d3
            h=1;
        else
            h=0;
        end
        g4(i,j)=h*g0(i,j);
    end
end
g4=ifftshift(g4);
g4=uint8(real(ifft2(g4)));
subplot(3,3,6);imshow(g4);
xlabel('(f)被滤掉0.6%高频能量')

巴特沃兹低通滤波

介绍

这里写图片描述

  • 巴特沃兹低通滤波器实现了通阻带的平稳过渡。因此,滤波后没有明显振铃现象的产生。

效果图
这里写图片描述

示例代码

clc;
clear all;
close all;
I1=imread('lena.jpg');                  % 读入图像
if size(I1, 3)==3
    I1 = rgb2gray(I1);
end
subplot(2,2,1),imshow(I1);               % 显示原始图像
xlabel('(a) 原始图像');
f=double(I1);                            % 数据类型转换
g=fft2(f);                               % 图像傅立叶转换
g=fftshift(g);                           % 傅立叶变换平移
F2 = log(1+abs(g));                        % 对傅立叶变换结果取绝对值,然后取对数
subplot(2,2,2),imshow(F2,[]); % 将计算后的矩阵用图像表示
xlabel('(b) 原始图像的傅里叶变换图像');

[N1,N2]=size(g);                         % 傅立叶变换图像尺寸
n=2;                                     % 参数赋初始值
d0=5;                                    % 参数赋初始值
n1=fix(N1/2);                            % 数据圆整
n2=fix(N2/2);                            % 数据圆整
for i=1:N1                               % 遍历图像像素
for j=1:N2
         d=sqrt((i-n1)^2+(j-n2)^2);
         if d==0
             h=0;                       % 求h
         else
             h=1/(1+(d/d0)^(2*n));      % 巴特沃兹低通的幅频响应
         end
         result(i,j)=h*g(i,j);          % 图像矩阵计算处理
end
end
F3 = log(1+abs(result));                   % 对傅立叶变换结果取绝对值,然后取对数
subplot(2,2,3),imshow(F3); % 将计算后的矩阵用图像表示
xlabel('(c) 滤波后的傅里叶变换图像')

result=ifftshift(result);               % 傅立叶变换平移
X2=ifft2(result);                       % 图像傅立叶逆变换
X3=uint8(real(X2));                     % 数据类型转换
subplot(2,2,4),imshow(X3)               % 显示处理后的图像
xlabel('(d) Butterworth低通滤波图像');
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值