基于matlab数字图像处理之低通滤波器.doc
《基于matlab数字图像处理之低通滤波器.doc》由会员分享,可在线阅读,更多相关《基于matlab数字图像处理之低通滤波器.doc(6页珍藏版)》请在冰豆网上搜索。
![基于matlab数字图像处理之低通滤波器.doc](https://file1.bdocx.com/fileroot1/2022-10/7/ee9dfb00-d2bf-4482-bc3d-ace60f46bc1d/ee9dfb00-d2bf-4482-bc3d-ace60f46bc1d1.gif)
实践一:
理想低通滤波器、Butterworth低通滤波器、高斯低通滤波器
1.1.1理想低通滤波器实践代码:
I=imread('couple.bmp');
%I=rgb2gray(I);
subplot(221),imshow(I);
title('原图像');
s=fftshift(fft2(I));
subplot(223),
imshow(abs(s),[]);
title('图像傅里叶变换所得频谱');
subplot(224),
imshow(log(abs(s)),[]);
title('图像傅里叶变换取对数所得频谱');
[a,b]=size(s);
a0=round(a/2);
b0=round(b/2);
d=10;
fori=1:
a
forj=1:
b
distance=sqrt((i-a0)^2+(j-b0)^2);
ifdistance<=dh=1;
elseh=0;
end;
s(i,j)=h*s(i,j);
end;
end;
s=uint8(real(ifft2(ifftshift(s))));
subplot(222),
imshow(s);
title('低通滤波所得图像');
I=imread('couple.bmp');
Hd=ones(size(I));
Hd(r>0.2)=0;
figure
surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');%画三维曲面(色)图
1.1.2理想低通滤波器实践结果截图:
1.2.1Butterworth低通滤波器实践代码:
clearall;
I1=imread('girl.bmp');
subplot(221),imshow(I1);
xlabel('(a)原始图像');
f=double(I1);%数据类型转换
g=fft2(f);%图像傅里叶转换
g=fftshift(g);%傅里叶变换平移
F2=log(abs(g));%对傅里叶变换结果取绝对值,然后取对数
subplot(222),imshow(F2,[],'InitialMagnification','fit');%将计算后的矩阵用图像表示
colormap(jet);%设置色彩索引图
colorbar%显示色彩索引条
xlabel('(b)原始图像的傅里叶变换图像');
[N1,N2]=size(g);%傅里叶变换图像尺寸
n=2;%参数赋初始值
d0=5;
n1=fix(N1/2);%数据圆整
n2=fix(N2/2);%数据圆整
fori=1:
N1%遍历图像像素
forj=1:
N2
d=sqrt((i-n1)^2+(j-n2)^2);
ifd==0
h=0;
else
h=1/(1+(d/d0)^(2*n));
end
result(i,j)=h*g(i,j);%图像矩阵计算处理
end
end
F3=log(abs(result));%对傅里叶变换结果取绝对值,然后取对数
subplot(223),imshow(F3,'InitialMagnification','fit');
colormap(jet);%设置色彩索引图
colorbar%显示色彩索引条
xlabel('(c)滤波后的傅里叶变换图像')
result=ifftshift(result);
X2=ifft2(result);
X3=uint8(real(X2));
subplot(224),imshow(X3)
xlabel('(d)Butterworth低通滤波图像');
I1=imread('couple.bmp');
[f1,f2]=freqspace(size(I1),'meshgrid');
D=0.3;
r=f1.^2+f2.^2;
n=4;
fori=1:
size(I1,1)
forj=1:
size(I1,2)
t=r(i,j)/(D*D);
Hd(i,j)=1/(t^n+1);
end
end
surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');%画三维曲面(色)图
1.2.2Butterworth低通滤波器实践结果截图:
1.3.1高斯低通滤波器实践代码:
IA=imread('girl.bmp');
[f1,f2]=freqspace(size(IA),'meshgrid');
D=100/size(IA,1);
r=f1.^2+f2.^2;
Hd=ones(size(IA));
fori=1:
size(IA,1)
forj=1:
size(IA,2)
t=r(i,j)/(D*D);
Hd(i,j)=exp(-t);
end
end
Y=fft2(double(IA));
Y=fftshift(Y);
Ya=Y.*Hd;
Ya=ifftshift(Ya);
Ia=real(ifft2(Ya));
figure
subplot(2,2,1),imshow(uint8(IA));
title('原图像');
subplot(2,2,2),imshow(uint8(Ia));
title('高斯低通滤波处理');
figure
surf(Hd,'Facecolor','interp','Edgecolor','none','Facelighting','phong');%画三维曲面(色)图
1.3.2高斯低通滤波器实践结果截图: