【毕业设计】人脸识别算法研究与实现 (附完整源码)_第1页
【毕业设计】人脸识别算法研究与实现 (附完整源码)_第2页
【毕业设计】人脸识别算法研究与实现 (附完整源码)_第3页
【毕业设计】人脸识别算法研究与实现 (附完整源码)_第4页
【毕业设计】人脸识别算法研究与实现 (附完整源码)_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河北农业大学信息学院本科毕业论文 题 目: 人脸识别算法研究与实现 学 院: 信息科学与技术学院 专 业: 电子信息科学与技术 学生姓名: 学 号: 指导教师: 职 称: 副教授 提交日期: 2013 年 6 月 1 日 答辩日期: 2013 年 6 月 4 日 中 国 · 河北 2013 年 5 月摘要人脸识别技术,作为目前模式识别领域研究的热点也是难点之一,其最早提出可以追溯到1888年”。然而,到目前为止,由于人脸识别问题自身的复杂性,使得虽然有众多科学研究人员潜心研究多年,也做出了许多的成果,但离彻底解决并达到实用,仍旧有很多关键性的问题需要解决。本文对人脸识别做了一定的研究

2、。论文首先介绍了人脸识别的背景、研究范围以及方法,对人脸识别领域的一些理论方法作了总体的介绍。本文中所采用的人脸识别方法是比较经典的PCA(Principle Component Analysis)主成分分析。主要包括:结合人脸库对人脸识别的预处理方法作了较为详细的介绍;介绍了PCA人脸识别的方法;实现了一个基于PCA的实时人脸检测识别原型系统。关键字:MATLAB、图形用户界面GUI、人脸识别、PCAABSTRACT Face recognition technology, as one of the hotspot in research of pattern recognition is

3、 also difficult, its first suggested dates back to 1888. "so far, however, because of the complexity of the face recognition problem itself, that although there are many scientific researchers studying for many years, has made many achievements, but from the resolve and achieve practical, there

4、 are still many key problems need to solve. In this paper, the face recognition to do some research. Paper first introduces the background of face recognition, research scope and method, to some theoretical methods in the field of face recognition has made the overall introduction. Face recognition

5、methods used in this article is the classical PCA (Principle Component Analysis), principal Component Analysis. Mainly includes: combining face library pretreatment method of face recognition has made the detailed introduction; This paper introduces the methods of PCA face recognition; Implements a

6、real-time face detection prototype system based on PCA. keywords: MATLAB, graphical user interface GUI, face recognition, PCA 目录第一章 绪论21.1 概述21.1.1 介绍21.2 课题研究的背景和意义3121研究的背景3122 研究的意义31.2.2.1 重要的学术价值31.2.2.2 很好的应用前景313入脸识别研究的现状与困难4131研究的现状41.3.2 存在的主要困难41.4 论文的内容及安排5第二章 人脸识别实现所使用的工具52.1 Matlab简介52.

7、2 图形用户界面GUI72.2.1 图形用户界面GUI简介72.2.2 图形用户界面 GUI 实例92.2.3 PCA 算法122.3 本章小结12第三章 人脸识别PCA算法及其功能实现133.1 PCA算法分析133.1.1 主成分的一般定义133.1.2 主成分的性质133.1.3 主成分数目的选取143.2 PCA算法功能实现143.2.1 人脸空间的建立143.2.2 特征向量的选取153.2.3 人脸识别15第四章 人脸识别算法测试154.1 实验测试流程15第五章 个人总结18致谢18参考文献19附录-matlab 源码201第一章 绪论1.1 概述1.1.1 介绍随着社会的发展以

8、及技术的进步,尤其是近年内计算机的软硬件性能的飞速提升,各方面对快速高效的自动身份验证的要求日益迫切。生物识别技术在科研领域取得了极大的重视和发展。由于生物特征是人的内在属性,具有很强的自身稳定性和个体差异性,因此是身份验证的最理想依据“1。其中,利用人脸特征进行身份验证又是最自然直接的手段,与指纹、虹膜、掌纹等其他人体生物特征识别系统相比,人脸识别系统更加友好,方便,易于为用户所接受,有广阔的应用领域。例如:如:公安布控监控、监狱监控、司法认证、民航安检、口岸出入控制、海关身份验证、银行密押、智能身份证、智能门禁、智能视频监控、智能出入控制、司机驾照验证、各类银行卡、金融卡、信用卡、储蓄卡持

9、卡人的身份验证,社会保险身份验证等多个方面,还可以应用到医疗和视频会议等方面,表现出其强大的生命力。所谓人脸识别。43(FaceRecognition)就是利用计算机分析人脸图象,从中提取有效的识别信息,用来辨别身份的一门技术。即对已知人脸进行标准化处理后,通过某种方法和数据库中的人脸标本进行匹配,寻找库中对应人脸及该人脸相关信息。 由于生物特征是人的内在属性,具有很强的自身稳定性和个体差异性,因此是身份验证的最理想依据“1。其中,利用人脸特征进行身份验证又是最自然直接的手段,与指纹、虹膜、掌纹等其他人体生物特征识别系统相比,人脸识别系统更加友好,方便,易于为用户所接受,有广阔的应用领域。1。

10、例如:如:公安布控监控、监狱监控、司法认证、民航安检、口岸出入控制、海关身份验证、银行密押、智能身份证、智能门禁、智能视频监控、智能出入控制、司机驾照验证、各类银行卡、金融卡、信用卡、储蓄卡持卡人的身份验证,社会保险身份验证等多个方面,还可以应用到医疗和视频会议等方面,表现出其强大的生命力。从20世纪六十年代末到现在,人脸识别的发展经历了正面人脸识别,基于多姿态和表情的人脸识别,动态跟踪人脸识别和三维人脸识别四个阶段“1。文献。·”是对近十年来人脸识别取得的成果进行了总结。现在,全世界从事人脸识别研究的科研机构很多”1,国外的大学一般都有computer Vision研究组,并有从事

11、人脸图象处理课题的研究小组。其中著名的大学包括MIT,CMU等。国内的清华大学、浙江大学、哈尔滨工业大学和中国科学院的一些研究机构等都从事这方面的研究。同时也出现了一批供人脸识别相关产品的公司。有些国外公司开发的一些人脸识别的产品已经被安全机构使用。1.2 课题研究的背景和意义121研究的背景自70年代以来.随着人工智能技术的兴起.以及人类视觉研究的进展.人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,.这一领域除了它的重大理论价值外,也极具实用价值。在进行人工智能的研究中,人们一直想做的事情就是让机器具有像人类一样的思考能力,以及识别事物、处理事物的能力,因此从

12、解剖学、心理学、行为感知学等各个角度来探求人类的思维机制、以及感知事物、处理事物的机制,并努力将这些机制用于实践,如各种智能机器人的研制。人脸图像的机器识别研究就是在这种背景下兴起的,因为人们发现许多对于人类而言可以轻易做到的事情,而让机器来实现却很难,如人脸图像的识别,语音识别,自然语言理解等。如果能够开发出具有像人类一样的机器识别机制,就能够逐步地了解人类是如何存储信息,并进行处理的,从而最终了解人类的思维机制。同时,进行人脸图像识别研究也具有很大的使用价依。如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。现在己有实用的计算机自动指纹识别系统面世,并在安检等部门得到应用,但还

13、没有通用成熟的人脸自动识别系统出现。人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,因为它取样方便,可以不接触目标就进行识别,从而开发研究的实际意义更大。并且与指纹图像不同的是,人脸图像受很多因素的干扰:人脸表情的多样性;以及外在的成像过程中的光照,图像尺寸,旋转,姿势变化等。使得同一个人,在不同的环境下拍摄所得到的人脸图像不同,有时更会有很大的差别,给识别带来很大难度。因此在各种干扰条件下实现人脸图像的识别,也就更具有挑战性。国外对于人脸图像识别的研究较早,现己有实用系统面世,只是对于成像条件要求较苛刻,应用范围也就较窄,国内也有许多科研机构从事这方而的研究,并己取得许多成果

14、。122 研究的意义1.2.2.1 重要的学术价值目前人脸识别的研究工作牵涉到模式识别、图像处理、计算机视觉、生理学、心理学、以及认知科学和神经网络等多个领域的诸多知识,并与基于其它生物特征的身份鉴别方法以及计算机人机感知交互领域都有密切联系。因此人脸识别研究对于开拓新兴技术领域,促进跨领域的多学科综合发展具有重要的科学意义。1.2.2.2 很好的应用前景人脸识别已成为计算机视觉及相关领域中的关键技术,在身份验证,刑侦破案,入口控制,视频监视,机器人智能化和医学等方面具有广阔的应用前景和商业价值。近年来,人脸识别技术研究非常活跃,除了基于KL变换的特征脸方法与以奇异值特征为代表的代数特征方法取

15、得了新进展外,人工神经网络、小波交换技术在人脸识别研究中都得到了很广泛的应用。而且出现了不少人脸识别的新方法。下面将介绍人脸识别研究的主要内容和方法。13入脸识别研究的现状与困难131研究的现状 目前,国内、外的人脸识别的方法多种多样,并且不断有新的研究成果出现。但是,由于人脸识别问题巨大的复杂性,要建立一个能够完全自动完成人脸识别任务的计算机系统难度是相当大的,这不仅涉及到数字图像处理,而且还涉及到计算机视觉,人工智能和计算机网络及通讯等的多个学科领域的广泛知识。解决特定环境下或某种应用背景下的人脸识别问题,仍将是该领域研究的主要课题。1.3.2 存在的主要困难 尽管已经取得了很多的研究成果

16、,但以下几个问题一直会是今后研究工作的主要难点“2“”所在,将极大影响人脸识别走向实用化。1、人脸本身的特点 一方面是由于人脸姿态的多样性,在自然条件下获得的人脸图象并不总是正面的,人脸的偏转或俯仰会造成面部信息的部分缺失,给精确提取人脸的特征造成一定程度的困难;另一方面是人脸是一个柔性体而不是刚体,并且人脸表情丰富且表情的变化细微而复杂。因此,建立人脸表情模型和情绪分类,把人脸表情描述同面部特征的变化联系起来,利用计算机进行抽象的概括也是一个重要的问题。2、环境的影响 由于受到旋转、距离、尺度,光照,光源方向等不确定因素影响,人脸获取系统取得的人脸图像将表现出非常复杂的模式。光照变化的环境下

17、,每个像素的亮度值还依赖于环境中的各种因素:光源的位置、颜色和亮度,周围物体的影响。目前许多识别方法对光照条件有着不同程度的依赖,过亮、过暗或偏光现象的存在都可能导致识别的急剧下降。因此,对人脸图象进行特征提取和分类之前一般要作预处理。3、计算机本身的限制 三维人脸投影在二维的图像上,虽然有信息的损失,但仍是一种复杂的具有非常高维数的视觉信息,包含了大量的像素数据,并且每一像素都携带了大量的信息。如何利用计算机正确处理巨大的信息量,同时,保证人脸识别系统的实时性要求也是计算机研究的主要难点之一。1.4 论文的内容及安排 第一章即本章主要介绍人脸识别的前景和发展方向以及在现实生活中的应用,同时也

18、讲解了在实际研究中仍存在的一些问题。主要介绍人脸识别系统中所用到的仿真软件Matlab、Matlab图像处理工具GUI、PCA算法。分别介绍了各自的简介和一些典型的算法实例介绍。第三章着重介绍了PCA算法在人脸识别上的应用和功能实现。PCA算法应用中主成分的一般定义、主成分的性质、主成分数目的选取,以及PCA算法功能实现步骤:人脸空间的建立、特征向量的选取和人脸识别。第四章是将已经编写好的程序代码在PC机上运行,选择测试图片与人脸库进行识别,最终计算准确率以进一步改进算法。最后总结了全文的工作并对以后的需要进一步研究的问题进行了展望。第五章是对整个人脸识别研究的总结以及今后的研究方向。第二章

19、人脸识别实现所使用的工具2.1 Matlab简介MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB的优势:1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2) 具有完备的图形处理功能,实

20、现计算结果和编程的可视化;3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。编程环境:MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLA

21、B提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。简单易用:Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C+语言基础上的,因此语法特征与C+语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性

22、好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。强处理能力:MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C+ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组

23、的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。图形处理:MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现

24、等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信

25、号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。2.2 图形用户界面GUI2.2.1 图形用户界面GUI简介图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。 如Windows是以“wintel标准”方式操作的,因为你可以用鼠标来

26、点击按钮来进行操作,很直观。而DOS就不具备GUI,所以他只能输入命令。DOS 的这种界面叫CLI (Command line User Interface ) 命令行模式的人机接口。GUI 是 Graphical User Interface 的简称,即图形用户界面,通常人机交互图形化用户界面设计经常读做“goo-ee”准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。GUI 是一种结合计算机科学、美学、心理学、行为学,及各商业领域需求分析的人机系统工程,强调人机环境三者作为一个系统进行总体设计。这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使

27、其更适合用户的操作需求,直接提升产品的市场竞争力。GUI 即人机交互图形化用户界面设计。纵观国际相关产业在图形化用户界面设计方面的发展现状,许多国际知名公司早已意识到 GUI 在产品方面产生的强大增值功能,以及带动的巨大市场价值,因此在公司内部设立了相关部门专门从事 GUI 的研究与设计,同业间也成立了若干机构,以互相交流 GUI 设计理论与经验为目的。随着中国 IT 产业,移动通讯产业,家电产业的迅猛发展,在产品的人机交互界面设计水平发展上日显滞后,这对于提高产业综合素质,提升与国际同等业者的竞争能力等等方面无疑起了制约的作用。GUI的广泛应用是当今计算机发展的重大成就之一,他极大地方便了非

28、专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。GUI组成部分:在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。在桌面上由于可以重叠显示窗口,因此可以实现多任务化。一般的界面中,桌面上放有各种应用程序和数据的图标,用户可以以此开始工作。桌面与既存的文件夹构成里面相违背,所以要以特殊位置的文件夹的参照形式来定义内容。比如在微软公司的Windows XP系统中,各种用户的桌面内容实际保存在系统盘(默认

29、为C盘):Documents and Settings用户名桌面 文件夹里。墙纸,即桌面背景。可以设置为各种图片和各种附件,成为视觉美观的重要因素之一。应用程序为使用数据而在图形用户界面中设置的基本单元。应用程序和数据在窗口内实现一体化。在窗口中,用户可以在窗口中操作应用程序,进行数据的管理、生成和编辑。通常在窗口四周设有菜单、图标,数据放在中央。在窗口中,根据各种数据/应用程序的内容设有标题栏,一般放在窗口的最上方,并在其中设有最大化、最小化(隐藏窗口,并非消除数据)、最前面、缩进(仅显示标题栏)等动作按钮,可以简单地对窗口进行操作。在窗口中,一个数据在一个窗口内完成的方式。在这种情况下,数

30、据和显示窗口的数量是一样的。若要在其他应用程序的窗口使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。在一个窗口之内进行多个数据管理的方式。这种情况下,窗口的管理简单化,但是操作变为双重管理。将系统可以执行的命令以阶层的方式显示出来的一个界面。一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。重要程度一般是从左到右,越往右重要度越低。命定的层次根据应用程序的不同而不同,一般重视文件的操作、编辑功能,因此放在最左边,然后往右有各种设置等操作,最右边往往设有帮助。一般使用鼠标的第一按钮进行操作。即时菜单(又称功能表)与应用程序准备好的层次菜单不同,在菜单栏以外的地方,

31、通过鼠标的第二按钮调出的菜单称为“弹出菜单”。根据调出位置的不同,菜单内容即时变化,列出所指示的对象可以进行的操作。 显示在管理数据的应用程序中的数据,或者显示应用程序本身。数据管理程序,即在文件夹中用户数据的管理、进行特定数据管理的程序的情况下,数据通过图标显示出来。通常情况下显示的是数据的内容或者与数据相关联的应用程序的图案。另外,点击数据的图标,一般可以之间完成启动相关应用程序以后再显示数据本身这两个步骤的工作。应用程序的图标只能用于启动应用程序。 菜单中,利用程度高的命令用图形表示出来,配置在应用程序中,成为按钮。应用程序中的按钮,通常可以代替菜单。一些使用程度高的命令,不必通过菜单一

32、层层翻动才能调出,极大提高了工作效率。但是,各种用户使用的命令频率是不一样的,因此这种配置一般都是可以由用户自定义编辑。 2.2.2 图形用户界面 GUI 实例这里先简单实现选择图片并在坐标系上显示图片的功能。 1 、新建图形用户界面模板。在菜单栏依次选择 FILE-NEW-GUI-Blank Gui.选择Push Button 和 Axes两个控件。如下图 图2-1 用户图形界面实例图保存文件为test.fig,同时系统自动产生一个同名的test.m文件。在test.m 文件的 Push Button 的回调函数中加入如下的代码:function pushbutton1_Callback(h

33、Object, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) filename, pathname = uigetfile('*', '读取图片'); str=pathname filename; im=imread(str); axes

34、(handles.axes1); imshow(im); titel('选择的图片');执行test.m文件,会弹出下图的窗口:图2-2 图形用户界面实例图按下 Push Button 后选择图片图2-3 图形用户界面实例图打开图片:图2-4 图形用户界面实例图2.2.3 PCA 算法 PCA (personal computer assistant) 个人计算机助理,智能手机时代手机与电脑结合的演变名称 。PCA 主要 用于数据降维,对于一系列例子的特征组成的多维向量,多维向量里的某些元素本身没有区分性,比如某个元素在所有的例子中都为1,或者与1差距不大,那么这个元素本身就没

35、有区分性,用它做特征来区分,贡献会非常小。所以我们的目的是找那些变化大的元素,即方差大的那些维,而去除掉那些变化不大的维,从而使特征留下的都是“精品”,而且计算量也变小了。 对于一个k维的特征来说,相当于它的每一维特征与其他维都是正交的(相当于在多维坐标系中,坐标轴都是垂直的),那么我们可以变化这些维的坐标系,从而使这个特征在某些维上方差大,而在某些维上方差很小。例如,一个45度倾斜的椭圆,在第一坐标系,如果按照x,y坐标来投影,这些点的x和y的属性很难用于区分他们,因为他们在x,y轴上坐标变化的方差都差不多,我们无法根据这个点的某个x属性来判断这个点是哪个,而如果将坐标轴旋转,以椭圆长轴为x

36、轴,则椭圆在长轴上的分布比较长,方差大,而在短轴上的分布短,方差小,所以可以考虑只保留这些点的长轴属性,来区分椭圆上的点,这样,区分性比x,y轴的方法要好!所以我们的做法就是求得一个k维特征的投影矩阵,这个投影矩阵可以将特征从高维降到低维。投影矩阵也可以叫做变换矩阵。新的低维特征必须每个维都正交,特征向量都是正交的。通过求样本矩阵的协方差矩阵,然后求出协方差矩阵的特征向量,这些特征向量就可以构成这个投影矩阵了。特征向量的选择取决于协方差矩阵的特征值的大小。对于一个训练集,100个对象模板,特征是10维,那么它可以建立一个100*10的矩阵,作为样本。求这个样本的协方差矩阵,得到一个10*10的

37、协方差矩阵,然后求出这个协方差矩阵的特征值和特征向量,应该有10个特征值和特征向量,我们根据特征值的大小,取前四个特征值所对应的特征向量,构成一个10*4的矩阵,这个矩阵就是我们要求的特征矩阵,100*10的样本矩阵乘以这个10*4的特征矩阵,就得到了一个100*4的新的降维之后的样本矩阵,每个特征的维数下降了。当给定一个测试的特征集之后,比如1*10维的特征,乘以上面得到的10*4的特征矩阵,便可以得到一个1*4的特征,用这个特征去分类。所以做PCA实际上是求得这个投影矩阵,用高维的特征乘以这个投影矩阵,便可以将高维特征的维数下降到指定的维数。2.3 本章小结本章主要介绍了matlab 和

38、GUI的背景知识,以及PCA算法。其中matlab 是整个程序运行环境,GUI是运行工具,PCA算法是实现人脸识别的必要处理依据。第三章 人脸识别PCA算法及其功能实现 对于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个矢量,如一幅N*N 象素的图像可以视为长度为N2 的矢量,这样就认为这幅图像是位于N2 维空间中的一个点,这种图像的矢量表示就是原始的图像空间,但是这个空间仅是可以表示或者检测图像的许多个空间中的一个。不管子空间的具体形式如何,这种方法用于图像识别的基本思想都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像的这种投影间的某种度量来确

39、定图像间的相似度,最常见的就是各种距离度量。因此,本次试题采用PCA算法并利用GUI实现。对同一个体进行多项观察时,必定涉及多个随机变量X1,X2,Xp,它们都是的相关性, 一时难以综合。这时就需要借助主成分分析来概括诸多信息的主要方面。我们希望有一个或几个较好的综合指标来概括信息,而且希望综合指标互相独立地各代表某一方面的性质。 任何一个度量指标的好坏除了可靠、真实之外,还必须能充分反映个体间的变异。如果有一项指标,不同个体的取值都大同小异,那么该指标不能用来区分不同的个体。由这一点来看,一项指标在个体间的变异越大越好。因此我们把“变异大”作为“好”的标准来寻求综合指标。3.1 PCA算法分

40、析3.1.1 主成分的一般定义设有随机变量X1,X2,Xp, 其样本均数记为 , , ,样本标准差记为S1,S2,Sp。首先作标准化变换,我们有如下的定义: (1) 若C1=a11x1+a12x2+ +a1pxp,且使 Var(C1)最大,则称C1为第一主成分; (2) 若C2=a21x1+a22x2+a2pxp, ,(a21,a22,a2p)垂直于(a11,a12,a1p),且使Var(C2)最大,则称C2为第二主成分; (3) 类似地,可有第三、四、五主成分,至多有p个。3.1.2 主成分的性质 主成分C1,C2,Cp具有如下几个性质: (1) 主成分间互不相关,即对任意i和j,Ci 和C

41、j的相关系数 Corr(Ci,Cj)=0 i¹j(2) 组合系数(ai1,ai2,aip)构成的向量为单位向量,(3) 各主成分的方差是依次递减的, 即 Var(C1)Var(C2)Var(Cp) (4) 总方差不增不减, 即 Var(C1)+Var(C2)+ +Var(Cp) =Var(x1)+Var(x2)+ +Var(xp) =p 这一性质说明,主成分是原变量的线性组合,是对原变量信息的一种改组,主成分不增加总信息量,也不减少总信息量。 (5) 主成分和原变量的相关系数 Corr(Ci,xj)=aij =aij (6) 令X1,X2,Xp的相关矩阵为R, (ai1,ai2,ai

42、p)则是相关矩阵R的第i个特征向量(eigenvector)。而且,特征值li就是第i主成分的方差, 即 Var(Ci)= li 其中li为相关矩阵R的第i个特征值(eigenvalue) ll1l2lp03.1.3 主成分数目的选取前已指出,设有p个随机变量,便有p个主成分。由于总方差不增不减,C1,C2等前几个综合变量的方差较大,而Cp,Cp-1等后几个综合变量的方差较小, 严格说来,只有前几个综合变量才称得上主(要)成份,后几个综合变量实为“次”(要)成份。实践中总是保留前几个,忽略后几个。 保留多少个主成分取决于保留部分的累积方差在方差总和中所占百分比(即累计贡献率),它标志着前几个主

43、成分概括信息之多寡。实践中,粗略规定一个百分比便可决定保留几个主成分;如果多留一个主成分,累积方差增加无几,便不再多留。3.2 PCA算法功能实现3.2.1 人脸空间的建立假设一幅人脸图像包含N个像素点,它可以用一个N维向量表示。这样,训练样本库就可以用i(i=1,.,M)表示。    协方差矩阵C的正交特征向量就是组成人脸空间的基向量,即特征脸。  将特征值由大到小排列:12.r,其对应的特征向量为k。这样每一幅人脸图像都可以投影到由u1,u2,.,ur张成的子空间中。因此,每一幅人脸图像对应于子空间中的一点。同样,子空间的任意一点也对应于一

44、幅图像。3.2.2 特征向量的选取虽然协方差矩阵最多有对应于非零特征值的k(k远小于M)个特征向量,但是通常情况下,k仍然很大,而事实上,根据应用的要求,并非所有的特征向量都有需要保留,而特征空间投影的计算速度是直接与创建子空间所用的特征向量的数目相关,若考虑到计算时间的因素,可以适当的减去一些信息量少的特征向量,而且,去掉这些特征向量之后不一定不利于分类结果,有的情况下反而能够提高识别性能。3.2.3 人脸识别有了这样一个由"特征脸"张成的降维子空间,任何一幅人脸图像都可以向其投影得到一组坐标系数,这组系数表明了该图像在子空间中的位置,从而可以作为人脸识别的依据。换句话说

45、,任何一幅人脸图像都可以表示为这组"特征脸"的线性组合,其加权系数即是K-L变换的展开系数,也可以称为该图像的代数特征。因此,在获得特征脸之后,就可以对每一类别的典型样本进行投影,由此得到每个人脸的投影特征从而构成人脸特征向量,作为下一步识别匹配的搜索空间。  输入图像及其在人脸空间上的投影(重构图像),人脸图像在人脸空间中的投影变化不明显而非人脸图像的投影变化明显。因此,检测一幅图像中是否存在人脸的基本思想是,计算该图像中任意位置处的局部图像与人脸空间之间的距离。其中,是局部图像是否为人脸的度量。因此,计算给定图像任意一点上的,就可以得到一映射图(x,

46、y)。第四章 人脸识别算法测试 4.1 实验测试流程 实验在两个图库上测试,一个是自建人脸库,该库包含10个不同人物,每人有5张不同表情和姿态下的图片,总共50幅。另一个是ORL人脸库,该库包含40个不同人物,每人有10张图片,共400幅。用训练样本进行测试,识别率为100%。而随着训练样本的增加,识别率会有所提升,由于标准人脸库在采集时考虑了多种因素,人脸图像比较标准,所以识别率较自建的人脸库识别率高,另外因为自建人连库的图片太少,即训练样本太少,也会对结果产生影响,效果不是很好。进行直方图均衡化比灰度归一化的识别率高,预处理对识别的效果起着至关重要的作用。而此次实验的预处理还比较粗糙,PC

47、A也只是起到了简单的特征脸降维的作用,要有更好的效果,还必须寻找更好的特征表达,使得可以尽量消除光照、表情、遮掩和姿势的影响。下图为测试流程截图:首先,运行程序.m文件图4-1 用户使用界面图 图4-2 选择图片图图4-3 读取图片后的图图4-4 查找结果图 第五章 个人总结 在大一的时候主修过MATLAB基础这门课程,后大二时又学习了数字图像处理这门课并跟老师做过为期一个星期的课程设计,MATLAB有比较扎实的基础,所以本次试题我采用了Matlab中的GUI(图形用户界面)为主要表现形式,我认为在这次的题目下GUI比单纯的M文件会有更强的应用、测试及表现效果,但由于之前对PCA算法不太了解,

48、所以花了很长时间去分析理解,最终选择了较为简单且实用的PCA算法。从使用的角度考虑,我还为库中的每个人取了一个名字,最终查找到时会在标题处显示其名字,下方显示库中与测试图片最接近的库图片。因为是利用了有限的10人人脸库,并且识别的人数不是很多,所以最终的结果还是不错的。 致谢 在河北农业大学的学习生活即将结束,在做毕设的这些日子里,我的老师、同学给予了我无微不至的关心和帮助,包括课题的选择和程序的编译运行等等。借此毕业论文完成之际,谨向他们致以我最真诚的感谢! 首先要感谢的是我的导师任力生老师。任老师知识渊博、态度严谨、平易近人,在学术上给了我悉心的指导。由于在外找工作没有办法兼顾学校的事情,

49、任老师并没有因此有过多的苛责,而是让我安心做设计,在研究的方向和设计的可行性等方面都给了非常宝贵的指导意见。任老师对待工作严肃谨慎,不浮不躁,坚持踏实勤干的学习态度,这将是我一生工作和学习的好榜样。 其次,我还要特别感谢我的同学李秀芸同学,她在我程序最迷茫的时候为我点明了关键所在,还细心的给我讲解了代码的含义,让我对我的课题有了更加深入的了解。 另外还要格外感谢一下马丽和斯永胜老师,这两位老师本不是负责我的老师,而在我为选题苦恼、程序遇到bug无法运行的时候,老师们给了我很多的参考建议,在此郑重的感谢下两位老师。再次真心的感谢所有关心爱护我的良师益友和亲人们。参考文献1 周杰,卢春雨等,人脸自

50、动识别方法综述,电子学报,2000,28(4),102一1062 何东风,凌捷.人脸识别技术综述J.计算机学报,2003,13(12)75-78 3 贾永红,数字图象处理,武汉,武汉大学出版社,2003,6372,132一1414 周涛,基于PCA的人脸识别研究,2004.075 王宇飞,基于特征脸和支持向量机的人脸识别方法研究与实现,2005.03 6 肖冰,王映辉,人脸识别研究综述,计算机应用研究,2005,8,卜57 邓楠, 基于主成份分析的人脸识别, 2006.068 何国辉,甘俊英.PCA-LDA算法在性别鉴别中的应用J.中国图像图形学报,2006,32(19):208-211.9徐

51、仲,张凯院,陆全,冷国伟,矩阵论简明教程,第四版,北京,科学出版社,2004,5l,118一123,13814010 龚勋,PCA与人脸识别及其理论基础,2007.0411 祝磊,朱善安.人脸识别的一种新的特征提取方法J.计算机学报,2007,34(6):122-1251 12 刘保柱,MATLAB7.0从入门到精通,人民邮电出版社 2010.05.0113艾英山,张德贤,人脸识别方法的综述与展望,计算机与数字工程,2005,33(10),242714苏宏涛,基于统计特征的人脸识别技术研究,博士学位论文,西安,西北工业大学,200515边肇棋、张学工等,模式识别(第二版),北京:清华大学出版社

52、,2000,22322616刘艳丽,赵跃龙,人脸识别技术研究进展,计算机工程,2005,3l(3),1012附录-matlab 源码function varargout = pca_new(varargin)% PCA_NEW MATLAB code for pca_new.fig% PCA_NEW, by itself, creates a new PCA_NEW or raises the existing% singleton*.% H = PCA_NEW returns the handle to a new PCA_NEW or the handle to% the existing

53、 singleton*.% PCA_NEW('CALLBACK',hObject,eventData,handles,.) calls the local% function named CALLBACK in PCA_NEW.M with the given input arguments.% PCA_NEW('Property','Value',.) creates a new PCA_NEW or raises the% existing singleton*. Starting from the left, property value

54、pairs are% applied to the GUI before pca_new_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to pca_new_OpeningFcn via varargin.% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one% instance to

55、run (singleton)".% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help pca_new % Last Modified by GUIDE v2.5 19-May-2013 20:23:10 % Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', pca_new_OpeningFcn, . 'gui_OutputFcn', pca_new_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_Callback = str2func(varargin1)

温馨提示

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

评论

0/150

提交评论