Matlab之频域滤波下三大LPF

目录

一、初始知识

二、理想LPF

三、高斯LPF

四、巴特沃斯(Butterworth)LPF

五、滤波器和频谱的卷积

六、完整代码

 

Python中OpenCV2下实现参见这里


一、初始知识

  1. 关于 distmatrix 的作用,见https://blog.csdn.net/qq_37385726/article/details/82697648,看源代码可以知道函数的意义。
  2. 但是,不懂函数的意义也没关系,只要记住,fftshift(distmatrix)生成的是各个坐标到中心坐标的距离即可
[M,N] = size(tif);
D = distmatrix(M,N);  
dist = fftshift(D);   %距离矩阵(距中心)

figure
subplot(1,2,1),mesh(D),title('distmatrix');
subplot(1,2,2),mesh(fftshift(D)),title('fftshift(distmatrix)');

  1. 关于傅里叶变换,知道频域滤波就知道傅里叶变换实现的是时域(空域)到频率域的转变,对于2D傅里叶变换,坐标(1,1) %Python中为(0,0)%是频率为0的直流信号,坐标(u,v)是在x方向频率为u,y方向频率为v的信号

 

二、理想LPF

由于生硬的过度,图像会产生振铃伪影。

% idea LPF
H1 = zeros(M,N);
radius = 35;
ind = dist <= radius;
H1(ind) = 1;
Hd1 = double(H1);

 

 

三、高斯LPF

% Gaussion LPF
sigma = 30;
H2 = exp(-dist.^2/2/sigma^2);
Hd2 = double(H2);

 

 

 

四、巴特沃斯(Butterworth)LPF

从函数图上看,更圆滑,用幂系数n可以改变滤波器的形状。n越大,则该滤波器越接近于理想滤波器

% Butterworth LPF
D0 = 30;
n = 3;
H3 = 1./(1+(dist/D0).^(2*n));
Hd3 = double(H3);

 

 

五、滤波器和频谱的卷积

I_dft = fft2(tif);   %原频谱
fts = fftshift(I_dft);  %shift后的频谱
ft_img1 = fts .* Hd1;
ft_img2 = fts .* Hd2;
ft_img3 = fts .* Hd3;

 

六、完整代码

tif = imread('C:\\Program Files\\MATLAB\\R2017a\\toolbox\\images\\imdata\\AT3_1m4_01.tif');
tif = im2double(tif);
I_dft = fft2(tif);   %原频谱
fts = fftshift(I_dft);  %shift后的频谱

[M,N] = size(tif);
D = distmatrix(M,N);  
dist = fftshift(D);   %距离矩阵(距中心)

% idea LPF
H1 = zeros(M,N);
radius = 35;
ind = dist <= radius;
H1(ind) = 1;
Hd1 = double(H1);

% Gaussion LPF
sigma = 30;
H2 = exp(-dist.^2/2/sigma^2);
Hd2 = double(H2);

% Butterworth LPF
D0 = 30;
n = 3;
H3 = 1./(1+(dist/D0).^(2*n));
Hd3 = double(H3);


ft_img1 = fftshift(I_dft) .* Hd1;
ft_img2 = fftshift(I_dft) .* Hd2;
ft_img3 = fftshift(I_dft) .* Hd3;

subplot(1,4,1),imshow(tif),axis tight,title('initial');
subplot(1,4,2),imshow(real(ifft2(fftshift(ft_img1)))),axis tight,title('Ideal LPF');
subplot(1,4,3),imshow(real(ifft2(fftshift(ft_img2)))),axis tight,title('Guassion LPF');
subplot(1,4,4),imshow(real(ifft2(fftshift(ft_img3)))),axis tight,title('Butterworth LPF');

三类滤波器mesh后的形状:

 

频谱的变化如下:

 

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值