当前位置:文档之家› 数字图像处理之频率滤波

数字图像处理之频率滤波

实验四、频域滤波一、实验目的1.了解频域滤波的方法;2.掌握频域滤波的基本步骤。

二、实验内容1.使用二维快速傅立叶变换函数fft2( )及其反变换函数ifft2( )对图象进行变换;2.自己编写函数生成各种频域滤波器;3.比较各种滤波器的特点。

三、实验步骤1.图象的傅立叶变换a.对图象1.bmp 做傅立叶变换。

>> x=imread(‘1.bmp’);f=fft2(x);imshow(real(f)) %显示变换后的实部图像figuref1=fftshift(f);imshow(real(f1))变换后的实部图像中心平移后图像b.对图象cameraman.tif 进行傅立叶变换,分别显示变换后的实部和虚部图象。

思考:对图象cameraman.tif 进行傅立叶变换,并显示其幅度谱|F(U,V)|。

结果类似下图。

显示结果命令imshow(uint8(y/256))程序如下:x=imread('cameraman.tif');f=fft2(x);f1=fftshift(f);y0=abs(f);y1=abs(f1);subplot(1,3,1),imshow(x)title('sourceimage')subplot(1,3,2),imshow(uint8(y0/256))title('F|(u,v)|')subplot(1,3,3),imshow(uint8(y1/256))title('中心平移')2.频域滤波的步骤a.求图象的傅立叶变换得F=fft2(x)b.用函数F=fftshit(F) 进行移位c.生成一个和F 一样大小的滤波矩阵H .d.用F和H相乘得到G , G=F.*He.求G的反傅立叶变换得到g 就是我们经过处理的图象。

这其中的关键就是如何得到H 。

3.理想低通滤波器a.函数dftuv( )在文件夹中,它用生成二维变量空间如:[U V]=dftuv(11,11)b.生成理想低通滤波器>>[U V]=dftuv(51,51);D=sqrt(U.^2+V.^2);H=double(D<=15);Mesh(U,V,H)c.应用以上方法,对图象cameraman.tif进行低通滤波;>> close allQ=0.7F=imread('cameraman.tif')[U V]=dftuv(size(F,1),size(F,2));D=sqrt(U.^2+V.^2);H=double(D<= size(F,1)/2*Q); %修改系数Q为0.5,0.3,0.2FF=fft2(F);G=FF.*H;imshow(real(fftshift(FF)))figureimshow(real(fftshift(G)))g=real(ifft2(G));figureimshow(uint8(g))在以原点为圆心,以D0为半径的圆内无衰减的通过所有频率而在该圆外切断所有频率的二维低通滤波器,称为理想低通滤波器。

思考:观察理想低通滤波器不同滤波半径对滤波结果的影响。

即系数Q分别为0.7、0.5、0.3、0.2时,结果如何?并加以解释说明。

close allF=imread('cameraman.tif')[U V]=dftuv(size(F,1),size(F,2));D=sqrt(U.^2+V.^2);H=double(D<= size(F,1)/2*Q1); %修改系数Q为0.5,0.3,0.2 FF=fft2(F);G=FF.*H;subplot(4,3,1),imshow(real(fftshift(FF)))subplot(4,3,2),imshow(real(fftshift(G)))title('Q=0.7')g=real(ifft2(G));subplot(4,3,3),imshow(uint8(g))Q2=0.5F=imread('cameraman.tif')[U V]=dftuv(size(F,1),size(F,2));D=sqrt(U.^2+V.^2);H=double(D<= size(F,1)/2*Q2); %修改系数Q为0.5,0.3,0.2 FF=fft2(F);G=FF.*H;subplot(4,3,4),imshow(real(fftshift(FF)))subplot(4,3,5),imshow(real(fftshift(G)))title('Q=0.5')g=real(ifft2(G));subplot(4,3,6),imshow(uint8(g))Q3=0.3F=imread('cameraman.tif')[U V]=dftuv(size(F,1),size(F,2));D=sqrt(U.^2+V.^2);H=double(D<= size(F,1)/2*Q3); %修改系数Q为0.5,0.3,0.2 FF=fft2(F);subplot(4,3,7),imshow(real(fftshift(FF)))subplot(4,3,8),imshow(real(fftshift(G)))title('Q=0.3')g=real(ifft2(G));subplot(4,3,9),imshow(uint8(g))Q4=0.2F=imread('cameraman.tif')[U V]=dftuv(size(F,1),size(F,2));D=sqrt(U.^2+V.^2);H=double(D<= size(F,1)/2*Q4); %修改系数Q为0.5,0.3,0.2 FF=fft2(F);G=FF.*H;subplot(4,3,10),imshow(real(fftshift(FF)))subplot(4,3,11),imshow(real(fftshift(G)))title('Q=0.2')g=real(ifft2(G));subplot(4,3,12),imshow(uint8(g))随着Q值越小,即滤波半径越小,滤波后的图像越模糊,且滤波半径变小会出现振铃效应。

随着滤波器半径的增大,滤除的功率越来越少,导致模糊也越来越减弱。

4.巴特沃兹低通滤波器>> close allf=imread('cameraman.tif');PQ=size(f);[U V]=dftuv(PQ(1),PQ(2));D0=0.07*PQ(2);F=fft2(f,PQ(1),PQ(2)); % 与F=fft2(f)相同H=exp(-(U.^2+V.^2)/(2*(D0^2))); %高斯低通mesh(U,V,H)figureG=F.*H;imshow(real(fftshift(F))) figureimshow(real(fftshift(G))) g=real(ifft2(G));figureimshow(uint8(g))思考:使用二阶巴特沃兹滤波器对图象cameraman.tif进行低通滤波。

H=1./(1+(D./d0).^(2*n));d0取15、30、80,n=2表示二阶)close alld0=30;n=2;f=imread('cameraman.tif');PQ=size(f);[U V]=dftuv(PQ(1),PQ(2));D=sqrt(U.^2+V.^2);F=fft2(f,PQ(1),PQ(2)); % 与F=fft2(f)相同H=1./(1+(D./d0).^(2*n)) %d0取15、30、80,n=2表示二阶) %高斯低通mesh(U,V,H)figuresubplot(1,3,1)G=F.*H;imshow(real(fftshift(F)))subplot(1,3,2)imshow(real(fftshift(G)))g=real(ifft2(G));subplot(1,3,3)imshow(uint8(g))5. 高通滤波器(相当于锐化)a.我们可以参照理想低通滤波器的思路,得到>>[U V]=dftuv(51,51);D=sqrt(U.^2+V.^2);H=double(D>=115);Mesh(U,V,H)b.对图象cameraman.tif进行高通滤波close allx=imread('cameraman.tif');[U V]=dftuv(size(x,1),size(x,2));D=sqrt(U.^2+V.^2);H=double(D>= size(x,1)/2*0.4);F=fft2(x);G=F.*H;imshow(real(fftshift(F)))figureimshow(real(fftshift(G)))g=real(ifft2(G));figureimshow(uint8(g))w=histeq(g);figureimshow(w)高通滤波器会衰减傅里叶变换中的低频分量而不会扰乱高频信息。

D0越高,图像边缘越清晰,失真越小。

思考:使用高斯高通滤波器对图象cameraman.tif进行高通滤波。

H1=1-exp(-(U.^2+V.^2)./(2*(D0^2)));close allx=imread('cameraman.tif');[U V]=dftuv(size(x,1),size(x,2));D0=15H=1-exp(-(U.^2+V.^2)./(2*(D0^2))); F=fft2(x);G=F.*H;g=real(ifft2(G));subplot(3,2,1),imshow(uint8(g))title('D0=15')w=histeq(g);subplot(3,2,2),imshow(w)D0=30H=1-exp(-(U.^2+V.^2)./(2*(D0^2))); F=fft2(x);G=F.*H;g=real(ifft2(G));subplot(3,2,3),imshow(uint8(g))title('D0=30')w=histeq(g);subplot(3,2,4),imshow(w)D0=80H=1-exp(-(U.^2+V.^2)./(2*(D0^2))); F=fft2(x);G=F.*H;g=real(ifft2(G));subplot(3,2,5),imshow(uint8(g))title('D0=80')w=histeq(g);subplot(3,2,6),imshow(w)用高斯高通滤波器对图像进行滤波后,相对于前面滤波器,图像会更加平滑。

相关主题