傅里叶变换在图像处理中的应用研究.docx
《傅里叶变换在图像处理中的应用研究.docx》由会员分享,可在线阅读,更多相关《傅里叶变换在图像处理中的应用研究.docx(15页珍藏版)》请在冰豆网上搜索。
![傅里叶变换在图像处理中的应用研究.docx](https://file1.bdocx.com/fileroot1/2022-11/24/e1015556-dea3-495f-b715-26ce36ff0dd3/e1015556-dea3-495f-b715-26ce36ff0dd31.gif)
傅里叶变换在图像处理中的应用研究
燕山大学
课程设计
题目:
数字图像的傅里叶变换程序设计
学院(系):
理学院
年级专业:
09光信息科学
学号:
0026
*******
***************
教师职称:
硕导
燕山大学课程设计(论文)任务书
院(系):
理学院基层教学单位:
09应用物理
学号
0004
学生姓名
徐庆明
专业(班级)
光信息科学
设计题目
数字图像的傅里叶变换的程序设计
设
计
技
术
参
数
设
计
要
求
1、考查学生查阅有关资料能力;
2、了解图像变换的意义和手段;
3、熟悉傅里叶变换的基本性质;
4、通过本实验熟练掌握MATLAB编程实现数字图像的傅里叶变换。
工
作
量
在21个工作日内采用MATLIB软件编写程序,完成数字图像的傅里叶变换的程序设计。
工
作
计
划
搜集关于数字全息广场的相关资料;
运用MATLIB软件模拟全息广场;
在老师的指导下,参阅相关资料,进行论文的撰写;
2012.11.4-----2012.11.6进行论文的修改,完成论文;
2012.11.7提交论文。
参
考
资
料
[1]余成波数字图像处理及MATLAB实现重庆大学出版社2003
[2]王家文MATLAB6.5图形图像处理国防工业出版社
[3]郝文化MATLAB图形图像处理应用教程中国水利水电出版社2004
指导教师签字
基层教学单位主任签字
说明:
此表一式四份,学生、指导教师、基层教学单位、系部各一份。
年月日
燕山大学课程设计评审意见表
指导教师评语:
成绩:
指导教师:
年月日
答辩小组评语:
成绩:
评阅人:
年月日
课程设计总成绩:
答辩小组成员签字:
年月日
摘要
傅里叶变换在数字图像处理中广泛用于频谱分析,傅里叶变换是线性系统分析的一个有力工具,它使我们能够定量地分析诸如数字化系统,采样点,电子放大器,卷积滤波器,噪声,显示点等地作用(效应)。
傅里叶变换(FT)是数字图像处理技术的基础,其通过在时空域和频率域来回切换图像,对图像的信息特征进行提取和分析,简化了计算工作量,被喻为描述图像信息的第二种语言,广泛应用于图像变换,图像编码与压缩,图像分割,图像重建等。
因此,对涉及数字图像处理的工作者,深入研究和掌握傅里叶变换及其扩展形式的特性,是很有价值得。
关键字:
傅里叶变换数字图像处理图像压缩图像恢复
Abstract
Fouriertransformindigitalimageprocessingiswidelyusedinspectralanalysis,Fouriertransformislinearsystemanalysisofapowerfultool,itenablesustoquantitativelyanalysissuchasdigitalsystem,samplingpoint,electronicamplifier,convolutionfilter,noise,displaypoint,action(effect).Fouriertransform(FT)isthebasisofdigitalimageprocessingtechniques,thethroughintime-spacedomainandfrequencydomainswitchingbackandforthimage,theimageinformationfeaturesextractionandanalysis,simplifythecalculationworkload,isbecomingdescriptionimageinformationofthesecondkindoflanguage,whicharewidelyusedinimagetransform,imagecodingandcompression,imagesegmentation,imagereconstruction,etc.Therefore,theworkersinvolvedindigitalimageprocessing,in-depthstudyandmasterFouriertransformanditsexpandedformcharacteristics,isveryworthy.
Keyword:
Fouriertransform,digitalimageprocessing,imagecompression,imagerestoration.
第1章绪论
1.1论文研究背景
今年来,随着电子技术、图像处理方法和信号理论的迅猛发展,数字图像处理技术得到飞速发展,它广泛应用于几乎与成像有关的领域。
传统的光学系统在信号处理时,存有它自身很难克服的不足:
第一,它对空间频谱平面的处理很难,尤其在低频和甚低频时,即使可通过大量仪器来实现,但代价往往很高;第二,光学处理由于采样孔径(即传感单元)太窄而不能起到抗混叠作用,不能除去高频信息。
而傅里叶变换和线性移不变系统有紧密联系,它有一个很好的理论背景来知道它在图像处理的左右,可以方便有效地克服上述不足,使其在数字图像处理中占有一席之地。
傅里叶变换(FourierTransformation,FT)是一种常用的数学工具,在数学、物理及工程技术领域都得到了广泛的应用。
但随着研究对象和研究范围的不断扩展,也逐渐暴露了傅里叶变换在研究某些问题的局限性。
这种局限性主要体现在:
它是一种全局性变换,得到的是信号的整体频谱,因而无法表述信号的时频局部特性,为了分析和处理非平稳信号,人们在傅里叶变换理论基础上提出了一种广义化的傅里叶变换—分数傅里叶变换(FractionalFourierTransformation,FRFT),提供了傅里叶变换所不具备的某些特点。
分数傅里叶变换是对给定信号的Wigner分布的旋转操作,也称旋转傅里叶变换或角度化傅里叶变换,它保留傅里叶变换的所有特性,在所有的傅里叶变换应用领域,FRFT具有极大的改进潜力。
FRFT与光学成像系统有着紧密的联系,它最早应用于光学领域的光信息处理系统。
传统的光学仅在空域中研究光学现象,现代信息光学将研究方法扩展到空间频率,对光学成像系统进行空间频谱分析。
1873年,阿贝在显微镜成像原理的论述中,首次提出了空间频率和空间频谱以及两次衍射成像的概念,并用傅里叶变换来阐明显微镜成像的物理机制。
阿贝成像过程可以理解为光线经过二次衍射实现了对频谱的分解和综合作用。
1.2傅里叶变换在数字图像处理中应用的历史与发展
数字图像处理(digitalimageprocessing)是用计算机对图像信息进行处理的一门技术,使利用计算机对图像进行各种处理的技术和方法。
20世纪20年代,图像处理首次得到应用。
20世纪60年代中期,随电子计算机的发展得到普遍应用。
60年代末,图像处理技术不断完善,逐渐成为一个新兴的学科。
利用数字图像处理主要是为了修改图形,改善图像质量,或是从图像中提起有效信息,还有利用数字图像处理可以对图像进行体积压缩,便于传输和保存。
数字图像处理主要研究以下内容:
傅立叶变换、小波变换等各种图像变换;对图像进行编码和压缩;采用各种方法对图像进行复原和增强;对图像进行分割、描述和识别等。
随着技术的发展,数字图像处理主要应用于通讯技术、宇宙探索遥感技术和生物工程等领域。
在1937年,Condon提出了分数傅里叶变换的初步概念。
1961年,Bargmann又进一步发展了这一概念,他认为FRFT可以分别用厄米多项式和积分变换加以定义,而这两种定义实质上是相同的。
在1980年,Namias从特征值和特征函数的角度完整地提出了分数傅里叶变换的数字定义和性质。
1987年McBride和Kerr采用积分定义形式,从纯数学角度又进一步研究了FRFT,把FRFT看作是充分光滑的函数构成的向量空间中的算子,并且建立了分数傅里叶变换的完整而严谨的理论系统,为其后从光学角度提出分数傅里叶变换的概念奠定了基础。
直到20世纪90年代,光学界的科学家和工程师才开始关注分数傅里叶变换与光学的关系。
1993年,Ozaktas和Mendlovic给出了分数傅里叶变换的光学实现,提出用平方折射率光波导(GRIN)来实现分数傅里叶变换,并将其应用于光学信息处理。
Lohmann和Bernardo等用透镜系统成功地实现了分数傅里叶变换,Lohmann还设计了阶次连续可变的光学分数傅里叶变换系统。
1995年,Mendlovic等人进一步讨论用分数傅里叶变换来表征信号的新方法。
Dorsch,Bernardo等人分别提出了用光学系统来实现任意级傅里叶变换的方案。
Ozaktas等人还研究了分数傅里叶变换和小波变换的关系。
Pellat-Finet探讨了菲涅耳衍射和分数傅里叶变换的关系。
至此,分数傅里叶变换在光学信息领域已受到充分的重视。
由于分数傅里叶变换采用光学设备容易实现,所以在光学领域很快便得到了广泛应用。
尽管在信号处理领域分数傅里叶变换具有潜在的用途,但是由于缺乏有效的物理解释和快速算法,使得分数傅里叶变换在信号处理领域迟迟未得到应有的认识。
直到1993年Almeida指出分数傅里叶变换可以理解为时频平面的旋转,1996年Ozaktas等提出了一种计算量与FFT相当的离散算法后,分数阶Fourier变换才吸引了越来越多信号处理领域学者的注意。
总的来说,目前分数傅里叶变换在理论上已较为成熟,但在实际应用方面有待进一步研究。
随着对分数傅里叶变换研究的不断深入,人们发现分数傅里叶变换的应用领域越来越广。
第2章傅里叶变换
2.1傅里叶变换的定义
所谓的傅立叶变换就是以时间为自变量的“信号”和以频率为自变量的“频谱“函数之间的某种变换关系。
这种变换同样可以用在其他有关数学和物理的各种问题之中,并可以采用其他形式的变量。
当自变量“时间”或“频率”取连续时间形式和离散时间形式的不同组合,就可以形成各种不同的傅立叶变换对。
傅立叶变换家族中的变换很多,主要包括:
连续傅立叶变换,拉普拉斯变换,离散傅立叶变换,序列傅立叶变换,Z变换和离散傅立叶变换。
连续傅立叶变换,连续傅立叶级数变换,连续拉普拉斯变换适用于连续时间信号的情形。
离散傅立叶级数变换,序列傅立叶变换,Z变换和离散傅立叶变换适用于离散时间信号的情形。
傅里叶变换(FourierTransformation,FT)是一种常用的数学工具,在数学、物理及工程技术领域都得到了广泛的应用。
但随着研究对象和研究范围的不断扩展,也逐渐暴露了傅里叶变换在研究某些问题的局限性。
这种局限性主要体现在:
它是一种全局性变换,得到的是信号的整体频谱,因而无法表述信号的时频局部特性,为了分析和处理非平稳信号,人们在傅里叶变换理论基础上提出了一种广义化的傅里叶变换—分数傅里叶变换(FractionalFourierTransformation,FRFT),提供了傅里叶变换所不具备的某些特点。
分数傅里叶变换是对给定信号的Wigner分布的旋转操作,也称旋转傅里叶变换或角度化傅里叶变换,它保留傅里叶变换的所有特性,在所有的傅里叶变换应用领域,FRFT具有极大的改进潜力。
FRFT与光学成像系统有着紧密的联系,它最早应用于光学领域的光信息处理系统。
传统的光学仅在空域中研究光学现象,现代信息光学将研究方法扩展到空间频率,对光学成像系统进行空间频谱分析。
1873年,阿贝在显微镜成像原理的论述中,首次提出了空间频率和空间频谱以及两次衍射成像的概念,并用傅里叶变换来阐明显微镜成像的物理机制。
阿贝成像过程可以理解为光线经过二次衍射实现了对频谱的分解和综合作用。
2.2傅里叶变换的基本性质
a.线性性质
两函数之和的傅里叶变换等于各自变换之和。
数学描述是:
若函数f\left(x\right)和g\left(x\right)的傅里叶变换\mathcal[f]和\mathcal[g]都存在,α和β为任意常系数,则\mathcal[\alphaf+\betag]=\alpha\mathcal[f]+\beta\mathcal[g];傅里叶变换算符\mathcal可经归一化成为么正算符;
b.频移性质
若函数f\left(x\right)存在傅里叶变换,则对任意实数ω0,函数f(x)e^{i\omega_x}也存在傅里叶变换,且有\mathcal[f(x)e^{i\omega_x}]=F(\omega+\omega_0)。
式中花体\mathcal是傅里叶变换的作用算子,平体F表示变换的结果(复函数),e为自然对数的底,i为虚数单位\sqrt;
c.微分关系
若函数f\left(x\right)当|x|\rightarrow\infty时的极限为0,而其导函数f'(x)的傅里叶变换存在,则有\mathcal[f'(x)]=-i\omega\mathcal[f(x)],即导函数的傅里叶变换等于原函数的傅里叶变换乘以因子--iω。
更一般地,若f(\pm\infty)=f'(\pm\infty)=\ldots=f^{(k-1)}(\pm\infty)=0,\mathcal[f^{(k)}(x)]存在,则\mathcal[f^{(k)}(x)]=(-i\omega)^\mathcal[f],即k阶导数的傅里叶变换等于原函数的傅里叶变换乘以因子(−iω)k。
d.卷积特性
若函数f\left(x\right)及g\left(x\right)都在(-\infty,+\infty)上绝对可积,则卷积函数f*g=\int_{-\infty}^{+\infty}f(x-\xi)g(\xi)d\xi的傅里叶变换存在,且\mathcal[f*g]=\mathcal[f]\cdot\mathcal[g]。
卷积性质的逆形式为\mathcal^[F(\omega)G(\omega)]=\mathcal^[F(\omega)]*\mathcal^[G(\omega)],即两个函数乘积的傅里叶逆变换等于它们各自的傅里叶逆变换的卷积。
2.3傅里叶变换于数字图像应用的原理
傅里叶变换是一种函数的正交变换,如果将信号以函数来描述,正交变换的含义就是将一个函数分解成一组正交函数的线性组合。
傅里叶正、逆变换的计算公式分别为:
逆变换:
显然,对一个非周期信号,其频谱为连续谱。
对于二维信号,二维Fourier变换定义为:
逆变换:
在数字图像处理领域中,f(x,y)可以用来表示一幅图像,而F(u,v)就表示该图像的频谱。
二维离散傅里叶变换为:
逆变换:
快速傅里叶变换(FFT)要达到的目的是,将前面所给出的傅里叶变换的计算公式,通过一定的整理之后,找到一个可以将复杂的连加运算转换为简单的两个数相加运算的重复的方法,已减小傅里叶变换的计算时间代价。
经过傅里叶变换之后,可以获得原图像信号的频域分布情况。
由于图像中不同特性的像素具有不同的频域特性,因此,可以在频域上设计相应的滤波器,以达到滤除某些信息,或者保留某些信息的目的。
另外,因为傅里叶变换后,时域与频域形成了对偶运算关系,因此通过傅里叶变换也可以达到某些运算的简化目的。
第3章数字图像的傅里叶变换的程序设计
3.1应用软件MATLAB的应用简介
MATLABCompiler是一种编译工具,它能够将那些利用MATLAB提供的编程语言——M语言编写的函数文件编译生成标准的C/C++语言源文件,而生成的标准C/C++源代码可以被任何一种C/C++编译器编译生成函数库或者可执行文件,这样就可以扩展MATLAB功能,使MATLAB能够同其他高级编程语言(例如C/C++语言)进行混合应用,取长补短,以提高程序的运行效率,丰富程序开发的手段。
MATLAB除了能够和C/C++语言集成开发以外,目前的MATLAB还提供了和Java语言接口的能力,并且它还支持COM标准,能够和任何一种支持COM标准的软件协同工作。
另外,在Release13中,包含了MATLABCompiler的扩展产品——MATLABCOMBuilder和ExcelBuilder,分别用来将MATLAB的函数文件打包成COM组件或者Excel插件,将MATLAB应用程序算法集成到相应的开发工具或者应用软件中。
MATLAB的主要特点:
(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。
(2)运算符丰富。
由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
(3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
(4)程序限制不严格,程序设计自由度大。
例如,在MATLAB里,用户无需对矩阵预定义就可使用。
(5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
(6)MATLAB的图形功能强大。
在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。
MATLAB还具有较强的编辑图形界面的能力。
(7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
(8)功能强大的工具箱是MATLAB的另一特色。
(9)源程序的开放性。
开放性也许是MATLAB最受人们欢迎的特点。
除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。
MATLAB中的数字图像是以矩阵形式表示的,这意味着MATLAB强大的矩阵运算能力用于图像处理非常有利,矩阵运算的语法对MATLAB中的数字图像同样适用。
MATLAB图像处理工具箱支持四种图像类型,分别为真彩色图像、索引色图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。
MATLAB可操作的图像文件包括BMP、HDF、JPEG、PCX、TIFF、XWD等格式。
3.2程序设计
1init():
将图形驱动软件装入内存,使屏幕适配器设置为图形方式,即图形初始化;
2make_original_data():
置数程序,以取得有关二维数组,进行傅里叶变换;
3do_2D_DFT():
完成二维离散傅里叶正变换,通过绘图程序将运算结果显示在屏幕上;
4do_2D_IDFT():
完成二维离散傅里叶逆变换,通过绘图程序将运算结果显示在屏幕上,使其与原图像相比较,以检验变换的恢复情况;
5filter():
在这个子程序中,我们可以通过选择有效对空间频谱进行滤波,滤去不需要谱线,保留有效谱线,突出重要部分,削弱次要因素,达到对空间频谱处理目的。
do_2D_DFT()
{getch();
fft2(xx,yy,1);
disp_fft(200,360,6,0.03);
gotoxy(30,25);printf(“2D-FFT”);
}
;------------------------------------------------------------------------------------------------------------
do_2D_IDFT()
{intimin,imax,jmax,fg=1;
charc;
outtextxy(100,430,“filter?
(Y/N):
”);
c=getch();delline();
if(c==‘y’||c==‘Y’)
{
while(fg)
{gotoxy(60,21);
printf(“0<==>%d:
”,(size>>1));
gotoxy(60,22);
printf(“inputimin:
”);scanf(“%d”,&imin);
gotoxy(60,23);
printf(“inputimax:
”);scanf(“%d”,&imax);
gotoxy(60,24);
printf(“inputjmin:
”);scanf(“%d”,&jmin);
gotoxy(60,25);
printf(“inputjmax:
”);scanf(“%d”,&jmax);
fg=filter(imin,imax,jmin,jmax);
}
setfillstyle(EMPTY_FILL,0);
bar3d(0,220,639,420,0,0);
disp_fft(160,380,6,0.03);
}
fft2(xx,yy,-1);
disp_data(325,164,2,0.5);
gotoxy(42,13);printf(“2D_IFFT”);
if(c==‘‘y’||c==‘Y’)
{gotoxy(56,12);printf(“i:
%2d<==>%2d\n”,imin,imax);
gotoxy(56,13);
printf(“j:
%2d<==>%2d\n”,jmin,jmax);
}
}
;------------------------------------------------------------------------------------------------------
fft2(xx,yy,flag)
floatxx[SIZE][SIZE],yy[SIZE][SIZE];
intflag;
{floatx[SIZE],y[SIZE];
Inti,j;
for(i=0;i{for(j=o;j{x[j]=xx[j][i];y[j]=yy[j][i];}
fft1(x,y,flag);
for(j=0;j{xx[j][i]=x[j];yy[j][i]=y[j];}
}
for(i=0;j{for(j=0;j{x[j]=xx[i][j];y[j]=yy[i][j];}
fft1(x,y,flag);
for(j=0;j{xx[i][