数字图像处理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四次作业1、理想低通滤波器2、理想高通滤波器3、巴特沃斯低通滤波器4、巴特沃斯高通滤波器5、高斯低通滤波器6、高斯高通滤波器1.1理想低通滤波器代码及图像I=imread('C:\Users\zc\Desktop\a.tif');subplot(2,2,1);imshow(I);title('原图像');s=fftshift(fft2(I));subplot(2,2,2);imshow(abs(s),[]);title('图像傅里叶变换所得频谱');[a,b]=size(s);a0=round(a/2);b0=round(b/2);d=10;fori=1:aforj=1:bdistance=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(2,2,3);imshow(s);title('低通滤波所得图像');2.2理想高通滤波器代码及图像I=imread('C:\Users\zc\Desktop\a.tif');subplot(2,3,1);imshow(I);title('原图像');s=fftshift(fft2(I));subplot(2,3,2);imshow(abs(s),[]);title('图像傅里叶变换所得频谱');subplot(2,3,3);imshow(log(abs(s)),[]);title('图像傅里叶变换取对数所得频谱');[a,b]=size(s);a0=round(a/2);b0=round(b/2);d=10;p=0.2;q=0.5;fori=1:aforj=1:bdistance=sqrt((i-a0)^2+(j-b0)^2);ifdistance=dh=0;elseh=1;end;s(i,j)=(p+q*h)*s(i,j);end;end;s=uint8(real(ifft2(ifftshift(s))));subplot(2,3,4);imshow(s);title('高通滤波所得图像');subplot(2,3,5);imshow(s+I);title('高通滤波所得高频增强图像');总结:这次按照低通滤波器和高通滤波器的定义,按照低通滤波的过程,一步一步写,先是进行傅里叶变换,再对其频谱进行平移,使其中心位于中心,再对此时的频谱进行‘圆形滤波’,刚开始纠结于公式,要怎么想出一个H(s)的滤波器的表达式,然后再进行相乘,后来没有想出来,就直接在每次循环里面直接进行乘法运算,如:fori=1:aforj=1:bdistance=sqrt((i-a0)^2+(j-b0)^2);ifdistance=dh=1;elseh=0;end;s(i,j)=h*s(i,j);end;end;后来低通滤波这么一写,高通滤波也就挺简单的了,没怎么想,把上面那个h=1和h=0的位置调换一下就变成了高通滤波器,至于高频增强,就改用了s(i,j)=(p+q*h)*s(i,j);在想滤波器表达式怎么写的时候找了好多资料,结果别人的程序都没看懂,后来看到稍微有点接近的,就吸取了那种写法,写出以上程序。3.3巴特沃斯低通滤波器代码及图像I=imread('C:\Users\zc\Desktop\a.tif');subplot(1,2,1);imshow(I);title('原图像');f=double(I);%数据类型转换,MATLAB不支持图像的无符号整型的计算g=fft2(f);%傅立叶变换g=fftshift(g);%转换数据矩阵[M,N]=size(g);nn=4;%四阶巴特沃斯(Butterworth)低通滤波器d0=50;%截止频率为50m=fix(M/2);n=fix(N/2);fori=1:Mforj=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn));%计算低通滤波器传递函数result(i,j)=h*g(i,j);endendresult=ifftshift(result);H=ifft2(result);A=uint8(real(H));subplot(1,2,2),imshow(A),title('四阶巴特沃斯低通滤波图像');4.4高斯低通滤波器代码及图像I=imread('C:\Users\zc\Desktop\a.tif');subplot(1,2,1),imshow(I);title('原图像');s=fftshift(fft2(I));[M,N]=size(s);%分别返回s的行数到M中,列数到N中%GLPF滤波d0=50;%初始化d0n1=floor(M/2);%对M/2进行取整n2=floor(N/2);%对N/2进行取整fori=1:Mforj=1:Nd=sqrt((i-n1)^2+(j-n2)^2);%点(i,j)到傅立叶变换中心的距离h(i,j)=1*exp(-1/2*(d^2/d0^2));%GLPF滤波函数s(i,j)=h(i,j)*s(i,j);%GLPF滤波后的频域表示endends=ifftshift(s);%对s进行反FFT移动%对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数s=uint8(real(ifft2(s)));subplot(1,2,2),imshow(s);title('高斯低通滤波图像(d0=50)');%显示GLPF滤波处理后的图像总结:图像高频分量对应于图像的细节信息,而低频分量对图像的整体视觉效果有着决定性的影响,而且阶数n越高,其幅频特性越好,低频检测信号保真度越高。5.5巴特沃斯高通滤波器代码及图像I=imread('C:\Users\zc\Desktop\a.tif');subplot(1,2,1),imshow(I);title('原图像');f=double(I);g=fft2(f);g=fftshift(g);[M,N]=size(g);nn=2;%2-gradeButterworthhighpassfilterd0=15;%15,30,80其中以15为例m=fix(M/2);n=fix(N/2);fori=1:Mforj=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn));%filtertransformfunction%h=1./(1+(d./d0).^(2*n))%h=exp(-(d.^2)./(2*(d0^2)));result(i,j)=(1-h)*g(i,j);endendresult=ifftshift(result);J1=ifft2(result);J2=uint8(real(J1));subplot(1,2,2),imshow(J2);title('二阶巴特沃斯高通滤波图像');6.6高斯高通滤波器代码及图像I=imread('C:\Users\zc\Desktop\a.tif');subplot(1,2,1),imshow(I);title('原图像');f=double(I);g=fft2(f);g=fftshift(g);[M,N]=size(g);d0=15;m=fix(M/2);n=fix(N/2);fori=1:Mforj=1:Nd=sqrt((i-m)^2+(j-n)^2);h=exp(-(d.^2)./(2*(d0^2)));%gaussianfiltertransformresult(i,j)=(1-h)*g(i,j);endendresult=ifftshift(result);J1=ifft2(result);J2=uint8(real(J1));subplot(1,2,2),imshow(J2);title('高斯高通滤波图像(d0=15)');总结:(1)理想的高通滤波器把半径为d0的圆内的所有频率完全衰减掉,却使圆外的所有的频率无损的通过。图像整体变得模糊,边缘和细节比较清晰。(2)巴特沃思高通滤波器和高斯高通滤波器处理后的图像中只显现边缘,边缘的强度不同,而灰度平滑的区域都变暗了。

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功