1、毕业设计人脸识别算法研究与实现附完整源码402020年4月19日文档仅供参考河北农业大学信息学院本科毕业论文 题 目: 人脸识别算法研究与实现 学 院: 信息科学与技术学院 专 业: 电子信息科学与技术 学生姓名: 学 号: 指导教师: 职 称: 副教授 提交日期: 年 6 月 1 日 答辩日期: 年 6 月 4 日 中 国 河北 年 5 月摘要人脸识别技术,作为当前模式识别领域研究的热点也是难点之一,其最早提出能够追溯到1888年”。然而,到当前为止,由于人脸识别问题自身的复杂性,使得虽然有众多科学研究人员潜心研究多年,也做出了许多的成果,但离彻底解决并达到实用,仍旧有很多关键性的问题需要解
2、决。本文对人脸识别做了一定的研究。论文首先介绍了人脸识别的背景、研究范围以及方法,对人脸识别领域的一些理论方法作了总体的介绍。本文中所采用的人脸识别方法是比较经典的PCA(Principle Component Analysis)主成分分析。主要包括:结合人脸库对人脸识别的预处理方法作了较为详细的介绍;介绍了PCA人脸识别的方法;实现了一个基于PCA的实时人脸检测识别原型系统。关键字:MATLAB、图形用户界面GUI、人脸识别、PCAABSTRACT Face recognition technology, as one of the hotspot in research of patter
3、n recognition is 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 practi
4、cal, there 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 re
5、cognition 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; Imp
6、lements a 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 M
7、atlab简介52.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 源码20第一章 绪论1.1 概述1.1.1 介
8、绍随着社会的发展以及技术的进步,特别是近年内计算机的软硬件性能的飞速提升,各方面对快速高效的自动身份验证的要求日益迫切。生物识别技术在科研领域取得了极大的重视和发展。由于生物特征是人的内在属性,具有很强的自身稳定性和个体差异性,因此是身份验证的最理想依据“1。其中,利用人脸特征进行身份验证又是最自然直接的手段,与指纹、虹膜、掌纹等其它人体生物特征识别系统相比,人脸识别系统更加友好,方便,易于为用户所接受,有广阔的应用领域。例如:如:公安布控监控、监狱监控、司法认证、民航安检、口岸出入控制、海关身份验证、银行密押、智能身份证、智能门禁、智能视频监控、智能出入控制、司机驾照验证、各类银行卡、金融卡
9、、信用卡、储蓄卡持卡人的身份验证,社会保险身份验证等多个方面,还能够应用到医疗和视频会议等方面,表现出其强大的生命力。所谓人脸识别。43(FaceRecognition)就是利用计算机分析人脸图象,从中提取有效的识别信息,用来辨别身份的一门技术。即对已知人脸进行标准化处理后,经过某种方法和数据库中的人脸标本进行匹配,寻找库中对应人脸及该人脸相关信息。 由于生物特征是人的内在属性,具有很强的自身稳定性和个体差异性,因此是身份验证的最理想依据“1。其中,利用人脸特征进行身份验证又是最自然直接的手段,与指纹、虹膜、掌纹等其它人体生物特征识别系统相比,人脸识别系统更加友好,方便,易于为用户所接受,有广
10、阔的应用领域。1。例如:如:公安布控监控、监狱监控、司法认证、民航安检、口岸出入控制、海关身份验证、银行密押、智能身份证、智能门禁、智能视频监控、智能出入控制、司机驾照验证、各类银行卡、金融卡、信用卡、储蓄卡持卡人的身份验证,社会保险身份验证等多个方面,还能够应用到医疗和视频会议等方面,表现出其强大的生命力。从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的标准界面,人机交互性更强,操作更简单。而且新版本的MA
21、TLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就能够直接运行,而且能够及时地报告出现的错误及进行出错原因分析。简单易用: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_Callbac
33、k(hObject, 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(handles.axes1);
34、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 和 GUI的背景知识,以及PCA算法。其中matlab 是
38、整个程序运行环境,GUI是运行工具,PCA算法是实现人脸识别的必要处理依据。第三章 人脸识别PCA算法及其功能实现 对于一幅图像能够看作一个由像素值组成的矩阵,也能够扩展开,看成一个矢量,如一幅N*N 象素的图像能够视为长度为N2 的矢量,这样就认为这幅图像是位于N2 维空间中的一个点,这种图像的矢量表示就是原始的图像空间,可是这个空间仅是能够表示或者检测图像的许多个空间中的一个。不论子空间的具体形式如何,这种方法用于图像识别的基本思想都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像的这种投影间的某种度量来确定图像间的相似度,最常见的就是各种距离度量。因此,本次
39、试题采用PCA算法并利用GUI实现。对同一个体进行多项观察时,必定涉及多个随机变量X1,X2,Xp,它们都是的相关性, 一时难以综合。这时就需要借助主成分分析来概括诸多信息的主要方面。我们希望有一个或几个较好的综合指标来概括信息,而且希望综合指标互相独立地各代表某一方面的性质。 任何一个度量指标的好坏除了可靠、真实之外,还必须能充分反映个体间的变异。如果有一项指标,不同个体的取值都大同小异,那么该指标不能用来区分不同的个体。由这一点来看,一项指标在个体间的变异越大越好。因此我们把“变异大”作为“好”的标准来寻求综合指标。3.1 PCA算法分析3.1.1 主成分的一般定义设有随机变量X1,X2,
40、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 和Cj的相关系数 Corr(Ci,Cj)=0 ij(2)
41、组合系数(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,aip)则是相关矩阵R的第i个特征向量(eigenvector)。而且
42、,特征值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张成的子空间中。因此,每一幅人脸图像对应于子空间中的一点。同样,子空间的任意一点也对应于一幅图像。3.2.2 特征向量的选取虽然协方差矩阵最多有对应于非零特征值的k(k远小于M)个特征向量,可是一般情况下,k依然很大
44、,而事实上,根据应用的要求,并非所有的特征向量都有需要保留,而特征空间投影的计算速度是直接与创立子空间所用的特征向量的数目相关,若考虑到计算时间的因素,能够适当的减去一些信息量少的特征向量,而且,去掉这些特征向量之后不一定不利于分类结果,有的情况下反而能够提高识别性能。3.2.3 人脸识别有了这样一个由特征脸张成的降维子空间,任何一幅人脸图像都能够向其投影得到一组坐标系数,这组系数表明了该图像在子空间中的位置,从而能够作为人脸识别的依据。换句话说,任何一幅人脸图像都能够表示为这组特征脸的线性组合,其加权系数即是K-L变换的展开系数,也能够称为该图像的代数特征。因此,在获得特征脸之后,就能够对每
45、一类别的典型样本进行投影,由此得到每个人脸的投影特征从而构成人脸特征向量,作为下一步识别匹配的搜索空间。输入图像及其在人脸空间上的投影(重构图像),人脸图像在人脸空间中的投影变化不明显而非人脸图像的投影变化明显。因此,检测一幅图像中是否存在人脸的基本思想是,计算该图像中任意位置处的局部图像与人脸空间之间的距离。其中,是局部图像是否为人脸的度量。因此,计算给定图像任意一点上的,就能够得到一映射图(x,y)。第四章 人脸识别算法测试 4.1 实验测试流程 实验在两个图库上测试,一个是自建人脸库,该库包含10个不同人物,每人有5张不同表情和姿态下的图片,总共50幅。另一个是ORL人脸库,该库包含40
46、个不同人物,每人有10张图片,共400幅。用训练样本进行测试,识别率为100%。而随着训练样本的增加,识别率会有所提升,由于标准人脸库在采集时考虑了多种因素,人脸图像比较标准,因此识别率较自建的人脸库识别率高,另外因为自建人连库的图片太少,即训练样本太少,也会对结果产生影响,效果不是很好。进行直方图均衡化比灰度归一化的识别率高,预处理对识别的效果起着至关重要的作用。而此次实验的预处理还比较粗糙,PCA也只是起到了简单的特征脸降维的作用,要有更好的效果,还必须寻找更好的特征表示,使得能够尽量消除光照、表情、遮掩和姿势的影响。下图为测试流程截图:首先,运行程序.m文件图4-1 用户使用界面图 图4-2 选择图片图图4-3 读取图片后的图图4-4 查找结果图 第五章 个人总结 在大一的时候主修过MATLAB基础这门课程,后大二时又学习了数字图像处理这门课并跟老师做过为期一个星期的课程设计,MATLAB有比较扎实的基础,因此本次试题我采用了Matlab中的GUI(图形用户界面)为主要表现形式,我认为在这次的