手势识别技术毕业设计

上传人:痛*** 文档编号:46653653 上传时间:2021-12-14 格式:DOC 页数:60 大小:1.25MB
收藏 版权申诉 举报 下载
手势识别技术毕业设计_第1页
第1页 / 共60页
手势识别技术毕业设计_第2页
第2页 / 共60页
手势识别技术毕业设计_第3页
第3页 / 共60页
资源描述:

《手势识别技术毕业设计》由会员分享,可在线阅读,更多相关《手势识别技术毕业设计(60页珍藏版)》请在装配图网上搜索。

1、沈阳理工大学学士学位论文摘 要社会的进步和科技的发展使人们急需一种可靠、简便、快捷的手势识别技术。近些年来手势识别由于其具有非接触的识别方式、快速的识别过程和稳定的识别系统等优点受到了人们广泛的关注。本文基于MATLAB,设计并实现了一种基于MATLAB的手势识别系统。首先,文章介绍了研究手势识别技术的意义和目的。其次,由于手势图像的尺寸、角度、清晰度等问题对手势识别有非常大的影响,所以我们先对其进行图像预处理。本文提供的预处理方法非常丰富。最后,重点讲述了本文应用的手势识别算法。并且在MATLAB上对手势识别算法进行仿真。对仿真结果进行了详细地分析。关键词;MATLAB;手势识别;图像预处理

2、ABSTRACTThe progress of the society and the development of science and technology make people urgently need a reliable, convenient and fast gesture recognition technology. Gesture recognition in recent years because of its identification with non-contact way, fast recognition process and the stabili

3、ty of the advantages of recognition system has received the widespread attention. Based on MATLAB, this paper designs and realizes a kind of gesture recognition system based on MATLAB.First, this paper introduces the research meaning and purpose of gesture recognition technology. Secondly, as a resu

4、lt of gesture image problem such as dimension, Angle, and definition of gesture recognition has great influence, so we are on the first image preprocessing. This article provides pretreatment method is very rich. Finally, focuses on the application of gesture recognition algorithm in this paper. And

5、 gesture recognition algorithm on MATLAB simulation. The simulation results are analyzed in detail.Keywords;MATLAB;Hand gesture recognition;Image prerocessing目录1 引言11.1 课题的背景和意义11.2 国内外研究现状12 手势识别研究综述42.1 手势的定义42.2 手势识别的意义42.3 手势识别的主要内容42.4 手势识别的方法53 手势图像的格式及基本操作63.1 手势图像格式63.1.1 数字图像的表示63.1.2 数字图像的

6、灰度图63.1.3 TIFF与BMP图像格式73.2 通用的图像操作93.2.1 图像的剪切93.2.2 图像的缩放93.2.3 图像的亮度调整104 手势图像的预处理114.1 图像平滑114.1.1 局部平均法114.1.2 中值滤波法124.1.3 频域平滑技术124.2 图像二值化124.2.1 p-参数法134.2.2 模式法134.2.3 可变阀值法135 MATLAB介绍145.1 MATLAB概述145.2 MATLAB的功能165.3 MATLAB语言特点165.4 MATLAB语言的优势185.5 MATLAB数组与矩阵205.6 MATLAB函数216 基于MATLAB的

7、手势识别实现方法236.1 手势表现特征分析236.2 特征提取236.3 MATLAB中手势识别的仿真256.3.1 输入待识别手势图片266.3.2 判断输赢27结 论29致 谢30参考文献31附录A 源代码35附录B 英文原文文献38附录B 中文翻译48341 引言1.1 课题的背景和意义人与计算机的交互活动越来越成为人们口常生活的一个重要组成部分。特别是最近几年,随着计算机技术的迅猛发展,研究符合人机交流习惯的新颖人机交互技术变得异常活跃,也取得了可喜的进步。这些研究包括手势识别、面部表情识别、唇读、头部运动跟踪、凝视跟踪、人脸识别、以及体势识别等等。总的来说,人机交互技术己经从以计算

8、机为中心逐步转移到以人为中心,是多种媒体、多种模式的交互技术。基于MATLAB的手势识别研究正是顺应了这一潮流。手势是一种自然、直观、易于学习的人机交互手段。以人手直接作为计算机的输入设备,人机之间的通讯将不再需要中间媒体,用户可以简单地定义一种适当的手势来对周围的机器进行控制。以人手直接作为输入手段与其他输入方法相比较,具有自然性、简洁性,和丰富性、直接性的特点,因此用计算机来识别手势提供了一个更自然的人机接口。但是由于手势本身具有的多样性、多义性以及时间和空间上的差异性等特点,加之人手是复杂变形体以及视觉本身的不适定性,因此基于MATLAB的手势识别是一个多学科交叉的、富有挑战性的研究课题

9、。为了寻找突破口,必须研究人机交流中的手势用法,从而确定合理的研究范围。手势识别的研究可以应用于计算机辅助哑语教学、电视节目双语播放、虚拟人的研究、电影制作中的特技处理、动画的制作、医疗研究、游戏娱乐等诸多方面,同时也有助于改善和提高聋哑人的生活学习和工作条件,为他们供更好的服务;另外,手势的研究涉及到教学、计算机图形学、机器人运动学、医学等多学科。因此,手势识别的研究是一个非常有意义的课题。手势输入在人机交互中应用的精髓不在于用来独立的用作空间指点,而是作为语言、视线、唇语等交互通道提供空间的或其它约束信息,以消除在单通道输入时存在的歧义,这样就可以以充分性取代精确性。1.2 国内外研究现状

10、在新的人机交互领域,国际上己经出现付诸应用的人机交互系统,2003年12月,美国密歇根州的Cybernet系统公司开发出一套名为手势风暴的系统,是公司针对天气预报节目开发的,主持人可以通过简单的手势来控制预报的进程;美国加州圣何塞的Canesta公司在2004年末推出一种新的设备,它可以使个人数字助理(PDA)具备手势识别功能。该设备会通过PDA内部透镜在桌面等平面上投射出键盘的影像。与此同时,它还会向该“键盘”的上方区域射出一束红外光。通过检测红外光脉冲从离开发射器、经用户手指反弹后最终回到PDA内传感器的时间,该设备可以精确感知用户手指在任一时刻的位置。光脉冲的来回程时间对应于特定的距离,

11、根据这些不同的距离可以得出手指在键盘上位置的三维图像,这样PDA就可以准确地采集用户在虚拟键盘上的操作信息;美国佐治亚理工学院有一项用手势识别减少汽车事故的研究课题,该校的研究小组开发了名为“手势面板”的设备来取代汽车上通常使用的仪表板控制设备,司机只需要在指定区域做出某个手势,即可调整车内的温度或音响的音量,而不需要转移对路面的注意力。在基于视觉手势识别方面,具有代表性的研究成果包括:1991年富士通实验室完成了对46个手语符号的识别工作;J.Davis和M.Shah将戴上尖具有高亮标记的视觉手套的手势作为系统的输入,可识别7种手势;Starner等在对美国手语中带有词性的40个词汇随机组成

12、的短句子识别率达到99.2%;K.Grobel和M.Assam从视频录像中提取特征,采用HMM技术识别262个孤立词,正确率为91.3%;此外,Vogler6与Metaxas将两种方法结合用于美国手语识别,交互采用一个位置跟踪器及三个互相垂直的摄像机作为手语输入设备,完成了53个孤立词的识别,识别率为89.9% 。利用数据手套等典型传感设备的方法中,CMU的Christopher Lee和Xu在1995年完成了一个操纵机器人的手势控制系统;M.W.Kadous用PowerGloves作为手语输入设备,识别由95个孤立词构成的词汇集,正确率为80% 。面对如此多的新型用户接口,有分析家指出:简便

13、性和直观性是其是否成功的关键标准在我国,哈尔滨工业大学的吴江琴、高文等给出了ANN与HMM的混合方法作为手语的训练识别方法,以增加识别方法的分类特性和减少模型的估计参数的个数,将ANN-HMM混合方法应用于有18个传感器的CyberGlove型号数据手套的中国手语识别系统中,孤立词识别率为90%,简单语句级识别率为92%。接下来高文等又选取Cyberglove型号数据手套作为手语输入设备,并采用了DGMM(ynamic Gaussian Mixture Mode)为系统的识别技术,即利用一个随时间变化的具有M个分量的混合Gaussian N一元混合密度来模型化手语信号,可识别中国手语字典中27

14、4个词条,识别率为98.2%。与基于HMM的识别系统比较,这种模型的识别精度与HMM模型的识别精度相当,其训练和识别速度比HMM的训练与识别速度有明显的改善。他们为了进一步提高识别速度,识别模块中选取了多层识别器,可识别中国手语字典中的274个词条,识别率为97.4%。与基于单个DGMM的识别系统比较,这种模型的识别精度与单个DGMM模型的识别精度基本相同,但其识别速度比单个DGMM的识别速度有明显的提高。2000年在国际上他们首次实现了5000词以上的连续中国手语识别系统。另外,清华大学祝远新、徐光裕等给出了一种基于视觉的动态孤立手势识别技术,借助于图像运动的变阶参数模型和鲁棒回归分析,提出

15、一种基于运动分割的图像运动估计方法,基于图像运动参数,构造了两种表现变化模型分别作为手势的表现特征,利用最大最小优化算法来创建手势参考模板,并利用基于模板的分类技术进行识别,对12种手势的识别率超过90%;在进一步研究中,他们又给出了有关连续动态手势的识别,融合手势运动信息和皮肤颜色信息,进行复杂背景下的手势分割,通过结合手势的时序信息、运动表现及形状表现,提出动态手势的时空表现模型,并提出基于颜色、运行以及形状等多模式信息的分层融合策略抽取时空表观模型的参数。最后,提出动态时空规整算法用于手势识别,对12种手势,平均识别率高达97%。台湾大学的Liang等人利用单个VPL数据手套作为手语输入

16、设备,可识别台湾手语课本中的250个基本词条,识别率为90.5% 。2 手势识别研究综述2.1 手势的定义由于手势(gesture)本身具有多样性和多义性,具有在时间空间上的差异性加上不同文化背景的影响对手势的定义是不同的。这里把手势定义为:手势是人手或者手和臂结合所产生的各种姿势和动作,它包括静态手势(指姿态,单个手形)和动态手势(指动作,由一系列姿态组成)。静态手势对应模型参数空间里的一个点,而动态手势对应着模型参数空间里的一条轨迹,需要使用随时间变化的空间特征来表述。手势和姿势(posture)的主要区别在于姿势更为强调手和身体的形态和状态而手势更为强调手的运动。2.2 手势识别的意义

17、目前,手势识别技术的应用在当前是比较热门的研究课题,已经有了相当丰富的手势识别理论研究,并有不少的应用实践。由于人们的研究目的需求不同,在具体的处理方面就产生了不同的处理技术。将计算机手势识别技术应用于图书馆虚拟现实导航系统之中,使用户能够身临其境的以自然的方式,在虚拟的场景中获得真实的感受成为一种可能。用手势进行人机交互十分自然、高效。以人手直接作为输入手段与其它输入方法相比较,具有自然性、简洁性和丰富性、直接性的特点。因此,用计算机来识别手势提供了一个更自然的人机接口。使用计算机手势识别技术去识别用户输入的手势动作,并根据其识别的结果去驱动图书馆虚拟现实导航系统,用户将摆脱诸多外部硬件设备

18、的限制,解放身体,自由的在空间中以简单的手势动作驱动应用。因此,研究手势识别技术的实现,并使用计算机手势去操作图书馆虚拟现实导航系统具有现实意义。2.3 手势识别的主要内容(1) 针对手势输入技术和方法的研究,采用基于计算机视觉的手势输入方 法,识别自然手势,使人机交互更加灵活、方便。(2) 逐一分析手势识别各环节的技术,对手势图像进行处理、分割、特征 提取、匹配,选取合适技术,设计图书馆虚拟现实导航系统方案。(3) 结合以上各项研究成果,应用VC+开发工具,构建图书馆虚拟现实导航 系统。实验以上研究的各项关键技术,并进行评测和验证。2.4 手势识别的方法在基于形状特征的识别算法中,我们在边界

19、图像的基础上根据手势区域的形状特征对手势图像进行粗分类,按照手势图像中手指的方向及数目把手势图像分成向上、向右、向下等类别,然后分别在边界图像和二值图像的中提取手势图像面积、周长、重心距等特征,构成s维特征向量,最后采用类似度进行模板匹配,实现对字母手势的细分类;在基于傅立叶描述子的识别算法中。首先采用八邻域搜索法对二值化的手势图像进行边缘检测,得到连通的手势外轮廓,然后计算边界点序列的傅立叶系数得到傅立叶描述子,并将傅立叶描述子进行归一化,构建手势图像的特征向量,最后通过计算输入手势的特征向量与样本库中每一图像的特征向量的欧式距离,判定输入图像与样本图像间的匹配程度,我们把待识输入图像归为距

20、离最小的那一类。实验对中国手语中字母手势进行识别,取得了较好的效果。本文采用的识别流程如图2.1:图片预处理特征提取手势识别输入图片图2.1 手势识别流程图3 手势图像的格式及基本操作为了使计算机能够对各种现象进行分类识别,要用计算机可以运算的符号来表示所研究的对象。通常输入对象的信息有三种类型:(1) 二维图像如文字、指纹、地图、照片这类对象。(2) 一维波形如脑电图、心电图、机械振动波形等。(3) 物理参量和逻辑值前者如在疾病诊断中病人的体温及各种化验数据等;后者如对某参量正常与否的判断或对症状有无的描述,如疼与不疼,可用逻辑值0和1来表示。在引入模糊逻辑的系统中,这些值还可以包括模糊逻辑

21、值,比如很大、大、比较大等。在手势识别中,处理的对象是手势的照片,我们提取数据的目标就是将手势的图像用一个特征向量来表示出来。在本文中所处理的图片主要有TIFF与BMP两种格式,TIFF格式相对来说要复杂一些,可以存储的图像也要丰富得多,它可以存储多张图片,还可以存储多种压缩格式的图片,而BMP格式的图片简单、通用,一般在应用程序中可以方便的显示。因此我们的工作除了熟悉多种格式的图像文件以外,还包括实现多种格式图像文件之间的相互转换,并最终提取出表示图像的特征向量。3.1 手势图像格式3.1.1 数字图像的表示数字图像的表示方式可以分为两类:位图方式和矢量方式。位图方式该方式将一副图像划分为一

22、张栅格,格中每一部分(像素)或色彩单独记录,位图中的一个数据点的位置决定了该数据点所代表的像素,即数据点与图像对应,“位图”由此而来,位图适用于色彩、阴影或形状变化负责的图像,如照片、绘画或数字化视频等。矢量方式这种方式用一系列线段或其他造型描述一副图像,它适合与线型图等简鱼的国戒成图像。3.1.2 数字图像的灰度图灰度又称为“Graysacle",它代表像素的亮度值。在一副黑白照片中,不是简单的非黑即白,而是逐步过渡的,他们可区分为不同的亮度等级即灰度级。灰度划分越细,越能准确的再现图像。目前普遍采用的是256灰度级,即每个像素的灰度用一个字节(a位)表示,其中0表示全黑,256表

23、示全白。3.1.3 TIFF与BMP图像格式TIFF图像文件主要由三种数据组合而成:表头、标识信息区和图像数据区。表头信息指出了标识信息区在文件中的地址,而标识信息区由一组标志信息组成,它们表示出了TIFF图像所有的属性并且指明了图像数据区的地址,图像数据区将图像的像素数据以自上而下,自左到右的顺序依次存放。它们的关系如图3.1所示:标识信息区图像数据区TIFF表头数据图3.1 关系图若标识信息区末端的标志参数不为0,那么该参数就表示下一个标识信息区的地址,在TIFF图像中,每一个标识信息区和一个图像数据区就表示一幅图像,因此若文件中含有多个标识信息区就表明该文件中存储了多幅图像。BMP图像文

24、件也分为三部分:表头、调色板和图像数据。表头长度固定为54个字节,里面包含了图像所有属性的数据包括宽度、高度、颜色信息等。调色板数据中每一种颜色以四个字节来表示,它们分别是Blue分量、Green分量、Red分量和一个保留值。在BMP图像文件中,图像的数据以自下而上,自左到右的顺序存放,并且必须保证每行的数据必须是4个字节的整数倍。BMP图像文件中各部分内容非常紧凑,所以省去了标志相应地址的信息。TIFF图像和BMP图像在调色板数据方面存在着差异,这在实现两种格式图像的转换时非常重要。在BMP图像中除了全彩色RGB图像以外,所有不超过256色的图像必须带有调色板信息,即使是单色图像也不例外;而

25、在T环F图像中有三种情况可以不带有调色板信息,一是24位真彩色图像,二是单色图像,三是256色灰度图像。表3.1描述了两种格式图像在调色板数据方面的差异。表3.1 TIFF格式与BMP格式的图像调色板比较TIFF格式图像BMP格式图像单色图像(2色)无有16色图像有有256色彩色图像有有256色灰度图像无有24位全彩色图像无无为了实现两种格式图像之间的顺利转换,特别是从TIFF图像到BMP图像,需要填充相应的调色板信息。通过观察我们可以发现要填充的调色板信息存在某种规律,对于单色图像,它所对应的调色板信息包含两种颜色,这两种颜色的RGB表示分别为白(255,255,255)和黑(0,0,0)它

26、将黑与白之间的灰度颜色分成了256个等级假定白(255,255,255)对应的等级为255,黑(0,0,0)对应的等级为0,那么对于0到255之间的任一个灰度等级k,可以用相应的RGB颜色(k,k,k)来表示。这样我们就能顺利地将TIFF图像文件转换成BMP文件,而反过来操作则比较简单,只需要在处理单色图像以及256色灰度图像时去除相应的调色板信息即可。由于两种图像格式的差异,提取数据以及存储图像数据的操作是不同的,但在提取出了图像的数据以后,所进行的任何图像处理操作就与图像原有的格式不再相关,因此我们在处理图像时设计了三个图像类:CTifTmage、CbmpImage,Clmage,其中CT

27、ifImage专门用于TIFF格式图像的处理,CBmpImage专门用于BMF格式图像的处理,这两个类都继承于类Cimage,在CImage中包括了图像数据提取与存储的接口、图像处理的一些通用操作如剪切、缩放、旋转、二值化等等。这样所有特定格式图像数据提取与存储的细节将封装在相应的派生类中,对于使用图像类(Cimage)的用户来说,只需要知道基类的接口就可以了。通过这种设计,我们还可以在不影响已有的数据结构的情况下实现其它格式图像的处理,因此具有很好的扩展性。经过以上多种格式图像的处理,我们将获得图像数据的矩阵表示,假定图像的宽度为W,图像的高度为H,那么得到的矩阵可以用以下的二维数组来表示:

28、PixelArrayx,y 其中0<x<W0<y<H由于在现实中得到的手势图像的色彩不一,有全彩色的,也有黑白的(即256色灰度图像,如身份证照片)0256色灰度图像能够很好的保留手势图像的特征,为了便于我们进行图像处理与分析,所以我们将输入的手势图像统一转换为256色灰度图像。这样,获取的像素矩阵中任一像素的取值范围为(0255)在以下的步骤中,我们处理的对象就是这个二维的像素数组。3.2 通用的图像操作手势识别中的常用图像操作包括图像的剪切、图像的缩放、图像的旋转以及图像的亮度调整。我们以PixelArrayx,y来表示原有图像的二维像素矩阵,原有图像的高度用H来表

29、示,原有图像的宽度用W来表示,用PixelArrayNewx,y来表示结果图像的二维像素矩阵,结果图像的高度为HNew,宽度为Wnew。3.2.1 图像的剪切图像的剪切操作的函数原型为void Cimage:ClipImage ( CReet &reet ),需要输入的参数为要剪切的图像的具体的位置,即要剪切图像左上角的位置和右下角的位置。假定要剪切图像左上角位置为(left,top),右下角的位置为(right,bottom)那么我们只需要调整图像的宽度为(right-left),调整图像的高度为(bottom-top),从图像的二维数组中提取左上角到右下角之间的数据。剪切后图像的数

30、据可以表示为:PixelArrayx, y 其中left<x<righttop <y <bottom3.2.2 图像的缩放图像的缩放操作的函数原型为void Cimage CollapseOrExpandImage(double dbRatioX, double dbRatioY) e输入的参数为图像水平方向需要缩放的尺度以及图像垂直方向需要缩放的尺度。假定水平方向缩放的比例为a,垂直方向缩放的比例为b,那么,缩放后图像的高度为bH缩放后图像的宽度为aW,对于原有图像的任一点PixelArray(x,y),在缩放后对应的像素为:PixeIArrayi, j ax<

31、i<a(x+1)by < j<b( y+1)令CountArray i, j 为结果图像中点(i, j)对应原有图像像素的计数,那么每次有点映射到点(i,j)的像素时,将结果图像中点(i,j)的像素值加上该原有图像点(x,y)的像素值,并将CountArrayi,j加1。 PixelArrayNewi, j=PixelArrayNewi, j+PixelArrayx, y CountArrayi, j=CountArrayi, j=1 由于经缩放后,结果图像中的某一点的像素可能对应原有图像中的多个像素,所以对于这种情况需要对该点的像素求取平均值:PixelArrayNewi,

32、 j=PixelArrayNewi, j/ CountArrayi, j3.2.3 图像的亮度调整图像的亮度调整的函数原型为void Cimage:AdjustLight (int nLight)。输入的参数为要调整的亮度的大小,nLight为正数表示增强亮度,为负数表示降低亮度。在手势识别中我们采用的均为256色灰度图像,因此图像中任一点的像素值的饱合度为0,也就是说任一点的R. G, B三值的大小相等。在这种情况下,调整图像的亮度可以通过以下方式进行:假定要调整的亮度为nLight,图像中任意一种颜色的R. G. B三值分别用nR,nG,nB表示,则该颜色调整后的R, G, B三值分别为:

33、nR+nLightnG+nLightnB+nLight4 手势图像的预处理当把观察到的手势图像转换成可用计算机处理的数字图像时,图像在生成、传输或变换过程中会受到各种因素的干扰和影响,图像的画质将会因噪声而在不同程度上出现歧变,本文对输入图像进行了平滑、锐化、二值化等预处理。预处理的目的是去除图像中的噪声,加强图像中的有用信息,并对输入方式或其他愿意造成的退化现象进行复原,图像预处理过程是对图像的一个过滤过程,要排除干扰保留需要处理的部分,并过滤掉不需要的部分。由于成像设备在读入手势图像时会扩大取景范围,其中含很多无效的像素点,这会影响以后的处理,增加计算量,因此首先完成的是尽可能准确从读入图

34、像中取出包含被测物体的图像部分,这个过程的主要难度在于判断图像是否属于需要保留的部分,且必需保证其准确性,否则将会对下一步图像分析和判断造成严重的影响。4.1 图像平滑图像在生产和传输过程中常受到各种噪声的干扰和影响,使图像质量下降,为了抑制噪声改善图像质量,必须对图像进行平滑处理,这可在空域或频域中进行,在平滑噪声时应尽量不损害图像中边沿和各种细节。对于滤除图像中的噪声,人们已经提出了很多的方法。通常,将数字图像的平滑技术划分为两类:一类是全局处理,即对噪声图像的整体或大的块进行校正以得到平滑的图像,例如在变换域中使用Wiener滤波、最小二乘滤波等,使用这些技术需要知道信号和噪声的统计模型

35、,但对于大多数图像而言,人们不知道或不可能用简单的随机过程精确的描述统计模型,而且,这些技术计算量也相当大:另一类平滑技术是对噪声图像使用局部算子,当对某一像素进行平滑处理时,仅对它的局部小邻域的一些像素加以运算,其优点是计算效率高,而且可以多个像素并行处理,因此可实现实时或准实时处理。4.1.1 局部平均法局部平均法是一种直接在空域上进行平滑处理的技术。认为图像是由许多灰度恒定的小块组成,相邻像素间存在很高的空间相关性,而噪声则是统计独立的。因此,可用像素邻域内的像素的平均灰度值代替该像素原来的灰度值,实现图像的平滑。最典型的局部平均法就是非加权邻域平均,它均等地对待邻域中的每个像素。该算法

36、简单,计算速度快,但主要缺点是在降低噪声的同时使图像模糊,特别在边沿和细节处。邻域越大,模糊程度越厉害。对上述算法的改进算法有超限像素平滑法、灰度最相近的K个邻点平均法、剃度倒数加权平滑、自适应滤波等。4.1.2 中值滤波法中值滤波也是一种局部平均平滑技术,它对脉冲干扰和椒盐的抑制效果好,在抑制随机噪声的同时能使边沿减少模糊。中值滤波法是一种非线形的图像平滑方法,它对一个滑动窗口的诸像素灰度排序,用其中值代替窗口中心像素原来的灰度值(若窗口中有偶数个像幸,则取两个中间值的平均)。中值滤波的效果与局部平均的效果相比较,中值滤波有以下优点:一、降低噪声的效果比较明显;二、在灰度值变化较小的情况下可

37、以得到很好的平滑处理;三、降低了图像边界部分的模糊程度。4.1.3 频域平滑技术图像的平滑除了可以在空域中进行外,也可以在频域中进行。频域中的平滑是一维信一号低通滤波器概念在二维图像中的直接推广。图像经过二维傅立叶变换后,噪声频谱一般位于空间频率较高的区域,而图像本身的频率分量则处于空间频率较低的区域内,因此可以通过低通滤波器的方法,使高频分量受到抑制,从而实现图像的平滑。滤波器的数学表达式为:G (u, v) =H (u, v) F (u,v)4.2 图像二值化根据图像处理的目标要求,需要把多灰度级的图像变成只有两个灰度级的图像,即对图像进行二值化。设图像f(x,y)的灰度值范围在a,b,二

38、值化阐值设为T(a<=T<=b),则二值化处理的一般式为:g(x,y) = 1 当f(x,y)>=T时0 当f(x,y)<T时g(x,y)是二值图像,通常我们用1来表示对象物(黑色区域),用0来表示背景区域(白色区域)。对闭值T的选择有多种方法,它决定着二值图像的质量。按照闭值T的选择方法,图像二值化可分为以下几种。4.2.1 p-参数法当预先知道对象物在图像中所占的面积比率时,将灰度直方图中面积比率为P%的点作为闭值,这种方法称为P一参数法(p-tile method)。但在实际中,己知对象所占的面积比率的状况非常少见,通常都是按照一定的规律推算出来例如在书画作品中,

39、文字部分所占的面积比率一般情况下是可以估计出来这时用这种方法来处理时比较有效的。4.2.2 模式法当灰度直方图具有双峰性的时候,对象物和背景的灰度一般分别在两个山峰的附近,因此,可去山谷的中心点为闭值,这种方法称为模式法(modemethod)。但是,实际情况中,灰度直方图不是很平滑的,会存在一些因小的凹凸而产生的局部极小值,这样给自动判断造成很大的不便。比较简单的方法是,先将灰度直方图进行平滑处理,再进行阂值的选择,或者是以选出的灰度为中心考查1k的两点,用此两点来判断选出的灰度值的点是否极大值或者极小值点。这样的处理方法会产生一些噪声,但对判断不会造成大的影响。4.2.3 可变阀值法在不均

40、匀的照明条件下所得到的灰度图像,采用确定闭值进行二值化的时候,到不到期望的图像。在这种情况下,有两种解决方案,一种是当照明强度可用图像坐标的函数来表示是,被观测图像g(x,y)可用下式来描述:g(x,y) = c(x,y)f(x,y)其中,f(x,y)是在均匀照明条件下的图像,c(x,y)是表示照明不均匀的程度系数。另一种方案是把图像分成若干个子区域,在各个子区域中计算其灰度直方图。如果在子区域中同时存在背景和对象物,那么其灰度直方图呈双峰,这时可用模式法等进行二值化处理这种情况下,每个子区域一般都不相同,这种二值化方法称为可变闭值法(variable threshold selection

41、method)。5 MATLAB介绍5.1 MATLAB概述MATLAB,Matrix Laboratory的缩写,是由Mathworks公司开发的一套用于科学工程计算的可视化高性能语言,具有强大的矩阵运算能力。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户环境,在这个环境中,问题与求解都能方便地以数学的语言(主要是矩阵形式)或图形方式表达出来。与大家常用的Fortran和C等高级语言相比,MTALAB的语法规则更简单,更贴近人的思维方式,被称为“草稿纸式的语言”。MATLAB最初作为矩阵实验室,主要向用户提供一套非常完善的矩阵运算命令。随着数值运算的演变,它逐渐发

42、展成为各种系统仿真、数字信号处理、科学可视化的通用标准语言。在科学研究和工程应用的过程中,往往需要大量的数学计算,传统的纸笔和计算机已经不能从根本上满足海量计算的要求,一些技术人员尝试使用Basic,Fortran,C/C+等语言编写程序来减轻工作量。但编程不仅仅需要掌握所用语言的语法,还需要对相关算法进行深入分析,这对大多数科学工作者而言有一定的难度。与这些语言相比,MATLAB的语法更简单,更贴近人的思维方式。用MATLAB编写程序,犹如在一张演算纸上排列公式和求解问题一样高效率,因此被称为“科学便笺式”的科学工程计算语言。Matlab诞生于20世纪70年代,它的编写者是Clevel Mo

43、ler博士和他的同事。当时,他们利用Fortran开发了两个子程序库ELSPACK和LINPACK。这两个程序库是要求解线性方程的程序库。但是,Cleve Moler发现学生使用这两个程序库有困难,主要问题是因为接口程序不好写,很花费时间。于是,Cleve Moler自己动手,在业余时间里编写了ELSPACK和LINPACK的接口程序。Cleve Moler给这个接口程序取名为MATLAB,意为矩阵(Matrix)和实验室(Laboratory)的组合。以后几年,MATLAB作为免费软件在大学里被广泛使用,深受大学生的喜爱。1983年早春,Cleve Moder到Stanford大学访问,作为

44、工程师的John Little受到了MATLAB的深深吸引,他敏锐地察觉到MATLAB在工程领域潜在的应用天地。同年,他和Cleve Moder、Steve Bangert一起用C语言合作开发了第二代专业版MATLAB。从这一代起,MATLAB的核心使用C语言来编写,并且在具备数值计算能力的基础上,具有了数据视图的功能。1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向场,并继续进行MATLAB的开发。Math Works公司1993年推出MATLAB 4.0,1995年推出MATLAB 4.2C版(For Win3.x),1997

45、年推出MATLAB5.0,2000年9月发布了MATLAB7,2006年3月发布了MATLAB 2006a,2006年9月发布了MATLAB 2006b,2007年3月发布了最新的MATLAB R2007。每一个新版本的推出都使MATLAB有了长足的进步界面越来越友好,内容越来越丰富,功能越来越强大,帮助系统越来越完善。MATLAB长于数值计算,能处理大量的数据,而且效率比较高。Math Works公司在此基础上加强了MATLAB的符号计算、文字处理、可视化建模和实时控制能力,增强了MATLAB的市场竞争力,使MATLAB成为市场主流的数值计算软件。MATLAB产品族是支持从概念设计、算法开发

46、、建模仿真到实时实现的理想的集成环境。无论进行科学研究还是产品开发,MATLAB产品族都是必不可少的工具。在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类。一类是数值计算型软件,如 MATLAB、Xmath、Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,如Mathematica、Maple等,这类软件以符号计算见长,能给出解析解和任意精度解,其缺点是处理大量数据时效率较低。MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算、文字处理、可视化建模和实时控制能力,开发了

47、适合多学科、多部门要求的新一代科技应用软件MATLAB。经过多年的国际竞争,MATLAB 已经占据了数值型软件市场的主导地位。在MATLAB进入市场前,国际上的许多应用软件包都是直接以FORTRAN和C语言等编程语言开发的。这种软件的缺点是使用面窄、接口简陋、程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB的出现,为各国科学家开发学科软件提供了新的基础。在MATLAB问世不久的20世纪80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。5.2 MATLAB的功能MATLAB的核心是一个基于矩阵运算的快速解释程序,它交互式地接受用户输入

48、的各项命令,输出计算结果。MATLAB提供了一个开放式的集成环境,用户可以运行系统提供的大量命令,包括数值计算、图形绘制和代码编制等。具体来说,MATLAB具有以下功能。(1) 数据可视化功能。(2) 矩阵运算功能。(3) 大量的工具箱。(4) 绘图功能。(5) GUI设计。(6) Simulink仿真。进入MATLAB之后,会看到一个MATLAB Command Window,称为命令窗,它是最主要的窗口,既是键入命令也是显示计算结果的地方。另外还有一个编程窗,专门用来编辑应用程序。还有一个主窗口,用来记录已使用过的历史命令和已打开的目录,方便使用者查找。如果绘图还会自动弹出一个绘图窗,专门

49、用来显示绘制的图形。MATLAB一般有3种进行计算的方法,第1种就如同使用计算器,直接输入数值和运算符,立即从屏幕上获得结果。第2种先对变量赋值,然后再输入由变量构成的表达式,也可立即获得结果。第3种,就是采用编程的方法来解决较复杂的,诸如含有判断、循环、迭代、递归等算法的较复杂的问题。上述方法中,第2和第3包括了数组和矩阵运算,只要定义了数组和矩阵变量,就可以如同普通代数运算一样直接用变量进行数学运算,十分方便。5.3 MATLAB语言特点(1)编程效率高MATLAB是一种面向科学与工程计算的高级语言,允许用数学形式的语言来编写程序,比BASIC、FORTRAN和C等语言更加接近人书写计算公

50、式的思维方式,用MATLAB编写程序犹如在演算纸上排列出公式与求解问题一样。因此,MATLAB语言也可以通俗地称为“演算纸”式科学算法语言,正是由于它编写简单,所以编程效率高,易学易懂。(2)用户使用方便MATLAB语言是一种解释执行的语言,它灵活、方便,调试手段丰富,调试速度快。人们用任何一种语言编写程序和调试程序一般都要经过4个步骤:编辑、编译、连接,以及执行和调试。各个步骤之间是顺序关系,编程的过程就是在它们之间做瀑布型的循环。MATLAB语言与其他语言相比,把编辑、编译、连接和执行融为一体。它能在同一界面上进行灵活操作,快速排除输入程序中的书写错误、语法错误,甚至语义错误,从而加快了开

51、发者编写、修改和调试程序的速度,可以说,在编程和调试过程中它是一种比Visual Baisc还要简单的语言。具体地说,在运行MATLAB时,如果直接在命令行输入MATLAB语句(命令),包括调用M文件的语句,每输入一条语句,就会立即对其进行处理,完成编译、连接和运行的全过程。又如,将MATLAB源程序编辑为M文件时,由于MATLAB磁盘文件也是M文件,所以编辑后的源文件就可直接运行,而不需要进行编译和连接。在运行M文件时,如果有错误,计算机屏幕上就会给出详细的出错信息,使它经过修改后再执行,直到正确为止。所以,MATLAB语言不仅是一种语言,广义上更可以称为一种语言开发系统、语言调试系统。(3

52、)扩充能力强,交互性好高版本的MATLAB语言拥有丰富的库函数,在进行复杂的数学运算时可以直接调用,而且MATLAB的库函数同用户文件在形成上一样,所以用户文件也可以作为MATLAB的库函数被调用。因而,开发者可以根据自己的需要方便地建立和扩充新的库函数,以便提高MATLAB的使用效率和扩充它的功能。另外,为了充分利用FORTRAN语言中方便地使用MATLAB的数值计算功能,这些良好的交互性使程序员可以使用以前编写过的程序,减少重复性工作,也使编写的程序具有可重复利用的价值。(4)移植性和开放性好MATLAB是用C语言编写的,而C语言的可移植性很好。于是,MATLAB可以很方便地被移植到能运行

53、C语言的操作平台上。MATLAB适合的工作平台有Windows系列、UNIX、Linux、VMS 6.1和PowerMac。除了内部函数外,MATLAB所有的核心文件和工具箱文件都是公开的,都是可读可写的源文件,用户可以通过对源文件的修改和自己编程构成新的工具箱。(5)语句简单,内涵丰富MATLAB语言中最基本最重要的成分是函数,其一般形式为a,b,c=fun(d,e,f,),即一个函数由函数名、输入变量“d,e,f,”和输出变量“a,b,c,”组成。同一个函数名、不同数目的输入变量及不同数目的输出变量,代表着不同的含义。这不仅使MATLAB的库函数功能更丰富,而且大大减小了所需要的磁盘空间,

54、使得用MATLAB编写的M文件简单、短小而高效。(6)高效方便的矩阵和数组运算MATLAB语言像BASIC、FORTRAN和C语言一样规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以原封不动地照搬到数组间的运算中,有些运算符只要增加“.”就可用于数组间的运算。另外,它不需要定义数组的维数,只需要给出矩阵的函数、特殊矩阵专门的库函数,使之在求解诸如信号处理、建模、系统识别、控制、优化等领域的问题时,显得更加简捷、高效,这是其他高级语言所不能比拟的。在此基础上,高版本的MATLAB已逐步扩展到科学及工程计算的其他领域。因此,不久的将来,它一定能名副其

55、实地成为“万能演算纸”式的科学算法语言。(7)方便的绘图功能MATLAB的绘图功能是十份方便的,它有一系列绘图函数,如线性坐标、对数坐标、半对数坐标及极坐标。使用时均只需要调用不同的绘图函数,在图上标出图题、XY轴标注,格(栅)绘制也只需要调用相应的命令,简单易行。另外,在调用绘图函数时可以通过调整自变量给出不变颜色的点、线、复线或多重线。这种为科学研究着想的设计是其他通用的编程语言所不及的。5.4 MATLAB语言的优势(1)友好的工作平台和编程环境MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历

56、史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。(2)简单易用的程序语言Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可

57、以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C语言基础上的,因此语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。(3)强大的科学计算机数据处理能力MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以

58、用它来代替底层编程语言,如C和C+ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。(4)出色的图形处理功能图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维

59、和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。(5)应用广泛的模块集合工具箱M

60、ATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。(6)实用

61、的程序接口和发布平台新版本的MATLAB可以利用MATLAB编译器和C/C+数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C+代码。允许用户编写可以和MATLAB进行交互的C或C+语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。5.5 MATLAB数组与矩阵MATLA

62、B特擅长数组(array)及矩阵(matrix)运算,而这两者基本运算的性质完全不同,数组强调元素对元素的运算,而矩阵则采用线性代数的运算方式。数组多由一维元素构成,而矩阵中多维元素组成。常用这样的语句来建立一维数组:x = 起始值:步长:终止值,例如 x = 0:0.l:l 则可以生成从0开始,每次递增0.l,一直到1的11个数构成的一维数组x。同样也可以用linspace(起始值,终止值,等分数)命令,例如运行xlinspace(0,l,50),则可以生成从0到1,等分成50等份的51个数组成的一维数组x。若不给出等分数,则自动进行100等分处理。5.6 MATLAB函数MATLAB之所以

63、运算功能强大,重要原因之一就是它含有丰富的内建函数,例如数学函数中的三角函数、复函数、多项式函数、数据分析函数的求平均值、最大最小值、排序等,以及逻辑选择函数如ifelse等,还有用来模拟随机发生事件的随机函数。虽然MATLAB提供了数百种内建函数,但也不是包罗万象,为了解决这个问题,MATLAB提供了十分方便的自定义函数(自建函数)的强大功能。(l)常见数学函数MATLAB提供了许多内建函数,如对数函数、三角函数、多项式函数等。使用函数需注意,函数名要放在等式的右边,等式左边是计算这个函数的表达式。此外,函数可以嵌套,被当作另一个函数的自变量调用。一些常用的内建函数的格式和功能如下:round(x)按四舍五入,对x取整fix(x)将x值近似至最接近0的整数floor(x)将x值近似至最接近-¥的整数ceil(x)将x值近似至最接近¥的整数sign(x)检验x的符号,x0返回值为-1, x=0 返回值为0,x0返回值为1rem(x,y)求xy的余数exp(x)指数函数log(x)以e为底的对数函数即自然对数log10(x)以10为底的对数函数用fzero函数来求解,它的基本原理就是找x的值,将此x值代人时,能使该函数

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!