当前位置:文档之家› 数字图像处理代码Ch3《频率域滤波》教案资料

数字图像处理代码Ch3《频率域滤波》教案资料

数字图像处理代码C h3《频率域滤波》来自《数字图像处理MATLAB版》书中示例,代码复制与运行结果。

例3.1 有和没有填充的滤波效果。

clc,clear;close all;%有和没有填充的滤波效果f=imread('Fig0405(a)(square_original).tif');%========无填充的滤波========[M,N]=size(f);[f,revertclass]=tofloat(f);F=fft2(f); sig=10;H=lpfilter('gaussian',M,N,sig);G=H.*F; g=ifft2(G);g=revertclass(g);subplot 221;imshow(f);title('(a)尺寸为256×256像素的一幅图像'); subplot 222;imshow(g);title('(b)无填充时频率域中低通滤波后的图像'); %=======有填充的滤波==========PQ=paddedsize(size(f)); %f是浮点数Fp=fft2(f,PQ(1),PQ(2)); %计算填充的FFTHp=lpfilter('gaussian',PQ(1),PQ(2),2*sig);Gp=Hp.*Fp; gp=ifft2(Gp);gpc=gp(1:size(f,1),1:size(f,2));gpc=revertclass(gpc);subplot 223;imshow(gp);title('(c)图像滤波后用ifft2得到全填充图像'); h=fspecial('gaussian',15,7);gs=imfilter(f,h);subplot 224;imshow(gs);title('(d)有填充时频率域中低通滤波后的图像');运行结果:例3.2 空间滤波和频率域滤波的比较。

clc,clear;close all;%空间滤波和频率域滤波比较f=imread('Fig0409(a)(bld).tif');f=tofloat(f); F=fft2(f);S=fftshift(log(1+abs(F)));subplot 121; imshow(f);title('(a)一幅灰度图像');subplot 122;imshow(S,[]);title('(b)该图像的傅里叶谱');h=fspecial('sobel');%生成sobel滤波器figure; subplot 221;freqz2(h);title('(a)相应于垂直sobel空间滤波器的频率域滤波器的绝对值');PQ=paddedsize(size(f));H=freqz2(h,PQ(1),PQ(2));H1=ifftshift(H);subplot 222;mesh(abs(H1)');title('(b)经函数ifftshift处理后的同一滤波器'); subplot 223;imshow(abs(H),[ ]);title('以图像方式展示两个滤波器');subplot 224;imshow(abs(H1),[ ]);title('以图像方式展示两个滤波器');gs=imfilter(f,h);%使用0填充图像边界gf=dftfilt(f,H1); figure;subplot 221;imshow(gs,[ ]);title('(a)用垂直Sobel模板在空间域对原图像滤波结果'); subplot 222;imshow(gf,[ ]);title('(b)用滤波器b在频率域中得到的结果');subplot 223;imshow(abs(gs),[ ]);title('(c)a的绝对值');subplot 224;imshow(abs(gf),[ ]);title('(d)b的绝对值');figure;%阈值处理,使主要边缘显示更为清晰subplot 121;imshow(abs(gs)>0.2*abs(max(gs(:))));title('(a)a图经阈值处理的二值图像');subplot 122;imshow(abs(gf)>0.2*abs(max(gf(:)))); title('(b)b图经阈值处理的二值图像');运行结果:d=abs(gs-gf);max(d(:)) min(d(:))例3.3 函数dftuv的使用。

clc,clear,close all;%函数dftuv的使用[U,V]=dftuv(8,5);DSQ=U.^2+V.^2fftshift(DSQ)D=hypot(U,V)timeit(@() U.^2+V.^2)timeit(@() hypot(U,V))运行结果:例3.4 低通滤波器。

clc,clear,close all;f=imread('Fig0413(a)(original_test_pattern).tif');[f,revertclass]=tofloat(f);PQ=paddedsize(size(f));[U,V]=dftuv(PQ(1),PQ(2));D=hypot(U,V);D0=0.05*PQ(2);F=fft2(f,PQ(1),PQ(2));%用于绘制频谱H=exp(-(D.^2)/(2*(D0^2)));g=dftfilt(f,H);g=revertclass(g);subplot 221;imshow(f);title('(a)原始图像');subplot 222;imshow(fftshift(H));title('(b)以图像形式显示的高斯低通滤波器');subplot 223;imshow(log(1+abs(fftshift(F))),[ ]);title('(c)图(a)的谱');subplot 224;imshow(g);title('(d)滤波后的图像');运行结果:例3.5 绘制线框图。

clc,clear,close all;H=fftshift(lpfilter('gaussian',500,500,50));%高斯低通滤波器subplot 221;mesh(double(H(1:10:500,1:10:500))); %生成线框图axis tight;%将轴的上下限设置为数据范围title('(a)使用函数mesh得到的图形');subplot 222;mesh(double(H(1:10:500,1:10:500)));colormap([0 0 0]);axis off;title('(b)去掉坐标轴和网格后的图形');subplot 223;mesh(double(H(1:10:500,1:10:500)));axis off;view(-25,30); %方位角-25,仰角30title('(c)使用函数view得到的不同透视图');subplot 224;mesh(double(H(1:10:500,1:10:500)));axis off;view(-25,0);title('(d)使用统一函数得到的另一透视图');%=============================figure; subplot 121;surf(double(H(1:10:500,1:10:500)));axis tight;title('(a)使用函数surf得到的图形');colormap(gray);axis off;subplot 122;surf(double(H(1:10:500,1:10:500)));axis tight; colormap(gray);axis off; shading interp;title('(b)使用shading interp命令得到的结果');运行结果:例3.6 高通滤波器。

clc,clear;close all;H=fftshift(hpfilter('ideal',500,500,50));subplot 231;mesh(double(H(1:10:500,1:10:500)));title('(a)理想高通滤波器透视图');axis tight; axis off;%colormap([0 0 0]);subplot 234;imshow(H,[ ]);title('(d)相应图像');H1=fftshift(hpfilter('btw',500,500,50));subplot 232;mesh(double(H1(1:10:500,1:10:500)));title('(b)巴特沃斯高通滤波器透视图');axis tight; axis off;%colormap([0 0 0]);subplot 235;imshow(H1,[ ]);title('(e)相应图像');H2=fftshift(hpfilter('gaussian',500,500,50));subplot 233;mesh(double(H2(1:10:500,1:10:500)));title('(c)高斯高通滤波器透视图');axis tight;axis off;%colormap([0 0 0]);subplot 236;imshow(H2,[ ]);title('(f)相应图像');运行结果:例3.7 高通滤波。

clc,clear,close all;f=imread('Fig0413(a)(original_test_pattern).tif');PQ=paddedsize(size(f)); D0=0.05*PQ(1);H=hpfilter('gaussian',PQ(1),PQ(2),D0); g=dftfilt(f,H);subplot 121; imshow(f);title('(a)原始图像');subplot 122;imshow(g);title('(b)高斯高通滤波后的结果');figure;imshow(f+g); title('(c)原图像高斯增强后的结果');运行结果:例3.8 联合使用高频强调滤波和直方图均衡。

相关主题