实验三傅里叶变换及频域增强一.实验内容二.实验目的三.实验步骤3.1傅里叶变换性质3.2低通滤波3.3高通滤波二.实验目的1、理解傅里叶变换的原理,掌握傅里叶变换的性质2、掌握频域平滑原理,学会用理想低通滤波器、Butterworth低通滤波器、高斯低通滤波器进行图像处理。3、掌握频域锐化原理,学会用理想高通滤波器、Butterworth高通滤波器、高斯高通滤波器进行图像处理。三.实验步骤3.1傅里叶变换性质一个图像尺寸为的函数的离散傅里叶变换有下列等式给出:其中,相应地,可以通过傅里叶反变换求的,由表达式:其中,通常在进行傅里叶变换之前用乘以输入的MN(,)fxy112(//)001(,)(,)MNjuxMvyNxyFuvfxyeMN0,1,2,1.0,1,2,1uMvN…,?,(,)fxy112(//)001(,)(,)MNjuxMvyNuvfxyFuveMN0,1,2,1.0,1,2,1xMyN…,?,……(1)xy图像函数。由于指数的性质,有以下表达式:该表达式说明,用乘以将原点即被设置在和。实验步骤:1.首先构造一幅黑白二值图像,在128×128的黑色背景中心产生一个4×4的白色方块,对其进行傅里叶变换;(Matlab中用fft2实现2D傅里叶变换)2.把低频分量移到图象中心,而把高频分量移到四个角上;(方法有两种:其一,在FT以前对测试图象逐点加权(-1)^(i+j);其二,利用FFTSHIFT数);3.利用图象增强中动态范围压缩的方法增强2DFT;(Y=C*log(1+abs(X)));(,)(1)(/2,/2)xyfxyFuMvN(1)xy(,)fxy(,)Fuv(0,0)F/2uM/2vN4构造一幅黑白二值图像,在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产生两幅图像,分别对这两幅图像进行傅里叶变换.用matlab编程,其程序如下:•clearall;•closeall;•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;g2=imrotate(f1,30,'bilinear','crop');g3=fft2(g2);g1=fft2(f1);f3=zeros(128);f4=zeros(128);f3(60:68,60:68)=1;f4(64:65,64:65)=1;g4=fft2(f3);g5=fft2(f4);subplot(2,2,1),imshow(f);title('原始图像');subplot(2,2,2),imshow(g);title('未平移傅里叶变换');subplot(2,2,3),imshow(m);title('低频及高频转移');subplot(2,2,4),imshow(y);title('对数变换');figure,subplot(2,2,1),imshow(f);title('原始图像');subplot(2,2,2),imshow(fftshift(abs(g)),[-1,5]);title('平移后傅里叶变换');subplot(2,2,3),imshow(f1);title('原始图像');subplot(2,2,4),imshow(fftshift(abs(g1)),[-1,5]);title('平移后傅里叶变换');figure,subplot(2,2,1),imshow(f);title('原始图像');subplot(2,2,2),imshow(fftshift(abs(g)),[-1,5]);title('平移后傅里叶变换');subplot(2,2,3),imshow(g2);title('旋转30');subplot(2,2,4),imshow(fftshift(abs(g3)),[-1,5]);title('平移后傅里叶变换');figure,subplot(2,3,1),imshow(f4);title('原始图像');subplot(2,3,2),imshow(fftshift(abs(g5)),[-1,5]);title('平移后傅里叶变换');subplot(2,3,3),imshow(f);title('1原始图像');subplot(2,3,4),imshow(fftshift(abs(g)),[-1,5]);title('平移后傅里叶变换');subplot(2,3,5),imshow(f3);title('原始图像');subplot(2,3,6),imshow(fftshift(abs(g4)),[-1,5]);title('平移后傅里叶变换');图像分析:从上图中,我们看出,图像平移前低频成分在四角,而平移后低频成分在图像中心,高频成分在四角。对数变换前,图像的高、低频成分不太明显,对数变换后使得低频成分变得更大,高频成分变的更小,从而使对比度拉伸。图像分析:图像中小方块的平移不改变其频率成分及幅度。原因:由平移性质:可知,平移不改变其傅里叶变换的幅值。00002(//)002(//)00(,)(,)(,)(,)juxMvyNjuxMvyNfxyeFuuvvfxxyyFuve图像分析:图中小方块旋转后,其傅里叶频谱也旋转同样的角度。图像分析:方块越小,经过傅里叶变换后的之后的方块越大;反之,方块越大,经过傅里叶变换后的之后的方块越小。原因:图中暗的点数越多,实际图像越柔和,反之,图中亮的点数越多,实际图像一定是尖锐的。图像越尖锐变化越剧烈的信号总包含着更多的频率成分。3.2低通滤波1理想低通滤波器二维理想低通滤波器,其变换函数为:其中,例3.21读取图像Fig4.11(a).jpg,设计理想低通滤波器,取D0=5,15,30,80,230,在同一图像窗口下显示原图像及D0=5,15,30,80,23,进行滤波结果处理。用matlab编程,程序如下:clearall;closeall;clc;001,(,)(,)0,(,)DuvDHuvDuvD221/2(,)[(/2)(/2)]DuvuMvNf=imread('H:\实验三频域增强\Fig4.11(a).jpg');s=fftshift(fft2(f));[m,n]=size(s);a=m/2;b=n/2;d1=5;d2=15;d3=30;d4=80;d5=230;fori=1:mforj=1:nd=sqrt((i-a)^2+(j-b)^2);ifd=d1h1=1;elseh1=0;endifd=d2h2=1;elseh2=0;endifd=d3h3=1;elseh3=0;endifd=d4h4=1;elseh4=0;endifd=d5h5=1;elseh5=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);endendsubplot(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');结果如下:2Butterworth低通滤波n级Butterworth低通滤波器的传递函数的定义为:例3.22读取图像Fig4.11(a).jpg,设计butterworth低通滤波器,取D0=5,15,30,80,230,在同一图像窗口下显示原图像及D0=5,15,30,80,23,进行滤波结果处理。(n=2)用matlab编程,程序如下:clearall;closeall;clc;f=imread('H:\实验三频域增强\Fig4.11(a).jpg');201(,)1[(,)/]nHuvDuvDs=fftshift(fft2(f));[m,n]=size(s);a=m/2;b=n/2;d1=5;d2=15;d3=30;d4=80;d5=230;fori=1:mforj=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);endendsubplot(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');结果如下:3高斯低通滤波器高斯低通滤波器的表达式定义为:例3.23读取图像Fig4.11(a).jpg,设计高斯低通滤波器,取D0=5,15,30,80,230,在同一图像窗口下显示原图像及D0=5,15,30,80,23,进行滤波结果处理。用matlab编程如下:clearall;closeall;clc;f=imread('H:\实验三频域增强\Fig4.11(a).jpg');s=fftshift(fft2(f));[m,n]=size(s);a=m/2;b=n/2;d1=5;d2=15;d3=30;d4=80;d5=230;fori=1:mforj=1:nd=sqrt((i-a)^2+(j-b)^2);220(,)/2(,)DuvDHuveh1=exp(-1/2*(d^2/d1^2));s1(i,j)=h1*s(i,j);h2=exp(-1/2*(d^2/d2^2));s2(