收藏 分享(赏)

人脸识别课程设计.docx

上传人:HR专家 文档编号:5210064 上传时间:2019-02-12 格式:DOCX 页数:30 大小:1.16MB
下载 相关 举报
人脸识别课程设计.docx_第1页
第1页 / 共30页
人脸识别课程设计.docx_第2页
第2页 / 共30页
人脸识别课程设计.docx_第3页
第3页 / 共30页
人脸识别课程设计.docx_第4页
第4页 / 共30页
人脸识别课程设计.docx_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、基于 Matlab 的人脸识别课程设计题 目:基于 MATLAB 的人脸识别院 系: 信 息 工 程 学 院 专 业: 电 子 信 息 工 程 姓 名: 黄 军 红 学 号: 201107030107 指导老师: 何 江 萍 基于 MATLAB 的人脸识别课程设计摘要人脸识别因其在安全验证系统、信用卡验证、医学、档案管理、视频会议、人机交互、系统公安(罪犯识别等)等方面的巨大应用前景而越来越成为当前模式识别和人工智能领域的一个研究热点。本文提出了基于24位彩色图像对人脸进行识别的方法,介绍的主要内容是图像处理,它在整个软件中占有极其重要的地位,图像处理的好坏直接影响着定位和识别的准确率。本软件

2、主要用到的图像处理技术是:光线补偿、高斯平滑和二值化。在识别前,先对图像进行补光处理,再通过肤色获得可能的脸部区域,最后根据人脸固有眼睛的对称性来确定是否就是人脸,同时采用高斯平滑来消除图像的噪声,再进行二值化,二值化主要采用局域取阈值方法,接下来就进行定位、提取特征值和识别等操作。经过测试,图像预处理模块对图像的处理达到了较好的效果,提高了定位和识别的正确率。【关键字】:人脸识别;光线补偿;高斯平滑;对比度增强基于 MATLAB 的人脸识别课程设计AbstractFace recognition is a complex and difficult problem that is impor

3、tant for surveillance and security, telecommunications, digital libraries , video meeting, and human-computer intelligent interactions. The paper introduced the method of face recognition that based on the 24 bit multicolor image, Main content that the paper introduced is the picture treatment, It o

4、ccupies the extremely important position in the whole software, the quality of picture process directly influenced the accuracy rate of localization and discerning. The picture process technology that the software mainly used included : light compensating、gauss smooth and twain value method. before

5、discerning, we compensated the light for image, then we could obtain the possible face area through the complexion, finally, the system could depend on the symmetry of eyes to make sure whether it is the face of people, at the same time, the system could eliminate noises through the method that name

6、d gauss smoothness, then we used twain value method to deal with picture,the method got the threshold value in face area . After dealing with picture , the following operations are localization、draw characteristic value 、discerning and so on . After testing, we made true that the picture pretreatmen

7、t modal has get the better effect in the process of dealing with picture, and improve the exactness rate of localization and discerning.【key word】: Face recognition; light compensating; gauss smooth;contrast enhancing 基于 MATLAB 的人脸识别课程设计目 录一、 绪论 .11. 背景 .12. 人脸识别技术研究的意义 13. 发展史 .21) 国外的发展 22) 国内的发展

8、3二、 系统的需求分析和方案选择 31. 可行性分析 31) 技术可行性 32) 操作可行性 42. 需求分析 43. 预处理法案选择 51) 设计方案的原则选择 52) 图像文件格式选择 53) 开发工具选择 54) 算法选择分析 6三、 系统概要设计 7四、 系统详细设计 91. 系统整体设计流程图 92. 图像处理详细设计 103. 编程时的问题解决 19五、 测试 .201. 测试方案的选择原则 212. 测试方案 .21结束语 .23参考文献 .24基于 MATLAB 的人脸识别课程设计基于 MATLAB 的人脸识别课程设计1一、 绪论1. 背景随着安全入口控制和金融贸易方面应用需要

9、的快速增长,生物统计识别技术得到了新的重视。目前,微电子和视觉系统方面取得的新进展,使该领域中高性能自动识别技术的实现代价降低到了可以接受的程度。而人脸识别是所有的生物识别方法中应用最广泛的技术之一,人脸识别技术是一项近年来兴起的,但不大为人所知的新技术。人们更多的是在电影中看到这种技术的神奇应用:警察将偷拍到的嫌疑犯的脸部照片,输入到电脑中,与警方数据库中的资料进行比对,并找出该嫌犯的详细资料和犯罪记录。这并非虚构的情节。在国外,人脸识别技术早已被大量使用在国家重要部门以及军警等安防部门。在国内,对于人脸识别技术的研究始于上世纪 90 年代,目前主要应用在公安、金 融、网络安全、物业管理以及

10、考勤等领域。2. 人脸识别技术研究的意义 富有挑战性的课题 面部关键特征定位及人脸 2D 形状检测技术 面部感知系统的重要内容视频输入 人脸检测和跟踪 面部特征定位人脸识别表情分析性别判断种族判断年龄判别唇 读身份信息情感状态性别信息种族信息年龄信息唇形类别基于 MATLAB 的人脸识别课程设计23. 发展史1) 国外的发展见诸文献的机器自动人脸识别研究开始于1966年PRI的Bledsoe的工作,1990年日本研制的人像识别机,可在1秒钟内中从3500人中识别到你要找的人。1993年,美国国防部高级研究项目署 (Advanced Research Projects Agency)和美国陆军研

11、究实验室(Army Research Laboratory)成立了Feret(Face Recognition Technology) 项目组,建立了feret 人脸数据库,用于评价人脸识别算法的性能。美国陆军实验室也是利用 vc+开发,通过软件实现的,并且 FAR 为49%。在美国的进行的公开测试中,FAR,为 53%。美国国防部高级研究项目署,利用半自动和全自动算法。这种算法需要人工或自动指出图像中人的两眼的中心坐标,然后进行识别。在机场开展的测试中,系统发出的错误警报太多,国外的一些高校(卡内基梅隆大学(Carnegie Mellon University)为首,麻省理工大学(Massa

12、chusetts Institute of Technology )等,英国的雷丁大学(University of Reading) )和公司( Visionics 公司 Facelt 人脸识别系统、Viiage 的 FaceFINDER 身份验证系统、Lau Tech 公司Hunter 系统、德国的 BioID 系统等)的工程研究工作也主要放在公安、刑事方面,在考试验证系统的实现方面深入研究并不多。2) 国内的发展人脸识别系统现在在大多数领域中起到举足轻重的作用,尤其是用在机关单位的安全和考勤、网络安全、银行、海关边检、物业管理、军队安全、智能身份证、智能门禁、司机驾照验证、计算机登录系统。

13、我国在这方面也取得了较好的成就,国家863项目“面像检测与识别核心技术” 通过成果鉴定并初步应用,就标志着我国在人脸识别这一当今热点科研领域掌握了一定的核心技术。北京科瑞奇技术开发股份有限公司在2002年开发了一种人脸鉴别系统,对人脸图像进行处理,消除了照相机的影响,再对图像进行特征提取和识别。这对于人脸鉴别特别有价值,因为人脸鉴别通常使用正面照,要鉴别的人脸图像是不同时期拍摄的,使用的照相机不一样。系统可以接受时间间隔较长的照片,并能达到较高的识别率,在计算机中库藏2300人的正面照片,每人一张照片,使用相距1-7 年、差别比较基于 MATLAB 的人脸识别课程设计3大的照片去查询,首选率可

14、以达到50%,前20张输出照片中包含有与输入照片为同一人的照片的概率可达70% 。 2005年1月18日,由清华大学电子系人脸识别课题组负责人苏光大教授主持承担的国家“十五“ 攻关项目人脸识别系统通过了由公安部主持的专家鉴定。鉴定委员会认为,该项技术处于国内领先水平和国际先进水平。二、 系统的需求分析和方案选择在开发该人脸识别软件之前,我们查询了前人所写过的诸多论文以及源程序,在开发之时,结合了资料中的算法并揉进了自己的一些思想,使程序可以对人脸图片进行简易识别。1. 可行性分析1)技术可行性图像的处理方法很多,我们可以根据需要,有选择地使用各种方法。在确定脸部区域上,通常使用的方法有肤色提取

15、。肤色提取,则对脸部区域的获取则比较准确,成功率达到 95%以上,并且速度快,减少很多工作。图像的亮度变化,由于图像的亮度在不同环境的当中,必然受到不同光线的影响,图像就变得太暗或太亮,我们就要对它的亮度进行调整,主要采取的措施是对图像进行光线补偿。高斯平滑:在图像的采集过程中,由于各种因素的影响 ,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等, 这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。灰度变换:进行灰度处理,我们要保证图像信息尽可能少的丢失。同样在进行灰度变换前,我们也要对图像的信息进行统计,找出一个比较合理的灰度值,才能进行灰度

16、变换。灰度均衡:灰度变换后,就要进行灰度均衡,可以根据灰度分布来进基于 MATLAB 的人脸识别课程设计4行灰度均衡。对比度增强:将所要处理的区域和周围图像区域进一步拉开他们的对比度,使它们更加明显,主要通过像素的聚集来实现。2)操作可行性该人脸识别软件需要如下的运行环境:CPU:500M 及以上;内存:64 M 及以上。安装有 Windows 98、Windows Me、Windows 2000、Windows NT 等操作系统中的其中一种。另还装有摄像头可进行随机拍照和识别。因此,从操作可行性来看,只要系统用户的硬件软件设备满足以上条件,即可用该人脸识别软件进行人脸的识别。2. 需求分析

17、应用程序的功能需求分析该软件最主要的功能就是要能识别出人脸,首先该系统需要对通过摄像头拍照而获取到的原始的人脸图片进行一系列处理才可进行下一步的工作,该处理过程也称图像预处理。预处理这个模块在整个人脸识别系统的开发过程中占有很重要的地位,只有预处理模块做的好,才可能很好的完成后面的人脸定位和特征提取这两大关键模块。因此本设计中所要完成的主要功能如下所述: 图像获取功能:该模块主要是从摄像头拍照后进行获取图片,也可以从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。 图像预处理功能:该模块主要包括图像光线补偿、图像变成灰色、高斯平滑、均衡直方图、实现图像对比度增强、二值化变换等

18、。 人脸定位功能:该模块主要是将处理后的人脸图片进行定位,将眼睛、鼻子、嘴巴标记出来,以便进行特征提取。 特征提取功能:该模块是在定位后的人脸图片中将眼睛、鼻子、嘴巴的特征值提取出来。 识别功能:该模块是将从图片中提取的特征值和后台数据库中的值进行比较来完成识别功能。基于 MATLAB 的人脸识别课程设计53. 预处理法案选择1)设计方案的原则选择本应用程序的设计方案原则如下: 采用较为先进的技术力量,保证应用程序在技术上具备一定的优势。 采用成熟的技术,保证应用程序的安全性和可靠性。 应用程序便于扩展和维护,易于技术的更新。 应用程序充分利用现有的资源,尽量减少不必要的再投资。 编写的代码必

19、须严谨易读,代码的解释必须清楚明白,为应用程序的再开发提供应尽的责任。2)图像文件格式选择在设计的过程中,为了定位和特征提取的方便,我们采用的是 24 位位图。3)开发工具选择Matlab2012b4)算法选择分析本文主要研究的对象是图像预处理模块,该模块分为光线补偿、图像灰度化、高斯平滑、图像对比度增强、均衡直方图,每个小模块的实现都有许多相应的算法。下面将本系统采用的算法进行介绍:光线补偿 :由于光线原因,所照的图像可能会存在光线不平衡的情况而造成色彩偏差,为了抵消这种整个图像中存在的色彩偏差,本系统采用的解决方法是:将整个图像中的所有像素的亮度从高到低进行排列,取前5%的像素,然后线性放

20、大,使这些像素的平均亮度达到 255。实际上就是调整图片像素的 RGB 值。图像灰度化:图像灰度化是将图像变成灰色,本系统中采用以下步骤来实现图像的灰度化:彩色转换成灰度、灰度比例变换、灰度线性变换、基于 MATLAB 的人脸识别课程设计6灰度线性截断、灰度取反。高斯平滑:在图像的采集过程中,由于各种因素的影响 ,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等, 这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。但是如果平滑不当,就会使图像本身的细节如边界轮廓、线条等变的模糊不清,为了既平滑掉噪声有尽量保持图像细节,本系统采用高斯平滑。均衡直方

21、图:使用该模块的目的是通过点运算使输入转换为在每一灰度级上都有相同的像素点数的输出图像。它的实现主要是利用灰度均衡的转换式DB = f ( DA) = H( u) du 。 (式 1)0Max图像对比度增强:为了将图像的特征一步一步显现出来,需要进行图像的对比度增强,它主要通过对图像的灰度值进行统计,对于小于 Low则认为是有关的信息,则将它作为黑色处理,对于处于 High 以上的则认为是一些无关的信息,将它们去掉,而处于两者之间的,则进行对比度增强,将他们在总的灰度值里面的比例作为新的像素信息保存起来。三、 系统概要设计 各模块功能概述以上是该系统的总体结构设计图以及图像预处理模块的层次图。

22、下面介绍系统中的各模块的功能及算法: 图像获取模块该模块主要是从摄像头拍照后进行获取图片,也可以从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。 人脸区域获取该系统中图像里人脸区域的获取,主要是根据肤色来进行获取,通过肤色非线形分段色彩变换来实现。这一非线性分段色彩变换得到的肤色模型属于色彩空间中的聚类模型,这一类肤色模型的建立首先要选取一种合适的色彩空间。基于 MATLAB 的人脸识别课程设计7 图像预处理模块图像预处理就是对获取得来的图像进行适当的处理,使它具有的特征能够在图像中明显的表现出来。该模块中的子模块有如下 5 个,下面对它们进行概述:光线补偿3因为系统得到的

23、图片可能会存在光线不平衡的情况,这会影响我们对特征的提取,同时系统中要用到YcrCB色彩空间,所以有必要对图像进行光线补偿。尽可能将它的特征在图像中表现出来。YcrCB是一种色彩空间,它用于视频系统中,在该色彩空间中,Y分量表示像素的亮度, Cr表示红色分量,Cb 表示蓝色分量,通常把Cr和Cb称为色度。YcrCB色彩空间是以演播室质量标准为目标的CC601编码方案中采用的彩色表示模型。灰度变化4图像灰度化的过程就是把彩色图像转换为黑白色图像的过程,它也是为了将图像的信息更加具体、简单的表现出来,但是,这样做也将会丢失图像信息。因此,尽可能在转化的过程中用简单的方式表现图像复杂的信息。高斯平滑

24、处理5高斯平滑将对图像进行平滑处理,在图像采集过程中,由于各种因素的影响,图像往往会出现一些不规则的噪声,入图像在传输、存储等都有可能产生数据的丢失。从而影响图像的质量。处理噪声的过程称为平滑。平滑可以降低图像的视觉噪声,同时出去图像中的高频部分后,那些本来不明显的低频成分更容易识别。平滑可以通过卷积来实现。经过卷积平滑后的水平投影后,二值化提供了较好的图像效果。对比度增强6对比度增强,就是对图像的进一步处理,将对比度再一次拉开。它针对原始图像的每一个像素直接对其灰度进行处理的,其处理过程主要是通过增强函数对像素的灰度级进行运算并将运算结果作为该像素的新灰度值来实现的。通过改变选用的增强函数的

25、解析表达式就可以得到不同的处理基于 MATLAB 的人脸识别课程设计8效果。二值化7二值化的目的是将采集获得的多层次灰度图像处理成二值图像,以便于分析理解和识别并减少计算量。二值化就是通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素, “1”表示黑色,“0”表示白色,当然也可以倒过来表示,这种图像称之为二值图像。这便有利于我们对特征的提取。该设计中采用组内方差和组外方差来实现二值化。直方图均衡8直方图均衡化的目的是使一输入图像转换为在每一灰度级上都有相同的象素点数,它的处理的中心思想是把原始图像的灰度直

26、方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布,它的研究思路是:通过直方图变换式来进行直方图的均衡处理,直方图变换式是 但是直方图均衡化存在着两个缺点:变换后图像的灰度级减少,某些细节消失;某些图像,如直方图有高峰,经处理后对比度不自然的过分增 强。 人脸定位模块人脸定位是将典型的脸部特征(如眼睛,鼻尖,嘴唇等等)标记出来,在本系统中,定位的特征是眼睛,鼻尖和嘴巴三个。由于眼睛具有对称性,因此可以很快就能标记出来,而鼻子是在眼睛下面,且嘴巴在鼻子下面,所以只要眼睛标记好,鼻子和嘴巴也能相应的标记出来。 特征提取模块特征提取按以下 4 个步骤进行: 提取两只眼睛的距离 眼睛的倾角度1

27、ABHfD基于 MATLAB 的人脸识别课程设计9 眼睛、嘴巴的重心 用一个矩形标出每一个特征在特征提取完之后将会得到相应的特征值以便存入后台数据库。 识别模块该模块通过与库存中的特征向量进行比较,找出与特征最相近的参数,再对该参数进一步分析。如果分析在我们所确认的范围内,我们就认为该人就是我们所要找的。然后从库存中提取出该人相关的信息,并显示出来。如果库存中没有,则给出提示是否对存库作为样本。四、 系统详细设计1. 系统整体设计流程图2. 图像处理详细设计图像点运算是一种既简单又重要的技术,它能让用户改变图像数据占据的灰度范围,一幅输入图像经过点运算后将产生一幅新的输出图像,由输入像素点的灰

28、度值决定相应的输出像素点的灰度值,点运算与局部运算的差别在于:输入1、启动本系统,进入人脸识别系统界面。2、点击摄像键,然后进行拍照,并将图像显示并保存。1、对图片进行光线补偿、将图片变成灰色、实现图片对比度增强,二值化变换等一系列预处理。2、将处理好的人脸图片进行定位,标出眼睛、鼻尖和嘴巴。3、对定位好的人脸图片进行特征提取操作。1、识别出图片上的人。2、结束退出输出基于 MATLAB 的人脸识别课程设计10后者每个输出像素的灰度值由对应输入像素的一个领域内几个像素的灰度值决定。所以,点运算不可以改变图像内的空间关系。点运算可以按照预定的方式改变一幅图的灰度直方图。除了灰度级的改变是根据某种

29、特定的灰度变换函数进行之外,点运算可以看作是“从像素到像素”的复制操作。如果输入图像为 A(x,y) ,输出图像为 B(x,y) ,则点运算可表示为:B(x,y) = fA(x,y) (式 2)其中函数 f(D)被称为灰度变换(Gray Scale Transformation ,GST)函数,它描述了输入灰度值和输出灰度值之间的转换关系,一旦灰度变换函数确定,该点运算就完全被确定下来了。点运算有时又称为对比度增强、对比度拉伸或灰度变换,它是图像数字化软件和图像显示软件的重要组成部分。下面将对本设计解决各图像点处理模块运用进行到的理论和编程实现进行详细讲述。(1) 光线补偿(1)算法思想:光线

30、补偿的想法的提出主要是考虑到肤色等色彩信息经常受到光源颜色、图像采集设备的色彩偏差等因素的影响,而在整体上偏离本质色彩而向某一方向移动,即我们通常所说的色彩偏冷、偏暖、照片偏黄、便蓝等等。这种现象在艺术照片中更为常见。所以Anil K.Jain等提出,为了抵消这种整个图像中存在着的色彩偏差,我们将整个图像中所有像素亮度(是经过了非线形r-校正后的亮度)从高到低进行排列,取前5%的像素,如果这些像素的数目足够多(例如,大于100 ) ,我们就将它们的亮度作为“参考白” (Reference White) ,也即将它们的色彩的R、G、B分量值都调整为255 。整幅图像的其他像素点的色彩值也都按这一

31、调整尺度进行交换。 (2) 具体实现光线补偿功能:明白了光线补偿这功能的算法及思想,就可以编码实现其功能了,实现过程如下:、 编辑菜单 IDR_MAINFRAM,先在其中添加一菜单项,将其命名为“预处理” ,并在其属性栏中将其设为“弹出”菜单,点击预处理该菜单项将会弹出一个新的子菜单,此时把该子菜单命名为“光线补偿” ,并把其 ID 设为ID_READY_LIGHTINGCONPENSATE,对应文件 FaceDetectViewCpp 中的函数ReadyLightingconpensate()实现,并在 void CFaceDetectView: OnReadyLightingconpens

32、ate()中添加如下代码:基于 MATLAB 的人脸识别课程设计11hDIBTemp = gDib.CopyHandle(hDIB);gDib.LightingCompensate(hDIB);GlobalUnlock(hDIB);Invalidate();光线补偿功能实质上是用上段代码中的 LightingCompensate()函数来进行实现。函数 LightingCompensate()是类 DIB 的一个成员函数。其核心代码如下所述:/下面的循环对图像进行光线补偿for(i =0;iPixelOffset(i,j,wBytesPerLine); /得到蓝色分量*(lpData+lOff

33、set) = colorb;/绿色分量colorb = *(lpData+lOffset+1);colorb *=co;if(colorb 255)colorb = 255;*(lpData+lOffset+1) = colorb;/红色分量colorb = *(lpData+lOffset+2);colorb *=co;if(colorb 255)colorb = 255;*(lpData+lOffset+2) = colorb;基于 MATLAB 的人脸识别课程设计12 光线补偿的效果图如下所示 :图 4-1 原图图 4-2 光线补偿效果图(2) 2、 图像灰度化(1)算法思想 彩色转换成

34、灰度将彩色图像转化为灰阶图像常采用如下的经验式:基于 MATLAB 的人脸识别课程设计13gray0.39R0.50G 0.11 B(式 3)其中,gray 为灰度值,R、G、B 分别为红色、绿色和蓝色分量值。 灰度比例变换灰度比例变换是把原像素的灰度乘以一个缩放因子,并最后截至0,255。 灰度线性变换当图像由于成像时曝光不足或曝光过度,会产生对比度不足的弊病,从而使图像中的细节分辨不清。将图像灰度进行线性扩展,常能显著地改善图像的外观。灰度线性变换的计算式为:g = ,)(bafcabfd(式 4)f,其他式中,f 是原像素的灰度,g 为变换后的灰度。该变换把属于a,b的灰度级变换至灰度区

35、间c,d,而没有在a,b区间的原像素灰度将保持不变。这里a, b,c ,d,f,g 均为0,255之间的整数值。可见,a 被映射为 c,b 被映射为d。 灰度线性截断灰度线性截断的思想是:如果原像素的灰度小于 a,则该像素的灰度等于c;如果原像素的灰度大于 b,则该像素的灰度等于 d。(2)具体实现灰度化功能在明白了灰度化的原理之后,就可进行编码来实现该功能。 编辑菜单 IDR_MAINFRAM,先在其中添加一菜单项,将其命名为”图像灰度化”, 并将其 ID 号设为 ID_READY_SCALE, 对应文件 FaceDetectViewCpp 中的函数 ReadyLightingconpens

36、ate()实现. 现该模块的核心代码如下:获取蓝色分量ColorB=*(lpData + lOffset); 获取绿色分量ColorG=*(lpData + lOffset+1); 获取红色分量ColorR=*(lpData + lOffset+2); 计算灰度值gray = (ColorG*50+ColorR*39+ColorB*11)/100;基于 MATLAB 的人脸识别课程设计14显示灰度图像*(lpData + lOffset)=gray ; *(lpData + lOffset+1)=gray ;*(lpData + lOffset+2)=gray ;其中 lpData 是图片数据

37、区,lOffset 是图片像素的偏移,gray 是图像的灰度值 图像灰度化效果图:图 4-3 图像灰度化效果图(3) 3、高斯平滑(1) 算法思想在介绍高斯平滑前,先介绍模板操作。模板操作是数字图像处理中经常用到的一种运算方法,图像的平滑、锐化以及细化、边缘检测都要用到模板操作通常的处理是:将中心点周围八个点的像素值乘于各自矩阵相应的系数后相加得到一个值,然后将这个值乘上中心点的系数,中心点的像素值赋为得到的最后值。一般来说,不同的噪声有各自针对性的卷积算法。本文使用的卷积算法是高斯卷积核,亦即上面卷积核的 LP3。高斯卷积是通过采样 2 维高斯函数得到的。高斯平滑算法的优点是平滑后图像的失真

38、少,算法更具备通用性 ,能去除不同的噪声干扰。需要注意的是:在平滑处理时,图像边界点无法处理 ,因此循环范围应设定在图像边界内。(2) 具体实现高斯平滑功能知道高斯平滑原理之后,可进行编码将其实现: 编辑菜单 IDR_MAINFRAM,在菜单“预处理”中添加一子菜单项,命名基于 MATLAB 的人脸识别课程设计15为“高斯平滑”并将其 ID 设为 ID_READY_Template。 在类 CFaceDetectView 中添加“高斯平滑”菜单项的事件处理程序,其代码如下:/进行模板操作Template(tem ,3,3, xishu); Invalidate(TRUE); 其中 tem 是模

39、板参数,xishu 是模板系数;Template()函数是实现高斯平滑的主要函数,其核心代码是:for(m=i-(tem_h-1)/2);m255)sum=255;HeightTemplateij = sum; 高斯平滑效果图:见下图 4-4基于 MATLAB 的人脸识别课程设计16图 4-4 高斯平滑效果图(4) 灰度均衡(1)算法思想灰度均衡也称直方图均衡,目的是通过点运算使输入转换为在每一灰度级上都有相同的像素点数的输出图像(即输出的直方图是平的) 。这对于在进行图像比较或分割之前将图像转化为一级的格式是十分有效的。按照图像的概率密度函数(PDF ,归一化带单位面积的直方图)的定义:P(

40、x) = * H(x) (式 5)01A其中 H(x)为直方图, A0 为图像的面积,设转换前图像的概率密度函数为Pr(r ) ,转换后图像的概率密度函数为 Ps(S) ,转换函数为 s = f(r ) ,由概率论知识,我们可以得到:Ps(S) = Pr(r)* (式 6)dsr这样,如果想使转换后图像的概率密度函数为 1(即直方图是平的)则必须满足:Pr(r)= (式 45 )dsr等式两边积分,得: S = f( r)= 0 rP2(u)du = 0 rH(u)du (式 7)1A基于 MATLAB 的人脸识别课程设计17该转换式被称为图像的累积分布函数上面的式是被归一化后推导的对于没有归

41、一化的情况,只要求以最大的灰度值(DMax ,对于灰度图就是 255)即可,灰度均衡的转换式为:DB = f (DA )= H(u)du (式 1)0Max 对于离散图像转换式为:DB = f(DA) = (式 8) aDA0i式中 Hi 为第 i 级灰度的像素个数。(2)编程实现在灰度均衡操作同样不需要改变 DIB 的调色板和文件夹,只要把指向 DIB像素起始位置的指针和 DIB 高度、宽度信息传递给子函数就可以完成灰度均衡变换工作,其核心代码如下: *(lpData + lOffset)=state ; /显示灰度均衡*(lpData + lOffset+1)=state ;*(lpDat

42、a + lOffset+2)=state ;(3)效果图图 4-5 灰度均衡效果图(5) 图像对比度增强(1) 算法思想:基于 MATLAB 的人脸识别课程设计18在对图像均衡直方图处理以后,便可对图像进行对比度增强,进一步拉开对比度。它通过对图像的灰度值进行统计,对于比最小设定值小的则认为是有关的信息,则将它作为黑色处理,比最大设定值大的则认为是一些无关的信息,将它们去掉,而处于两者之间的,则进行对比度增强,将他们在总的灰度值里面的比例作为新的像素信息保存起来。这个工作的主要目的是将图像的特征一步一步显现出来。(2) 编码实现: 编辑菜单 IDR_MAINFRAM,在菜单“预处理”中添加一子

43、菜单项,命名为“实现图像对比度增强” ,并将其 ID 设为ID_READY_ContrastEnhance。 类 CFaceDetectView 中添加“实现图像对比度增强 ”菜单项的事件处理程序,其代码如下;lOffset = gDib.PixelOffset(i, j, gwBytesPerLine);获取图像灰度增强函数int state=IncreaseContrast(ZFTkk1, 100); 显示灰度增强后的图像*(lpData + lOffset ) = state ;*(lpData + lOffset+1) = state ;*(lpData + lOffset+2) =

44、state ;其中 IncreaseContras()函数是实现图像对比度增强的关键函数,该根据参数 n 来调节对比度,n 越大,对比越强烈,其核心是:如果数据很小,设置为 0if(pByte=Low)return 0;获得中间数据,并进行对比增强处理else if (LowpByte)如果数据很大,设置为 255elsereturn 255; 效果图基于 MATLAB 的人脸识别课程设计193. 编程时的问题解决 光线补偿由于要改变每一个像素的亮度,开始,我通过对数幅图像使用一个固定的值进行测试,得到的效果都满理想,但是当对更多的图像处理时,该固定值就出现了明显的不足,最后不得不采用全局统计

45、的方法,才能得到比较理想的效果。 高斯平滑高斯平滑用于消除图片噪音,为了实现此功能,我们使用了模板操作,因此模板参数的选择是最重要的。高斯平滑效果的好坏取决与模板参数。在编程的时候,试探性的进行参数的选择,然后进行比较,看那组参数可以达到最好的效果。模板参数是原先采用了1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 形式,但是,得到的效果却是令人失望。后来又用了1/10 1/10 1/101/10 1/5 1/10基于 MATLAB 的人脸识别课程设计201/10 1/10 1/10形式,但是,结果仍然是未能达到预期的效果。直到最后采用的1/16 2/16 1/162/

46、16 4/16 2/161/16 2/16 1/16 形式,才得到了比较合理的效果。 均衡直方图开始时,图像的会度一直都处于很散的状态,而且图像的特征不明显,原本想经过高斯平滑后进行灰度变换,但是并未能成功。经过了一翻苦战,最终找到均衡直方图的办法,经过多次尝试,效果一直处于比较理想的状态。五、 测试测试是为了找出程序的错误。正如测试的规则所确定的一样:测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了迄今为止尚未发现的错误的测试。1. 测试方案的选择原则应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。(1) 测

47、试用例应由测试输入数据和与之对应的预期输出结果两部分组成。程序员应避免检查自己的程序。 (注意不是指对程序的调试)(2) 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件。(3) 充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中以发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。 (4) 严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测基于 MATLAB 的人脸识别课程设计21试资料,测试工具,测试用例的选择,

48、测试的控制方法和过程,系统的组装方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。(5) 应当对每一个测试结果做全面的检查。 (6) 妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。(7) 知道了测试的目的和测试的原则之后,现在进行软件的具体测试,对软件的功能实现进行详细的测试。2. 测试方案本系统主要由图像处理、人脸定位、特征提取、识别四个部分组成,而图像处理对于后面的工作结果好坏起着至关重要的作用,因此从软件开发的最初阶段我们就要对软件进行不断的测试,对图像处理模块中的各个子模块进行测试以便检测经过处理后的图像效果是否达到预期的效果。下面对图像处理模块的测试

49、过程进行描述:图像处理模块 :该模块分为光线补偿、图像变成灰色、均衡直方图、实现图像对比度增强、二值化处理。对该模块进行测试的方法是:采用多张 24位的彩色图像来进行逐一测试,看这些图片经过处理后是否达到预期的效果,如光线补偿模块,则检测所测图片的亮度是否变强;图像灰度化模块的检测则需看所测的彩色图片是否变成灰色;高斯平滑的实现采用了模板操作,因此模板参数的选择对其十分重要,先用图片进行测试来检测平滑效果,如果效果不理想则继续选择模板参数,直至效果理想为止;图像对比度增强是为了将图像的特征一步一步显现出来,在测试的过程中,用含人脸的图片进行检测看是否图像的特征显示出来的是否足够明显。经过测试之后,光线补偿模块将图像的像素亮度增强,并使图片中的光线达到平衡;图像灰度化模块达到了预期的效果,将图片转变为灰色;高斯平滑模块能有效的消除图像噪音,提高了图像质量;而增强图像对比度模块能够较好的把图像特征表现

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 课程设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报