资源描述:
《频域分析及图像的频域处理.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、频域分析及图像的频域处理%1.实验目的1.了解离散傅立叶变换及离散余弦变换的基本原理;2.掌握进行FFT及逆变换的方法;3.了解图像在频域屮处理方法,应用MATLAB语言作简单的低通滤波器。4.有能力的同学可用VC实现傅立叶变换%1.实验原理1.傅立叶变换的基本知识在图像处理的广泛应用领域屮,傅立叶变换起着非常重要的作用,具体表现在包括图像分析、图像增强及图像压缩等方面。假设Hx,y)是一个离散空间屮的二维函数,则该函数的二维傅立叶变换的定义如下:(2-1)(2-2)P[f(^y)]=F(w,v)=工工TO,y)eMva
2、=0y=0F”仏P)1=/(x,y)=Z吩哼MNU=Qv=0离散傅立叶反变换的定义如下:式中,式中:u,x=0,1,2,...»M-l;v,y=0,1,2,N-l;x,y为时域变景,u,v为频域变量。像一维离散傅立叶变换一样,系数1/MN可以在正变换或逆变换屮,也可以在正变换和逆变换前分别乘以系数"J顾,只要两式系数的乘积等于1/MN即可。二维离散苗数的傅立叶频谱、相位谱和能量谱分别为(p{u.v)=arctan/(S)(2-4)(2-5)IF(W,V)1=JF(s)+/2(s)疋@川)=/?2(伉°)+厂@川)式中,R
3、(u,”)和/(仏y)分别是F(“,叭的实部和虚部。2•离散余弦变换(DiscreteCosineTransform,DCT)离散余弦变换核为余弦隊【数。DCT除了具有一般的正交变换性质外,它的变换阵的基向量能彳14好地描述人类语音信号和图像信号的相关特征。因此,在对语音信号、图像信号的变换中,DCT变换被认为是一种准最佳变换。近年颁布的一系列视频压缩编码的国际标准建议中(JPG图像格式就是基于DCT),都把DCT作为其屮的一个基本处理模块。二维DCT。其正变换核为(2-6)g(x,y,u,v)=C(w)C(v)cos"
4、台;;也cosJ"JMN2M2N式中,C(u)和C(v)的定义同式(7・48);x,u=0,y,v=0,1,2,N-h二维DCT定义如下:设f(x,y)为MXN的数字图像矩阵,则A/-LV-1口、2f壬仃w—、(2兀+1)肋…(2y+l)必飞肓LL/UoT)C(w)C(v)cos——一“dMNA=oy=o2MCOS2N(2-7)式屮:x,w=0,1,2,...»M—1;y,v=0,1,2,N—10二维DCT逆变换定义如下:2Nfg沪羔且乞C(W)C(v)F(W,v)cos(2X^U7rcos(2};+i)V7ryJMNw
5、=Ov=o2M(2-8)式中:x,h=0,1,2,...»M~1;yv=0,1,2,N—10%1.实验提示1.MATLAB提供的快速傅立叶变换函数m2fft2函数用于计算二维快速傅立叶变换,其语法格式为:B=fft.2(l)B=fft2(I)返冋图像I的二维fft变换矩阵,输入图像I和输出图像B大小相同。例如,计算图像的二维傅立叶变换,并显示其幅值的结果,其命令格式如Kloadimdemossaturn2imshow(saturn2)B=fftshift(fft2(saturn2));imshow(log(abs(B)
6、),[],'notruesi^e')fftshiftMATLAB提供的fftshift函数用于将变换后的图像频谱屮心从矩阵的原点移到炬阵的中心,其语法格式为:B=fftshift(T)对于矩阵I,B=fftshi氏⑴将I的一、三象限和二、四象限进行互换。ifTt2ifft2函数用于计算图像的二维傅立叶反变换,其语法格式为:B=ifft2(I)B=ifft2(A)返回图像I的二维傅立叶反变换矩阵,输入图像I和输出图像B大小相同。其语法格式含义与fft2係
7、数的语法格式相同,可以参考fft2函数的说明。1.简单低通滤波器的设
8、计一个图像经过傅立叶变换后,就从空域变到了频域,因此我们可以用信号处理屮对于频域信号的处理方法对一幅图像进行处理。比如对图像进行低通滤波等。虽然在计算机屮必定能够模拟一个锐截止频率的理想低通滤波器,但它们不能用电子元件来实现。实际屮比较常用的低通滤波器有:巴特沃思(Buttenvorth)滤波器、指数滤波器(ELPF)、梯形低通滤波器等。在实验屮我们设计一个理想的低通滤波器。设计理想的低通滤波器由其定义可知只要设计一个与频域图像人小完全相同的矩阵。在某一个域值内该矩阵的值为1,其余为0即可。例:若图像的人小为128幻28
9、,则可以这样设计一个低通滤波器:H二zeros(128);H(32:96,32:96)二1;%此处的范围是人为取定的,可以根据需要更改。若图像矩阵I的傅立叶变换MB(lL经川fftshift将频谱屮心移至矩阵的屮心),则対这幅图像做低通滤波,再做傅立叶逆变换命令为LOWPASS=B.*H;%此处设变换后的矩阵为LOW