当前位置:文档之家› (整理)实验三 频域增强.

(整理)实验三 频域增强.

实验三傅里叶变换及频域增强一.实验内容:1、傅里叶变换性质2、低通滤波3、高通滤波二.实验目的:1、理解傅里叶变换的原理,掌握傅里叶变换的性质2、掌握频域平滑原理,学会用理想低通滤波器、Butterworth低通滤波器、高斯低通滤波器进行图像处理。

3、掌握频域锐化原理,学会用理想高通滤波器、Butterworth高通滤波器、高斯高通滤波器进行图像处理。

三.实验步骤:一、傅里叶变换性质1.首先构造一幅黑白二值图像,在128×128的黑色背景中心产生一个4×4的白色方块,对其进行傅里叶变换;(Matlab中用fft2实现2D傅里叶变换)2.把低频分量移到图象中心,而把高频分量移到四个角上;(方法有两种:其一,在FT以前对测试图象逐点加权(-1)^(i+j);其二,利用FFTSHIFT函数);3.利用图象增强中动态范围压缩的方法增强2DFT;(Y=C*log(1+abs (X)));4.构造一幅黑白二值图像,在128×128的黑色背景中令第32行至36行、第32列至第36列的值为1(即产生一个4×4的白色方块),对其进行傅里叶变换;5.将上图旋转300,再进行傅里叶变换(imrotate)6.构造二幅黑白二值图像,在128×128的黑色背景中分别令第60行至68行、第60列至第68列的值为1,第64行至65行、第64列至第65列的值为1产生两幅图像,分别对这两幅图像进行傅里叶变换程序如下:clear all;close all;clc;f=zeros(128);f(63:66,63:66)=1;g=fft2(f);m=fftshift(g);y=log(1+abs(m));f1=zeros(128);f1(32:36,32:36)=1;h=fft2(f1);i=imrotate(h,30);j=fft2(i);f2=zeros(128);f2(60:68,60:68)=1;k=fft2(f2);f3=zeros(128);f3(64:65,64:65)=1;l=fft2(f3);figure;%1subplot(2,2,1);imshow(f);title('template f');subplot(2,2,2);imshow(g);title('g=fft2(f)');subplot(2,2,3);imshow(m);title('m=fftshift(g)');subplot(2,2,4);imshow(y);title('y=log(1+abs(m))');figure;%2subplot(2,2,1);imshow(f);title('template f');subplot(2,2,2);imshow(g);title('g=fft2(f)');subplot(2,2,3);imshow(f1);title('template f1');subplot(2,2,4);imshow(h);title('h=fft2(f1)');figure;%3subplot(2,2,1);imshow(f);title('template f');subplot(2,2,2);imshow(g);title('g=fft2(f)');subplot(2,2,3);imshow(i);title('i=imrotate(h,30)');subplot(2,2,4);imshow(j);title('j=fft2(i)');figure;%4subplot(2,3,1);imshow(f);title('template f');subplot(2,3,2);imshow(g);title('g=fft2(f)');subplot(2,3,3);imshow(f2);title('template f2');subplot(2,3,4);imshow(k);title(' k=ff2(f2)');subplot(2,3,5);imshow(f3); title('template f3');subplot(2,3,6);imshow(l);title('l=fft2(f3)');一、傅里叶变换性质1、将前三步的图像在一个图像窗口显示,并且比较图像中心平移前后有什么区别,取对数前后又有什么区别;图像分析:低频分量移到图象中心,而高频分量移到四个角上。

经过对数变换后的图像,低频像素值变为0,高频像素值变为1.template f g=fft2(f)m=fftshift(g)y=log(1+abs(m))2、将第1步和第4步的原图像及傅里叶变换后的图像在同一个图像窗口显示,比较其傅里叶变换后的图像,说明其中的原理;图像分析:图像经过傅里叶变换后,得到的是图像的频域,也就是频率成分;这个频率成分表示的意义就是相邻像素之间数值的变化,也就是说像素在空间上的变化越快,它对应在频域上的数值就越大;如果频谱图中亮的点数多,那么实际图像一定是尖锐的,边界分明且边界两边像素差异较大的。

对频谱移频到原点以后,可以看出图像的频率分布是以原点为圆心,对称分布的。

template f g=fft2(f)template f1h=fft2(f1)3、将第1步和第5步的原图像及傅里叶变换后的图像在同一个图像窗口显示,比较其傅里叶变换后的图像,说明其中的原理;template f g=fft2(f)i=imrotate(h,30)j=fft2(i)4、将第1步和第6步的原图像及傅里叶变换后的图像在同一个图像窗口显示,比较其傅里叶变换后的图像,说明其中的原理。

template f g=fft2(f)template f2 k=ff2(f2)template f3l=fft2(f3)二、低通滤波1、理想低通滤波器(1) 读取图像Fig4.11(a).jpg(2) 对图像逐点加权(-1)^(i+j)再进行傅里叶变换,使频域原点在图像区域的中心(或者先对图像进行傅里叶变换,在Matlab中利用FFTSHIFT函数使频域原点在图像区域的中心(3) 设计理想低通滤波器,取D0=5,15,30,80,230进行滤波(4) 进行傅里叶逆变换,取实部,乘以(-1)^(i+j),(或者在Matlab 中利用ifftshift,再利用ifft2进行傅里叶逆变换),(5) 在同一图像窗口下显示原图像及D0=5,15,30,80,230进行滤波结果图像。

(Matlab中imshow(uint8(result image)))程序如下:clear all;close all;clc;f=imread('Fig4.11(a).jpg');s=fftshift(fft2(f));[m,n]=size(s);a=round(m/2);b=round(n/2);d1=5;d2=15;d3=30;d4=80;d5=230;for i=1:mfor j=1:nd=sqrt((i-a)^2+(j-b)^2);if d<=d1 h1=1;else h1=0;endif d<=d2 h2=1;else h2=0;endif d<=d3 h3=1;else h3=0;endif d<=d4 h4=1;else h4=0;endif d<=d5 h5=1;else h5=0;ends1(i,j)=h1*s(i,j);s2(i,j)=h2*s(i,j);s3(i,j)=h3*s(i,j);s4(i,j)=h4*s(i,j);s5(i,j)=h5*s(i,j); end endsubplot(2,3,1),imshow(f),title('原始图像');subplot(2,3,2),imshow(uint8(real(ifft2(ifftshift(s1))))),title('d =5');subplot(2,3,3),imshow(uint8(real(ifft2(ifftshift(s2))))),title('d =15');subplot(2,3,4),imshow(uint8(real(ifft2(ifftshift(s3))))),title('d =30');subplot(2,3,5),imshow(uint8(real(ifft2(ifftshift(s4))))),title('d =80');subplot(2,3,6),imshow(uint8(real(ifft2(ifftshift(s5))))),title('d =230');原始图像d=5d=15d=30d=80d=230可见,由理想低通滤波器所得到的处理结果,除了模糊外,还有明显的振铃现象。

这种现象产生的原因可以通过卷积定理来解释。

由卷积定理可知,傅里叶变换域的乘积关系与空间域的卷积关系相对应:(a)原图像 (b)-(f)分别用半径值为5,15,30,80和230截止频率进行理想低通滤波的结果.由这些滤波器滤除的能量分别为8%,(c)到(e)有振铃现象(f)基本与原图相同,表明图像几乎没有边缘信息包含在高频端0.5%的谱能量内.由(b)可以发现,图像中多数细节信息包含在被滤除掉的8%的能量之内.随着滤波器),(),(),(y x f y x h y x g *=式中f(x,y), g(x,y), h(x,y)分别是F(u,v), G(u,v),H(u,v)的傅里叶反变换。

2、Butterworth低通滤波(1) 读取图像Fig4.11(a).jpg(2) 对图像逐点加权(-1)^(i+j)再进行傅里叶变换,使频域原点在图像区域的中心(或者先对图像进行傅里叶变换,在Matlab中利用FFTSHIFT函数使频域原点在图像区域的中心(3) 设计二阶Butterworth低通滤波器,并取D0=5,15,30,80,230分别进行滤波(4) 进行傅里叶逆变换,取实部,乘以(-1)^(i+j),(或者在Matlab 中利用ifftshift,再利用ifft2进行傅里叶逆变换),(5) 在同一图像窗口下显示原图像及D0=5,15,30,80,230进行滤波结果图像。

(Matlab中imshow(uint8(result image)))clear all;close all;clc;f=imread('Fig4.11(a).jpg');s=fftshift(fft2(f));[m,n]=size(s);a=round(m/2);b=round(n/2);d1=5;d2=15;d3=30;d4=80;d5=230;for i=1:mfor j=1:nd=sqrt((i-a)^2+(j-b)^2);h1=1/((1+(d/d1)^4));s1(i,j)=h1*s(i,j);h2=1/((1+(d/d2)^4));s2(i,j)=h2*s(i,j);h3=1/((1+(d/d3)^4));s3(i,j)=h3*s(i,j); h4=1/((1+(d/d4)^4)); s4(i,j)=h4*s(i,j); h5=1/((1+(d/d5)^4)); s5(i,j)=h5*s(i,j); end endsubplot(2,3,1),imshow(f),title('原始图像');subplot(2,3,2),imshow(uint8(real(ifft2(ifftshift(s1))))),title('d =5');subplot(2,3,3),imshow(uint8(real(ifft2(ifftshift(s2))))),title('d =15');subplot(2,3,4),imshow(uint8(real(ifft2(ifftshift(s3))))),title('d =30');subplot(2,3,5),imshow(uint8(real(ifft2(ifftshift(s4))))),title('d =80');subplot(2,3,6),imshow(uint8(real(ifft2(ifftshift(s5))))),title('d =230');原始图像d=5d=15d=30d=80d=230一个n 阶的布特沃斯滤波器的传递函数为:一个n 阶的布特沃斯滤波器的传递函数为:[]nD v u D v u H 20/),(11),(+=122二阶巴特沃斯低通滤波器在不同截止频率下所对应的处理结果,与理想低通滤波不同,没有可见的振铃现象;图像模糊程度减少。

相关主题