Matlab自写函数代码如下:
function g=LPF(type,f,D0,n)
f1=im2double(f);
[R, C]=size(f1);
f1=padarray(f1,[R C],'symmetric','post');
[M,N]=size(f1);
for i=1:M
for j= 1:N
f11(i,j)=(-1)^(i+j)*f1(i,j);
end
end
F=fft2(f11);
n1=floor(M/2); n2=floor(N/2);
for i=1:M
for j=1:N
D(i,j)=[(i-n1)^2+(j-n2)^2]^0.5;
end
end
switch type
case 'ideal'
H = double(D <= D0);
case 'btw'
if nargin == 3
n = 1;
end
H = 1./(1+(D./D0).^(2*n));
case 'gaussian'
H = exp(-(D.^2)./(2*(D0^2)));
otherwise
error('Unkown filter type');
end
G=H.*F;
g=real(ifft2(G));
for i=1:M
for j=1:N
g(i,j)=(-1)^(i+j)*g(i,j);
end
end
g=im2uint8(g);
g=g(1:size(f,1),1:size(f,2));
(1)
clear all;close all;clc;
f=imread('实验3_测试图像\例3.大小为688×688的图像.tif');
g1=LPF('ideal',f,10);g2=LPF('ideal',f,30);
g3=LPF('ideal',f,60);g4=LPF('ideal',f,160);
g5=LPF('ideal',f,460);
subplot(231);imshow(f,[]);title('原图像');
subplot(232);imshow(g1,[]);title('截止频率设在半径10处');
subplot(233);imshow(g2,[]);title('截止频率设在半径30处');
subplot(234);imshow(g3,[]);title('截止频率设在半径60处');
subplot(235);imshow(g4,[]);title('截止频率设在半径160处');
subplot(236);imshow(g5,[]);title('截止频率设在半径460处');
实验结果如图所示:
实验分析:理想低通滤波器截止频率设置在半径10处,基本消除了图像中的所有细节,但随着滤波器半径的增大,消除的功率越来越少,导致的模糊也越来越弱。不过,滤波后的图像很多都出现了明显的振铃效应,随着被滤除的高内容数量的减少,纹理中的振铃效应变得越来越弱。
(2)
clear all;close all;clc;
f=imread('实验3_测试图像\例3.大小为688×688的图像.tif');
g1=LPF('gaussian',f,10);g2=LPF('gaussian',f,30);
g3=LPF('gaussian',f,60);g4=LPF('gaussian',f,160);
g5=LPF('gaussian',f,460);
subplot(231);imshow(f,[]);title('原图像');
subplot(232);imshow(g1,[]);title('截止频率设在半径10处');
subplot(233);imshow(g2,[]);title('截止频率设在半径30处');
subplot(234);imshow(g3,[]);title('截止频率设在半径60处');
subplot(235);imshow(g4,[]);title('截止频率设在半径160处');
subplot(236);imshow(g5,[]);title('截止频率设在半径460处');
实验结果如图所示:
实验分析:与使用理想低通滤波器相比,模糊中的平滑过渡随着截止频率的增大而增加,二者最大的区别是使用高斯低通滤波器时并不会出现振铃效应,因而在消除伪影的方面表现优异。
(3)
clear all;close all;clc;
f=imread('实验3_测试图像\例3.大小为688×688的图像.tif');
g1=LPF('btw',f,10,2);g2=LPF('btw',f,30,2);
g3=LPF('btw',f,60,2);g4=LPF('btw',f,160,2);
g5=LPF('btw',f,460,2);
subplot(231);imshow(f,[]);title('原图像');
subplot(232);imshow(g1,[]);title('截止频率设在半径10处');
subplot(233);imshow(g2,[]);title('截止频率设在半径30处');
subplot(234);imshow(g3,[]);title('截止频率设在半径60处');
subplot(235);imshow(g4,[]);title('截止频率设在半径160处');
subplot(236);imshow(g5,[]);title('截止频率设在半径460处');
实验结果如图所示:
实验分析:经观察,使用巴特沃斯低通滤波器的效果介于理想低通和高斯低通滤波器之间,其模糊程度小于理想低通滤波器,而大于高斯低通滤波器。空间域一阶巴特沃斯滤波器没有振铃效应,在2和3阶滤波器中,振铃效应通常难以察觉,但更高阶滤波器中的振铃效应很明显。