1、数字图像处理第四次作业1、理想低通滤波器2、理想高通滤波器3、巴特沃斯低通滤波器4、巴特沃斯高通滤波器5、高斯低通滤波器6、高斯高通滤波器1.1理想低通滤波器代码及图像I=imread(C:UserszcDesktopa.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;for i=1:a for j=1:b distance=sqrt(
2、i-a0)2+(j-b0)2); if distance=d h=1; else h=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:UserszcDesktopa.tif);subplot(2,3,1);imshow(I);title(原图像);s=fftshift(fft2(I);subplot(2,3,2);imshow(abs(s),);title(图像傅里叶变换所得频谱)
3、;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;for i=1:a for j=1:b distance=sqrt(i-a0)2+(j-b0)2); if distance=d h=0; else h=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(高通滤波所得
4、图像);subplot(2,3,5);imshow(s+I);title(高通滤波所得高频增强图像);总结:这次按照低通滤波器和高通滤波器的定义,按照低通滤波的过程,一步一步写,先是进行傅里叶变换,再对其频谱进行平移,使其中心位于中心,再对此时的频谱进行圆形滤波,刚开始纠结于公式,要怎么想出一个H(s)的滤波器的表达式,然后再进行相乘,后来没有想出来,就直接在每次循环里面直接进行乘法运算,如:for i=1:a for j=1:b distance=sqrt(i-a0)2+(j-b0)2); if distance=d h=1; else h=0; end; s(i,j)=h*s(i,j);
5、end;end;后来低通滤波这么一写,高通滤波也就挺简单的了,没怎么想,把上面那个h=1和h=0的位置调换一下就变成了高通滤波器,至于高频增强,就改用了s(i,j)=(p+q*h)*s(i,j);在想滤波器表达式怎么写的时候找了好多资料,结果别人的程序都没看懂,后来看到稍微有点接近的,就吸取了那种写法,写出以上程序。3.3巴特沃斯低通滤波器代码及图像I=imread(C:UserszcDesktopa.tif);subplot(1,2,1);imshow(I);title(原图像); f=double(I); % 数据类型转换,MATLAB不支持图像的无符号整型的计算g=fft2(f); %
6、傅立叶变换g=fftshift(g); % 转换数据矩阵M,N=size(g);nn=4; % 四阶巴特沃斯(Butterworth)低通滤波器d0=50; %截止频率为50m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=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(
7、A),title(四阶巴特沃斯低通滤波图像);4.4高斯低通滤波器代码及图像I=imread(C:UserszcDesktopa.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进行取整for i=1:M for j=1:N d=sqrt(i-n1)2+(j-n2)2); %点(i,j)到傅立叶变换中心的距离 h(i,j)=1*exp
8、(-1/2*(d2/d02); %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巴特沃斯高
9、通滤波器代码及图像I=imread(C:UserszcDesktopa.tif);subplot(1,2,1), imshow(I);title(原图像);f=double(I); g=fft2(f); g=fftshift(g); M,N=size(g);nn=2; % 2-grade Butterworth highpass filterd0=15; % 15,30,80其中以15为例m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); h=1/(1+0.414*(d/d0)(2*nn); % filter tra
10、nsform function %h=1./(1+(d./d0).(2*n)%h=exp(-(d.2)./(2*(d02); 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:UserszcDesktopa.tif);subplot(1,2,1),imshow(I);title(原图像);f=double(I); g=f
11、ft2(f); g=fftshift(g); M,N=size(g);d0=15;m=fix(M/2); n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2);h=exp(-(d.2)./(2*(d02); % gaussian filter transform 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(高斯高通滤波图像(d0=15);总结:(1)理想的高通滤波器把半径为d0的圆内的所有频率完全衰减掉,却使圆外的所有的频率无损的通过。图像整体变得模糊,边缘和细节比较清晰。(2)巴特沃思高通滤波器和高斯高通滤波器处理后的图像中只显现边缘,边缘的强度不同,而灰度平滑的区域都变暗了。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1