数字图像处理-实现理想、布特沃斯以及高斯低通滤波器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理03
作业1.实现理想、布特沃斯以及高斯低通滤波器
【实验结果】
图1
如图1 所示,02、03、04 分别是01 表示的原图在d=15 时经过理想滤波器、2 阶布特沃斯滤波器以及高斯滤波器之后形成的图像,由图可知,理想滤波器有振铃现象发生,平滑效果较为粗糙;2 阶布特沃斯滤波器几乎没有振铃现象,图像较理想滤波器而言平滑效果也比较好;高斯滤波器没有振铃现象,其平滑效果是三者中最好的。
【代码】
clear all
IM0=imread('Fig0441(a)(characters_test_pattern).tif');
subplot(2,2,1)
imshow(IM0)
title('01-原图')
%理想低通滤波器
d=15;
IM1=fftshift(fft2(IM0));
[m,n]=size(IM1);
a1=round(m/2);
b1=round(n/2);
for i=1:m
for j=1:n
distance=sqrt((i-a1)^2+(j-b1)^2);
if distance<=d
h=1;
else
h=0;
end;
IM1(i,j)=h*IM1(i,j);
end;
end;
IM1=uint8(real(ifft2(ifftshift(IM1)))); subplot(2,2,2)
imshow(IM1)
title('02-理想低通滤波器')
%2 阶的布特沃斯低通滤波器
k=2;
IM2=fftshift(fft2(IM0));
[m,n]=size(IM2);
a2=floor(m/2);
b2=floor(n/2);
for i=1:m
for j=1:n
distance=sqrt((i-a2)^2+(j-b2)^2);
h=1/(1+(distance/d)^(2*k));
IM2(i,j)=h*IM2(i,j);
end;
end;
IM2=ifftshift(IM2);
IM2=uint8(real(ifft2(IM2)));
subplot(2,2,3)
imshow(IM2)
title('03-布特沃斯低通滤波器')
%高斯低通滤波器
IMtemp1=im2double(IM0);
[m,n]=size(IM0);
for i=1:m
for j=1:n
IMtemp1(i,j)=(-1)^(i+j)*IMtemp1(i,j); end;
end;
IMtemp2=fft2(IMtemp1);
[m,n]=size(IMtemp2);
for u=1:m
for v=1:n
D(u,v)=[(u-m/2)^2+(v-n/2)^2]^0.5; factc=-D(u,v)^2/(2*d^2);
H(u,v)=exp(factc);
G(u,v)=H(u,v)*IMtemp2(u,v);
end;
end;
IMtemp3=ifft2(G);
for i=1:m
for j=1:n
IM3(i,j)=(-1)^(i+j)*IMtemp3(i,j); end;
end;
IM3=real(IM3);
subplot(2,2,4)
imshow(IM3)
title('04-高斯低通滤波器')