傅里叶变换及图像的频域处理

  • 格式:doc
  • 大小:483.50 KB
  • 文档页数:20

燕山大学课程设计说明书题目:傅里叶变换及图像的频域处理学院(系):里仁学院电气工程系年级专业:生物医学工程10-1班学号: 101203041007 学生姓名:赵林静指导教师:孟辉教师职称:讲师燕山大学课程设计(论文)任务书院(系):里仁学院电气工程系基层教学单位:生物医学工程说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。

2013年12 月 5 日目录一绪论 (2)二设计目的 (4)三设计原理 (4)3.1傅里叶变换的基本知识 (4)3.2MATLAB提供的快速傅里叶变换 (6)3.3简单低通滤波器的设计 (7)四设计要求 (10)4.1理想低通滤波器的设计 (11)4.2理想高通滤波器的设计 (13)五总结 (17)六参考文献 (17)绪论MATLAB的英文全称Matrix Laboratory(矩阵实验室).一开始它是一种专门用于矩阵数值计算的软件。

从这一点可以看出,它在矩阵运算方面有自己的特点。

实际上,MA TLAB 中的绝大多数运算都是通过矩阵这一形式完成的。

从理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理时,首先必须对其在空间和亮度上进行数字化。

图像处理技术的发展大致经历了处创期,发展期,普及期和实用化期4个阶段。

初创期开始于20世纪60年代,当时的图像采用像素型光栅进行扫描显示,大多采用中,大型机对其处理。

20世纪90年代是图像处理技术的实用化时期,图像处理的信息量巨大,对处理器速度的要求极高。

傅立叶变换是数字信号处理领域一种很重要的算法。

要知道傅立叶变换算法的意义,首先要了解傅立叶理的意义。

傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。

而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。

和傅立叶变换算法对应的是反傅立叶变换算法。

该反变换从本质上说也是一种累处理,这样就可以将单独改变的正弦波信号转换成一个信号。

因此,可以说,傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。

最后还可以利用傅立叶反变换将这些频域信号转换成时域信号。

从现代数学的眼光来看,傅里叶变换是一种特殊的积分变换。

它能将满足一定条件的某个函数表示成正弦基函数的线性组合或者积分。

在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。

傅立叶变换及图像的频域处理一、设计目的1、理解离散傅立叶变换的基本原理;2、掌握应用MATLAB 语言进行FFT 及逆变换的方法;3、熟悉图像在频域中处理方法,应用MATLAB 语言作简单的低通滤波器。

二、设计原理1、傅立叶变换的基本知识在图像处理的广泛应用领域中,傅立叶变换起着非常重要的作用,具体表现在包括图像分析、图像增强及图像压缩等方面。

假设f (x , y )是一个离散空间中的二维函数,则该函数的二维傅立叶变换的定义如下:11(2/)(2/)00(,)(,)M N j M pm j N qnm n F p q f m n e e ππ----===∑∑ p=0,1…M-1q=0,1…N-1 (6.1)或 12111201(,)(,)M N j m j n m n F f m n e e ωωωω----===∑∑ p=0,1…M-1 q=0,1…N-1(6.2)离散傅立叶反变换的定义如下:11(2/)(2/)001(,)(,)M N j M pm j N qn p q f m n F p q e e MN ππ--===∑∑m=0,1…M-1n=0,1…N-1 (6.3)F (p , q )称为f (m , n )的离散傅立叶变换系数。

这个式子表明,函数f (m , n )可以用无数个不同频率的复指数信号和表示,而在频率(w 1,w 2)处的复指数信号的幅度和相位是F (w 1,w 2)。

例如,函数f (m , n )在一个矩形区域内函数值为1,而在其他区域为0,如图所示。

了简便起见,假设f (m , n )为一个连续函数,则f (m , n )的傅立叶变换的幅度值(即12(,)F ωω)显示为网格图,如图所示。

将傅立叶变换的结果进行可视化的另一种方法是用图像的方式显示变换结果的对数幅值12log (,)F ωω,如图所示。

几种简单函数的傅立叶变换的频谱可以直观的表示为图所示的样子。

2、MATLAB提供的快速傅立叶变换函数(1)fft2fft2函数用于计算二维快速傅立叶变换,其语法格式为:B = fft2(I)B = fft2(I)返回图像I的二维fft变换矩阵,输入图像I和输出图像B大小相同。

例如,计算图像的二维傅立叶变换,并显示其幅值的结果,如图所示,其命令格式如下load imdemos saturn2imshow(saturn2)B = fftshift(fft2(saturn2));imshow(log(abs(B)), [ ], ‘notruesize’)(2) fftshiftMATLAB 提供的fftshift 函数用于将变换后的图像频谱中心从矩阵的原点移到矩阵的中心,其语法格式为:B = fftshift(I)对于矩阵I ,B = fftshift(I)将I 的一、三象限和二、四象限进行互换。

(3) ifft2ifft2函数用于计算图像的二维傅立叶反变换,其语法格式为:B = ifftn(I)B = ifftn(I)返回图像I 的二维傅立叶反变换矩阵,输入图像I 和输出图像B 大小相同。

其语法格式含义与fft2函数的语法格式相同,可以参考fft2函数的说明。

3、简单低通滤波器的设计一个图像经过傅立叶变换后,就从空域变到了频域,因此我们可以用信号处理中对于频域信号的处理方法对一幅图像进行处理。

比如对图像进行低通滤波等。

一个二维的理想低通滤波器(ILPF ),它的传递函数由下式确定:⎩⎨⎧>≤=00),(0),(1),(D v u D D v u D v u H 若若(6.4)式中D0是一个规定的非负的量,称为截止频率,虽然在计算机中必定能够模拟一个锐截止频率的理想低通滤波器,但它们不能用电子元件来实现。

实际中比较常用的低通滤波器有:巴特沃思(Butterworth )滤波器、指数滤波器(ELPF )、梯形低通滤波器等。

在实验中我们设计一个理想的低通滤波器。

设计理想的低通滤波器由其定义可知只要设计一个与频域图像大小完全相同的矩阵。

在某一个域值内该矩阵的值为1,其余为0即可。

例:若图像的大小为128*128,则可以这样设计一个低通滤波器:H=zeros(128);H(32:96, 32:96)=1; %此处的范围是人为取定的,可以根据需要更改。

若图像矩阵I的傅立叶变换是B(已经用fftshift将频谱中心移至矩阵的中心),则对这幅图像做低通滤波,再做傅立叶逆变换命令为LOWPASS=B.* H; %此处变换后的矩阵为LOWPASS,另注意这儿是矩阵的点乘。

C=ifft2(LOWPASS);imshow(abs(C))参考代码实现:I=imread(‘guzhe.jpg'’); %读入原图像文件imshow(I); %显示原图像fftI=fft2(I); %二维离散傅立叶变换sfftI=fftshift(fftI); %直流分量移到频谱中心RR=real(sfftI); %取傅立叶变换的实部II=imag(sfftI); %取傅立叶变换的虚部A=sqrt(RR.^2+II.^2);%计算频谱幅值A=(A-min(min(A)))/(max(max(A))-min(min(A)))*225;%归一化figure; %设定窗口imshow(A); %显示原图像的频谱2.理想低通滤波器参考代码实现:I = imread(' guzhe.jpg'');[f1,f2] = freqspace(size(I),'meshgrid');Hd = ones(size(I));r = sqrt(f1.^2 + f2.^2);%0.1Hd(r>0.1) = 0;Y=fft2(double(I));Y=fftshift(Y);Ya=Y.*Hd;¨Ya=ifftshift(Ya);Ia01=ifft2(Ya);%0.2Hd(r>0.2) = 0; ÷Y=fft2(double(I));Y=fftshift(Y);Ya=Y.*Hd; ¨Ya=ifftshift(Ya);Ia02=ifft2(Ya);%0.5Hd(r>0.5) = 0;Y=fft2(double(I));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia05=ifft2(Ya);subplot(2,2,1),imshow(I),title('原图像') subplot(2,2,2),imshow(uint8(Ia01)),title('r=0.1') subplot(2,2,3),imshow(uint8(Ia02)),title('r=0.2') subplot(2,2,4),imshow(uint8(Ia05)),title('r=0.5')3. 理想高通滤波器参考代码实现:I = imread(' guzhe.jpg'');[f1,f2] = freqspace(size(I),'meshgrid');Hd = ones(size(I));r = sqrt(f1.^2 + f2.^2);%0.1Hd(r<0.1) = 0;Y=fft2(double(I));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia01=ifft2(Ya);%0.2Hd(r<0.2) = 0;Y=fft2(double(I));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia02=ifft2(Ya);%0.5Hd(r<0.5) = 0;Y=fft2(double(I));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);Ia05=ifft2(Ya);subplot(2,2,1),imshow(I),title('原图像')subplot(2,2,2),imshow(uint8(Ia01)),title('r=0.1')subplot(2,2,3),imshow(uint8(Ia02)),title('r=0.2')subplot(2,2,4),imshow(uint8(Ia05)),title('r=0.5')三、设计要求1、读取图像guzhe.jpg,显示这幅图像,对图像作傅立叶变换,显示频域振幅图像。