毕 业 设 计(论 文)
设计(论文)题目:基于PCA算法的人脸识别
姓 名_____姜锐__________
学院(系)__华科学院_____
专 业____通信工程________
年 级____08级___________
指导教师____牛雪梅__________
2012年 6月
太原科技大学毕业设计(论文)任务书
学院(直属系):电子信息工程系 时间:2012年 1月 14日
学 生 姓 名 | 姜锐 | 指 导 教 师 | 牛雪梅 | |
设计(论文)题目 | 基于PCA算法的人脸识别 | |||
主要研 究内容 | 首先学习了PCA算法的基本知识和原理,学习在Matlab环境中实现PCA算法在人脸识别方面的应用并仿真。 | |||
研究方法 | 在Matlab环境中应用PCA算法对人脸识别进行应用的仿真。 | |||
主要技术指标(或研究目标) | 1、掌握Matlab软件的应用及PCA算法。 2、实现PCA算法在人脸识别方面的仿真及对其进行分析。 | |||
教研室 意见 | 教研室主任(专业负责人)签字: 年 月 日 |
目录
摘要 Ⅲ
ABSTRACT Ⅳ
第1章 人脸识别概述 -1-
1.1 人脸识别技术 3
1.2 人脸识别的研究背景及意义 4
1.3 人脸识别理论的发展 5
1.4 人脸识别的难点 6
第2章 人脸识别的常用算法 9
2.1 人脸识别常用方法 9
2.2 PCA方法的优点 10
第3章 PCA人脸识别方法 12
3.1 简介 12
3.2 问题描述 12
3.2.1 KL变换原理 13
3.2.2 利用 PCA 进行人脸识别 14
3.3 PCA 的理论基础 15
3.3.1 投影 15
3.3.2 PCA 的作用及其统计特性 15
3.3.3 特征脸 17
3.3.4 图片重建 17
3.3.5 奇异值分解(SVD) 18
3.3.6 利用小矩阵计算大矩阵特征向量 18
3.3.7图片归一化 19
第4 人脸识别系统的设计及实现 20
4.1 人脸识别流程 20
4.2 离线学习和在线匹配 21
4.3 人脸识别中PCA算法步骤及过程 22
4.4 实验及结果分析 23
第5章 影响人脸识别的几个因素及人脸数据库介绍 26
第6章 总结与展望 30
6.1 总结 30
6.2 展望 30
参考文献 32
致谢 33
附件 34
基于pca算法的人脸识别
摘要
生物特征识别技术使用了人体本身所固有的生物特征,与传统的身份识别方法完全不同,具有更高的安全性、可靠性、和有效性,越来越受到人们的重视。人脸识别技术作为生物特征识别技术的重要组成部分,在近三十年里得到了广泛的关注和研究,已经成为计算机视觉、模式识别领域的研究热点。人脸识别在公共安全、证件验证、门禁系统、视频监视等领域中都有着广泛的应用前景。
本文是在人脸数据库的基础上做人脸特征提取和识别研究,主要内容如下:
(1)对人脸识别研究的内容、相关技术、主要实现方法及发展历程作了详细介绍。
(2)介绍主成分分析法(PCA)、K-L变换,并利用特征脸方法实现了人脸识别。
(3)给出了基于matlab环境的编程及实验结果,并对结果进行分析。
关键词: 人脸识别,特征脸,K-L变换,主成分分析。
PCA Based Face Recognition Algorithm
ABSTRACT
Biometics,because of using the proper living creature characteristic of human body,is the totally brand new technique different from traditional personal ideniification method and it has the better safety,dependable with the usefulness,and it was payed great attention.Face recongnition is an important component of biometrics and in all kinds of methods,it is also one of the most active and challenging tasks for computer vision and pattern recognition in recent 30 years.Face recognition has a wide range of potential app1ications in the areas of public security,identification of certificate,entrance control and video surveillanee.
This paper mainly studies the approaches to the features extraction and recognition in the face database.The main contents are as follows:
(1) Give a full introduce to the contents of face recongnition,related techonology,the main implement methods and its development history.
(2) Give a introduce to the Princeple Components Analysis(PCA),K-L translation,and realized it via eigenface method.
(3) Programed it based the matlab environment and provide the experiment result and analysised it.
Key Words: Face Recongnition, Eigenface, K-L Translation, Principle Component Analysis
第1章 人脸识别概述
目前,在个人身份鉴别中主要依靠ID卡和密码等传统手段,这些传统手段的安全性能较低,都是基于“What he possesses”或“What he remembers”的简单身份鉴别,离真正意义上的身份鉴别“Who he is”还相差甚远。依靠传统方法来确认个人身份越来越不适应现代科技的发展和社会的进步。生物特征识别技术给可靠的身份鉴定带来了可能。最近,国际生物特征组织(IBG)对生物特征识别技术做了较详细的市场分析和预测,其结果显示,全球生物特征识别技术2009年的产值将为34亿美元,预计到2014年将超过93亿美元,市场潜力非常巨大[1]。
生物识别技术是指利用一个人固有的生理或行为特征进行自动的身份认证。只有满足以下几个条件的生理或行为特征才能被用做生物识别特征:
1)普遍性。即每个人都要具备这种特征。
2)唯一性。即不同的人应该具备不同的这种特性。
3)持久性。即这种特征不随时间地点的改变而变化。
4)可采集性。即该特征可以被定量地测量。
研究和经验表明,人脸、指纹、手型、掌纹、虹膜、视网膜、签名、声音等都满足这些条件,可以用于识别人的身份。基于这些特征,人们发展了人脸识别、指纹识别、语音识别、虹膜识别等多种生物识别技术。在所有的生物特征识别技术中,利用人脸特征进行身份识别是最自然、最直接和最友好的手段。与其它生物特征识别技术相比,人脸的获取非常容易,几乎可以在被采集对象无意识的状态下获取人脸图像,这样的取样方式没有“侵犯性”。
人脸识别技术是一种重要的生物特征识别技术,应用非常广泛。人脸是自然界存在的一种特殊的复杂视觉模式,它包含及其丰富的信息。首先,人脸具有一定的不变性和唯一性,人脸识别是人类在进行身份确认时使用最为普遍的一种方式,人脸图像还能够提供一个人的性别、年龄、种族等有关信息。其次,人脸也具有多样的变化能力,从人脸的不同表情人们可以感知到一个人的情绪、感受、甚至秉性和气质。它无需特殊的采集设备,系统的成本低,而且自动人脸识别的使用非常自然,可以在被识别对象毫无察觉的情况下进行,是一种非常受使用者欢迎的方式。虽然人类在表情、年龄或发型等发生巨大变化的情况下,可以毫不费力地由人脸来识别某一人,但要建立一个能够完全自动进行人脸识别的系统却是非常困难的,诸多因素使得人脸识别研究成为一项极具挑战性的课题。它牵涉到模式识别、图像处理、计算机视觉、生理学、心理学、以及认知科学等方面的诸多知识,并与基于其它生物特征的身份鉴别方法以及计算机人机感知交互领域都有密切联系。与指纹、视网膜、虹膜、基因、掌形等其它生物特征识别系统相比,人脸识别具有直接、友好、方便和非接触等许多优点,多年来一直受到许多研究者的关注。
人脸识别研究,起源于l9世纪末法国人Sir Franis Gahon的工作。到20世纪9O年代,开始作为一个学科快速发展起来。人脸识别研究的发展大致分成三个阶段:第一阶段以Allen和Parke为代表,主要研究人脸识别所需要的面部特征。研究者用计算机实现了较高质量的人脸灰度图模型。这阶段的工作特点是识别过程全部依赖于操作人员。第二阶段是人机交互式识别阶段,其中用几何特征参数来表示人脸正面图像是以Harmon和Lesk为代表,将人脸面部特征用特征矢量表示出来,并设计了基于这一特征表示法的识别系统。而以Kaya和Kobayashi为代表,则采用了统计识别的方法、用欧氏距离来表示人脸特征。这两类方法都摆脱不了人的干预。第三阶段是真正的机器自动识别阶段,近十余年来,随着高速度高性能计算机的发展,人脸模式识别方法有了较大的突破,提出了多种机器全自动识别系统,人脸识别技术进人了实用化阶段。如Eyematic公司研发的人脸识别系统。我国清华大学的“十五”攻关项目《人脸识别系统》也通过了由主持的专家鉴定。
人脸识别有着广泛的应用领域:
(1)在安全防范领域中的应用。社会上有许多重要的部门,如军事、金融、保密等部门都需要对出入人员进行身份识别,以防止信息泄漏和不法现象的发生。使用该技术可以方便地进行身份识别,而不使被识别者感到不舒服。
(2)在犯罪刑侦领域中的应用。在刑侦工作中,对罪犯的抓捕是至关重要的一环。应用人脸识别技术可以依据犯罪嫌疑人的人脸图像对机场、车站、港口等重要交通场所进行监控,从而大大促进了罪犯抓捕工作的开展。
(3)在公共事业领域中的应用。在现代社会,许多领域都需要对人进行身份验证。如银行、保险、交通等公共事业部门。采用传统的密码、IC卡等手段和技术对人进行身份验证具有安全性差、易遗失、易伪造等缺点。而采用人脸识别技术进行身份验证则能够很好地克服传统身份验证手段和技术的缺点。
因此成熟的人脸识别技术不但具有极大的学术研究价值,而且具有广泛的社会需求和市场领域。一个成功的具有商用价值的人脸识别系统必将给现实社会带来极大的影响。当前,人脸识别己成为计算机视觉、模式识别和人工智能等领域的一个研究热点。我们有理由相信,随着技术的不断发展,人脸识别技术将不断完善,并得到更为广泛的应用[2]。
1.1 人脸识别技术
所谓人脸识别,是指对输入的人脸图像或者视频,判断其中是否存在人脸,如果存在人脸,则进一步给出每张人脸的位置、大小和各个面部主要器官的位置信息,并且依据这些信息,进一步提取每张人脸蕴含的身份特征,并将其与已知人脸库中的人脸进行对比,从而识别每张人脸的身份。其研究内容包括以下五个方面:
(1)人脸检测
从不同的背景中检测是否存在人脸,并确定其位置、大小、形状、姿态等信息的过程。它关系到后续识别工作能否正确进行,并保障最终识别结果的可靠性。
(2)人脸表征
确定表示检测出的人脸和数据库中的已知人脸的描述方式。通常的表示方式包括几何特征(如欧氏距离、曲率、角度等)、代数特征(如矩阵的特征矢量)和固定特征模板等。
(3)人脸鉴别
即狭义的人脸识别,就是通常所指的将待识别的人脸与数据库中的已知人脸进行比较,得出相关信息。这一过程的核心是选择适当的人脸表示方式和匹配策略,系统地构造与人脸的表征方式密切相关。
(4)表情/姿态分析
即对待识别人脸的表情或姿态进行分析,并对其加以归类。
(5)生理分类
对待识别人脸的物理特征进行分类,得出其年龄、性别、种族等相关信息,或从几幅相关的图像中推导出希望得到的人脸图像,如从父母的脸推导出孩子的脸像等。
本论文中的人脸识别主要是指狭义的人脸识别,指将待识别的人脸与数据库中的已知人脸之间进行匹配的人脸鉴别。
人脸识别的目的是让计算机具有通过人脸的特征来鉴别身份的功能。基于人脸特征的身份识别主要设计到复杂场景中的人脸检测及识别技术,是一种依托于图像理解、模式识别及计算机视觉、统计学和人工智能等高技术的研究方向[3]。
1.2 人脸识别的研究背景及意义
在人类社会的发展进入到21世纪的今天,安全问题已经成为困扰人们日常生活的重要问题之一。社会的发展促进了人的流动性,进而也增加了社会的不稳定性,使得安全方面的需求成为21世纪引起广泛关注的问题。不论是享受各项服务如网上冲浪、还是居家、办公等都涉及到安全,以往这些行为基本上是通过符号密码来进行安全保护,但是随着服务数量的不断增加,密码越来越多以致无法全部记住,而且密码有时也会被他人所窃取,各种密码被破解的概率越来越高,因为通常由于记忆的原因,人们经常会选用自己或亲人的生日、家庭地址、电话号码等作为密码并长期使用,这些很容易被一些不法分子获取。可见在现代社会中,身份识别已经成为人们日常生活中经常遇到的一个基本问题。人们乎时时刻刻都需要鉴别别人的身份和证明自己的身份,以获得对特定资源的使用权或者制权,同时防止这些权限被他人随意的取得。传统的身份识别方法主要基于身份标识物(如证件、卡片)和身份标识知识(如用户名、密码)来识别身份,这在很长一段时期是非常可靠和方便的识别方法,得到了广泛的应用。但是,随着网络、通信、交通等技的飞速发展,人们活动的现实空间和虚拟空间不断扩大,需要身份认证的场合也变得无不在。人们需要携带的身份标识物品越来越多,身份标识知识也变得越来越复杂和冗长在这种情况下,传统身份识别方式的弊端日益彰显。身份标识物品容易被丢失和伪造,份标识知识容易被遗忘、窃取和破解,而身份标识的重要性又使得一旦失去了身份标识会给标识的所有者甚至整个社会带来重大的甚至难以弥补的损失。在美国,每年约有上百万的福利款被人以假冒的身份领取;每年发生的信用卡、ATM、移动电话和冒领支票等成的损失达数百亿美元。面临着这样的状况,人们对身份识别的安全性、可靠性、准确和实用性提出了更高的要求,必须寻求身份识别的新途径。
于是,近年来人类生物特征越来越广泛地用于身份识别,而且生物特征可以更好的进行安全控制,世界各国都在大力推进生物识别技术的发展及应用。与原有的人类身分识别技术(如:个人密码、磁卡、智能卡等)相比,基于人类生物特征的识别技术具有安全可靠、特征唯一、不易伪造、不可窃取等优点。人类本身具有很多相对独特的特征,如DNA、指纹、虹膜、语音、人脸等。基于这些相对独特的人类特征,结合计算机技术,发展起众多的基于人类生物特征的人类身份识别技术,如DNA识别技术、指纹识别技术、虹膜识别技术、语音识别技术、人脸识别技术。
人脸识别和其他的生物识别比起来有以下几个优点:1、其他的生物特征识别方法都需要一些人为的行为配合,而人脸识别不需要。2、人脸识别可应用在远距离监控中。3、针一对现在的第一、二代身份证,每个身份证都有人脸的正面照片,也就是人脸库将是最完善的,包括人最多的,我们可以利用这个库来更直观、更方便的核查该人的身份。4、相对于其他基于生物特征识别技术,人脸识别技术具有特征录入方一便,信息丰富,使用面广等优点,同时人脸识别系统更加直接友好。人脸识别技术作为生物识别技术的一种,以其特有的稳足性、方便性、唯一性等特点被愈来愈多地应用于除安全问题外的各种身份识别领域[4]。
1.3 人脸识别理论的发展
人脸识别的理论发展大致可以分为三个阶段:
第一阶段,以Bertillon,Allen和Parke为代表,主要研究人脸识别所需要的面部特征。在Berliton的系统中,用一个简单的语句与数据库中某一张脸相联系同时与指纹分析相结合,提供了一个较强的识别系统。为了提高脸部识别率,Allen为待识别脸设计了一种有效和逼真的摹写,Parke则利用计算机实现了这一想法,并产生了较高质量的人脸灰度模型。这一阶段工作的特点是识别过程全部依赖于工作人员,显然这不是一种可以完成自动识别的系统。
第二阶段,是人机交互式识别阶段。代表性工作有:Goldstion,Harmon和Lesk用几何参数来表示人脸正面图像。他们采用21维特征向量来表示人脸面部特征,并设计了这一特征表示法的识别系统。Kaya和Kobayashi则采用了统计识别方法,用欧氏距离来表征人脸特征,如嘴唇和鼻之间的距离、嘴唇的高度等。更进一步地,T.Kanad设计了一个高速且有一定知识引导的半自动回溯系统,创造性地运用积分投影法,从单幅图像上计算出一组脸部特征参数,再利用模式分类技术与标准人脸相匹配。Kanad的系统实现了快速、实时的处理,是一个很大的进步。相比之下,Baron所做的工作少为人所知,他先将图像灰度归一,再利用四个掩膜(眼、鼻、嘴以及眉毛以下的整个脸部)表示人脸,然后分别计算四个掩膜与数据库中每幅标准图像的相应掩膜之间的互相关系数,以此作为判别依据[5]。
总的来说,这两个阶段主要是在20世纪60年代到90年代,这段时间的人脸识别一般都需要人的某些先验知识,无法摆脱人的干预。早期的人脸识别方法有两大特点:
(1)大多数识别方法都是基于部件的,他们利用人脸的几何特征进行识别,提取的信息是人脸主要器官特征信息及其之间的几何关系。这类方法比较简单,但是很容易丢失人脸的有用信息,从而在视角、表情等变化的情况下,识别能力差。鉴于这种情况,后来出现了性能较优的模板匹配方法,即根据图像库中的人脸模板与待识别人脸模板在灰度上的相似程度来实现人脸识别,这类方法在一定时期内占据主流。
(2)人脸识别研究主要是在较强约束下的人脸图像识别。假设图像背景单一或者无背景,人脸图像已知或者很容易获得,因此对现实场景产生的图像处理效果不佳。
第三阶段,主要是进入20世纪90年代,由于高速度性能计算机的出现和各方面对人脸识别系统的迫切要求,人脸识别的研究重新变的热门起来,人脸识别的方法也有了重大突破,进入了真正的机器自动识别阶段,同时涌现了很多著名的人脸识别算法,例如麻省理工学院米提实验室的Turk和Pentland在1991年提出的“Eigenface(特征脸)”方法,Belhumeur等在1997年提出的Fisherface方法是这个时期的两个重要成果,还有好多方法都是基于这两个方法的深入研究。再有一个重要的方法就是弹性图匹配技术(Elastic Graph Matching,EGM),还有在此技术上发展的一些技术,如局部特征技术(Lacal Feature Analysis,LFA)、柔性模型(Flexible Models)。现在人脸识别的研究重点主要是对光照、姿态等非理想采集条件和用户不配合的情况下的人脸识别方法的研究,尽力克服光照、姿态的影响。非线性建模方法、统计学习理论、基于Boosting的学习技术、基于三维建模的人脸建模与识别方法成为备受关注的研究趋势[6]。
1.4 人脸识别的难点
目前人脸识别的难点主要存在于以下几个方面:
(1)光照变化是影响人脸识别性能的最关键因素,对该问题的解决程度关系着人脸识别实用化进程的成败,在人脸图像预处理或者归一化阶段,尽可能地补偿乃至消除其对识别性能的影响。
(2)成像角度及成像距离等因素的影响,即人脸的姿态的变化,会垂直于图像平面的两个方向的深度旋转,会造成面部信息的部分缺失。
(3)不同年龄的人脸有着较大的差别。身份证是以前照的,在逃犯的照片也是以前的,因此在门的实际应用中,年龄问题是一个最突出的问题。
(4)采集图像的设备较多,主要有扫描仪、数码相机、摄像机等。由于成像的机理不同,形成了同类人脸图像的识别率较高,而不同类间人脸图像识别率较低的情况。随着人脸识别技术的发展,这一问题也将逐步得到解决。
(5)人脸图像的数据量巨大。目前由于计算量的考虑,人脸定位和识别算法研究大多使用尺寸很小的灰度图像。一张*像素的256级灰度图像就有4096个数据,每个数据有256种可能的取值。定位和识别算法一般都很复杂,在人脸库较大的情况下,计算量十分大,很多情况下速度令人难以忍受。而灰度数据事实上是丧失了色彩、运动等有用信息的。如果使用全部的有用信息,计算量就更大了[7]。
第2章 人脸识别的常用算法
2.1 人脸识别常用方法
人脸识别的方法主要有:基于几何特征的人脸识别方法、基于模板匹配的人脸识别方法、基于小波特征的人脸识别方法和基于模型的人脸识别方法。其中基于模型的人脸识别方法包括特征脸法(Eigneafec)、神经网络法(NN)、隐马尔可夫模型方法(HMM)等方法,本次设计将采用的是基于特征脸的方法[8]。
(1)基于面部几何特征的方法
这个方法在时间上来说是最早提出的人脸识别方法之一,其特征提取以人脸面部特征点的形状和几何关系为基础的。对于不同的人来说有着不同的人脸轮廓、大小、相对位置的分布也是不相同的,所以说用这种方法来进行人脸识别还是有一定依据的。这种方法的做法是,提取眉毛、眼睛、鼻子和嘴巴这几个特征点,计算出这几个特征点的大小,以及他们之间的几何距离,来进行人脸识别,几何距离一般包括特征点之间的距离、他们之间的夹角等。特征提取后选取最近邻分类器,相异度测试选用欧式距离。基于几何特征的人脸识别算法的优点是方法简单,计算速度快。但它识别人脸就靠几个特征点的大小和距离,以及特征点之间的夹角,这样的信息是远远不够的,对于一个稍微大一点的人脸库识别率不高,还有这种方法对于人脸表情变化时没有很好的鲁棒性。但是这种方法还是有一定潜力的,好比一个大型的人脸库,进行人脸比对前可以使用基于面部几何特征的方法对训练样本进行粗分类,这样可以大大降低人脸识别时间。
(2)基于模板匹配的方法
模板匹配方法也是模式识别中的一个比较传统的方法。把模板匹配方法用到人脸识别中要以Poggio和Bruneili所提出的基于局部特征的模板匹配算法为代表。他们首先利用积分投影的方法确定面部特征点,提取局部特征的模板,然后进行局部模板匹配,计算相关系数进行分类,Poggio和Brulleili比较了基于几何特征和基于模板匹配的人脸识别方法。他们的实验结果表明,在人脸尺度、光照、姿态稳定的情况下,基于模板匹配的人脸识别方法要优于基于几何特征的人脸识别方法。通过大量的实验表明,基于模板匹配的人脸识别方法对光照、旋转、人脸表情比较敏感,仅当这些因素比较稳定时,才能获得比较好的效果。这种方法的计算量要比基于面部几何特征的方法要大。
(3)基于小波特征的方法
小波变换是国际上公认的最新频率分析工具,由于其“自适应性’,和“数学显微镜性质”而成为许多学科共同关注的焦点,在信号处理中起着至关重要的作用。目前小波技术在验证的特征撮上用得较多。小波变换采用以高斯函数的二阶导数作为小波基的小波变换技术来进行拐点提取,然后以该方法为基础,进行不同图像之间拐点序列的匹配;最后再利用提敢的拐点来对图像进行分段和段一段对应处理。由于使用离散小波变换来分解图像的参数特征,特征提取用到自适应算法,匹配则选择动态规划方法,初步试验取得较好的效果。
(4)基于特征脸的方法
特征脸方法是从主成成分分析(PCA)导出的一种人脸识别和描述技术。它将包含人脸的图像区域看作一随机向量,采用K-L变换得到正交K-L基,对应其中较大特征值的基具有与人脸相似的形状,因此又被称为特征脸。利用这些基的线性组合可以描述、表达和逼近人脸图像,所以可进行人脸识别与合成。识别过程就是将人脸图像映射到由特征脸组成的子空间上,并比较其在特征脸空间中的位置,然后利用对图像的这种投影间的某种度量来确定图像间的相似度,最常见的就是选择各种距离函数来进行度量分类实现人脸识别。
(5)神经网络法
基于神经网络的人脸识别方法就是利用神经网络的学习能力和分类能力对人脸进行特征提取与识别。目前常用的人工神经网络方法是BP(Back-Propagation)神经网络、自组织神经网络、径向基函数神经网络。径向基函数神经网络与BP网络一样都是多层前向网络,它以径向基函数作为基准,以高斯函数作为隐含层的激励函数。这种网络的学习速率快、函数逼近、模式识别等能力均优于BP神经网络,并广泛应用于模式识别、图像处理等方面。但是这种网络比BP网络所用的神经元数目要多得多,使它的应用受到了一定的。
2.2 PCA方法的优点
由于PCA方法在降维和特征提取方面的有效性,在人脸识别领域得到广泛的应用。
(1)最小均方误差。 PCA是在均方误差最小意义下的最优正交分解方法,因此用PCA进行信号压缩能够得到最大的信噪比。
(2)降维。 由于基函数的个数往往远小于信号的维数,因此PCA变换能够大大降低数据的表示维数。这对模式识别中的特征提取非常有利。
(3)消除冗余。 在基函数上的投影系数彼此之间是不相关的。分解函数/合成函数相同。 分解函数(Analysis Function))作用于输入信号,得到信号的编码;合成函数(Synthesis Function)作用于信号的编码,得到原始信号。如果图像的分解和合成采用线性模型,则分解函数φI和合成函数Фi是和输入信号具有相同维数的向量,它们可以表示为:
αi=φiTI, I=∑iαiФi (2.2.1)
第3章 PCA人脸识别方法
3.1 简介
我们希望将图像原特征做某种正交变换,获得的数据都是原数据的线性组合,从新数据中选出少数几个,使其尽可能多地反映各类模式之间的差异,又尽可能相互,一个常用的方法就是主成分分析(PCA)。KL(Karhunen-Loeve)变换或主分量分析 (Principal Component Analysis,PCA),这是一种特殊的正交变换,它是重建均方误差最小意义下的最佳变换,起到减少相关性,突出差异性的效果,在图像编码上能去除冗余信息,也常用于一维和二维信号的数据压缩;这种变换采用主要特征对应的特征向量构成变换矩阵,保留原模式样本中方差最大的数据分量,在对高维图像编码时起到了降维作用。由于KL变换和PCA去相关性和降维作用,Mathew A.Turk和P.Pentland首先将主成分分析运用到人脸识别中来。通过K_L变换得到高维人脸空间的投影矩阵,人脸图像都可以由这些矩阵的线性组合来表示,正是因为这些矩阵呈现人脸的形状,所以将这种人脸识别称为特征脸(Eigenface)方法[9]。
3.2 问题描述
于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个矢量,如一幅N*N 象素的图像可以视为长度为N2 的矢量,这样就认为这幅图像是位于N2 维空间中的一个点,这种图像的矢量表示就是原始的图像空间,但是这个空间仅是可以表示或者检测图像的许多个空间中的一个。不管子空间的具体形式如何,这种方法用于图像识别的基本思想都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像的这种投影间的某种度量来确定图像间的相似度,最常见的就是各种距离度量。
3.2.1 KL变换原理
PCA方法是由Turk 和Pentlad 提出来的,它的基础就是Karhunen-Loeve 变换(简称KL变换),是一种常用的正交变换。下面我们首先对K-L 变换作一个简单介绍:
假设X 为n 维的随机变量,X 可以用n 个基向量的加权和来表示[10]:
(3.2.1)
式中: i
是加权系数, 是基向量,此式还可以用矩阵的形式表示:
(3.2.2)
取基向量为正交向量,即
(3.2.3)
则系数向量为:
(3.2.4)
综上所述,K-L 展开式的系数可用下列步骤求出:
步骤一求随即向量X 的自相关矩阵由于没有类别信息的样本集的 均值向量,常常没有意义,所以也可以把数据的协方差矩阵作为K_L 坐标系的产生矩阵,这里 是总体均值向量。
步骤二 求出自相关矩阵或协方差矩阵R 的本征值和本征向量。
步骤三 展开式系数即为 。
K_L 变换的实质是建立了一个新的坐标系,将一个物体主轴沿特征矢量对齐的旋转变换,这个变换解除了原有数据向量的各个分量之间相关性,从而有可能去掉那些带有较少信息的坐标系以达到降低特征空间维数的目的。
3.2.2 利用 PCA 进行人脸识别
完整的PCA 人脸识别的应用包括几个步骤:人脸图像预处理;读入人脸库,训练形成特征子空间;把训练图像和测试图像投影到上一步骤中得到的子空间上;选择一定的距离函数进行识别。
1. 读入人脸库
归一化人脸库后,将库中的每人选择一定数量的图像构成训练集,其余构成测试集。设归一化后的图像是n*m,按列相连就构成N=n*m 维矢量,可视为N 维空间中的一个点,可以通过K-L 变换用一个低维子空间描述这个图像。
2. 计算 K- L 变换的生成矩阵
所有训练样本的协方差矩阵为(以下三个等价):
(3.2.5)
,是平均人脸, M 训练人脸数,协方差矩阵是一个N*N的矩阵, N 是的维数。
为了方便计算特征值和特征向量,一般选用第2个公式。根据K - L 变换原理,我们所求的新坐标系即由矩阵的非零特征值所对应的特征向量组成。直接求N*N大小矩阵A C 的特征值和正交归一特征向量是很困难的, 根据奇异值分解原理(见段落1.2.5和1.2.6),可以
通过求解的特征值和特征向量来获得的特征值和特征向量.
在计算得到 的所有非零特征值
(从大到小排序,)及其对应的
单位正交特征向量后,可以得到特征空间
(3.2.6)
从而可以计算一张图片X在特征空间上的投影系数(也可以理解为X在空间U中的坐标):
(3.2.7)
3. 识别
利用公式(2),首先把所有训练图片进行投影,然后对于测试图片也进行同样的投影,采用判别函数对投影系数进行识别。
3.3 PCA 的理论基础
3.3.1 投影
设d维样本,以及一个d 维基W ,那么标量:
(3.3.1)
是相当于在基上的坐标值。如果, 就是把向方向为w的直线进行投影的结果,如果有一组基(m 个)组成的空间那么可以得到 在空间W上的坐标为[11]:.
3.3.2 PCA 的作用及其统计特性
采用PCA 对原始数据的处理,通常有三个方面的作用—降维、相关性去除、概率估计。下面分别进行介绍:
去除原始数据相关性从统计学上讲, 称为随机变量X 与Y 协方差,记为。
令,称为随机变量X 与Y 的相关系数。则X 与Y 是相关的,,则X 与Y 是不相关的。
命题 1: 对于矩阵A 来说,如果AAT 是一个对角阵,那么A中的向量是非相关的。
由 PCA 处理的人脸库数据的非相关性可以从两点进行说明。
(1)基底的非相关性
特征空间基 是非相关的,即。
(2)投影系数的非相关性
由 SVD 可知{∅_1,∅_2,⋯,∅_m }, 其中是平均人脸。根据公式(2)可以把A 映射到特征空间上,得到:,其中B 是非相关的,可由下面得到证明:
Y的协方差矩阵为:
(3.2.2)
由命题 1 可知,B 是非相关的。
统计参数(均值及方差)均值即平均人脸。
命题 2: 随机变量方差越大,包含的信息越多,当一个变量方差为0 时,该变量为常数,不含任何信息。
用 PCA 计算主分量,就是寻找一组向量,使得原始数据在这组向量上的投影值的方差尽可能大。最大方差对应的向量就是第一主成份,以后递推就是第二主成份,第三主成份……。用 PCA 计算主分量就是求原始数据(其中协方差矩阵的特征向量。
命题 3: 所有原始数据在主分量上的投影值方差为 降维如果在原始空间表示一幅n*m 大小的图片X,那么需要一个N=n*m 维矢量,但是当用公式(3.2.2)把它映射到特征空间后,只需要一个r*1 维的向量就可。另外,由命题2 可知,可以根据方差的大小来判断特征向量的重要性。由ORL 图片库的20个人脸计算得到的特征值呈图 2 分布,可知特征向量重要性呈指数下降,据此可以只选用前面几个重要的特征向量来构建特征空间。 通过计算,前71 个特征值占了90.17%,因此r 可以取71 而非200,从而达到进一步降维的作用。
图1 特征值的分布
3.3.3 特征脸
中的每一个单位向量都构成一个特征脸,如图2所示。由这些特征脸所张成的空间称为特征脸子空间,需要注意对于正交基的选择的不同考虑,对应较大特征值的特征向量(正交基)也称主分量,用于表示人脸的大体形状,而对应于较小特征值的特征向量则用于描述人脸的具体细节,或者从频域来看,主 分 量 表 示了人脸的低频部分,而此分量则描述了人脸的高频部分源码(’EigenFace.m’)。
图 2 特征脸,分别是第 1 ,2 ,10 ,50 ,70 分量,最后一张是平均脸
3.3.4 图片重建
要进行图片X的重建,首先对X投影到特征空间上,得到系数,然后选用一部分系数与特征向量进行原始图片的重建:,其中1:t 表示取前t 个元素。(见’reconstruct.m’)
在图 3 中,其中前两张图片来自训练样本,第3 张来自测试样本,可以看到对于训练样本,PCA系数可以对图片实现很好重建,而对于训练样本以外的图片重建效果很差。
Original 15 100 150 199
图 3 人脸图像重建。第列张图片是输入原始图,其它列图片是重建结果,数字表示t 的数目
3.3.5 奇异值分解(SVD)
设A是秩为r 的m*n(m>>n)维矩阵,则存在两个正交矩阵和一个对角阵:
(3.3.3)
其中,,,且,,呈降序排列。其中为和的非零特征值,和分别是和对应于的特征向量。可得一个推论:
(3.3.4)
可以计算的特征值及相应的正交归一特征向量后,可由推论知的正交归一特征向量 注意,协方差矩阵的特征值为:。
3.3.6 利用小矩阵计算大矩阵特征向量
高阶矩阵的特征向量可以转化为求低阶矩阵的特征向量:
设:A 是秩为r 的m*n(m>>n)维矩阵,,是一个矩阵,现在要求的特征值及特征向量,可通过先求小矩阵的特征向量和特征值,两者之间有以下关系:
(3.3.5)
结论:计算出协方差矩阵的特征向量,特征值的结果是一致的,只是要注意特征值要除以 M,特征向量要单位化。
3.3.7图片归一化
图片标准化通常是一个整体概念,要求把图片归一到均值为0,方差为1 下情况下。 这个概念类似于一般正态分布向标准正态分布的转化:
命题4:若所以要对一组图片中的一张进行归一化(标准化),只需要减去均值,除以方差就可以了。均值,方差为 。
第4 人脸识别系统的设计及实现
4.1 人脸识别流程
完成人脸识别的工作需要一系列的步骤,它们结合起来构成一个完整的流程。由于研究人员来自不同的学科、具有不同的背脊,而且不同的人脸识别应用中对识别的目标也不同,所以人脸识别的流程并不统一一个比较通用的人脸识别流程如下图所示:
输入图像
结果输出
→→→→→
图4人脸识别流程图
其主要步骤包括:人脸检测/跟踪(face detection/tracking),特征提取(face extraction),特征降维(face dimensionality reduction),匹配识别(matching and classification)。它们之间基本上是串行的关系[14]。
(1)人脸检测/跟踪。人脸检测是完成人脸识别工作的自动系统的第一个步骤。该步骤的目的是在输入的图像中寻找人脸区域。具体来说:给定意一幅任图像,人脸检测的目的是确定是否图像州有人脸存在,如果存在,给出每个人脸的具体位置和范围。实际应用中人脸图像的采集或获取常在非受控的条件下进行,这样所得到的图像中的人脸在尺寸、朝向、明暗、遮挡、分辨率等方面都有很多不同,使同一的人脸出现各种变形,并有可能导致各种误识、漏识等失败的情况。为校正人脸在尺度、光照和旋转等方面的变化,常需采用一些包括几何归一化(空间尺度归一化)和光照归一化(灰度幅值归一化)等手段来调整不同的人脸图像,以利于用统一算法进行识别。
(2)特征提取。为区分不同的人脸,需提取各种人脸的独特性质。也就是要从人脸图像中映射提取一组反映人脸特征的数值表示样本。这里首先需要采取某种表示方式来表示检测出的人脸和数据库中的已知人脸。通常的表示法包括几何特征(如欧氏距离、曲率、角度)、代数特征(如矩阵或特征向量)、固定特征模板、特征脸等。
(3)特征降维。人脸是一个非刚性的自然物体(柔性体),从人脸图像中可提取很多不同特征,所以表征人脸的原始特征对应高维空间中的数据(对一幅M*N的图像,空间维数可达M*N)。直接利用这样高维的数据进行识别除需要很多的匹配计算量外,由于很难对各高维数据的描述能力做有效的判断,故还不能保证基于这么多数据进行的识别结果的正确性。在特征提取后,需采用紧凑的人脸表征方式,将原始特征进行筛选组合,集中信息,降低维数,使这些低维空间的有效性的到提高,以有利于接下来的匹配分类。
(4)匹配识别。 在特征提取的基础上,选择使当的匹配策略,可将待识别的人脸与数据库中的已知人脸进行匹配比较,建立它们的相关关系,并输出所作出的判断决策/决定(识别结果)。与人脸检测不同,这里利用的主要是人脸个体差异的信息。有两种识别目的和情况需要区别:一种是对人脸图像的验证(verification),即要确认输入人脸图像中的人是否在数据库中,属于有监督的识别;另一种是对人脸图像的辨识(identification),即要确认输入图像中的人的身份,属于无监督的识别。
4.2 离线学习和在线匹配
人脸识别系统的构建及使用常由两个过程来完成,即离线学习和在线匹配。离线学习是利用作为训练样本的人脸图像,从中提取公共的特征,建立训练样本的特征子空间,使系统具有描述已有类别图像的能力,为在线匹配打下基础。在线匹配是要从输入的待识别人脸图像中提取相应的特征,将这些特征与离线学习的特征进行匹配,从而可借此将输入图像和训练图像建立联系,并将输入图像归入到某个训练图像类别中,如下图:
分类结果
图5 即离线学习和在线匹配流程图
本次设计既采用这种方案。
4.3 人脸识别中PCA算法步骤及过程
训练过程:
1.构造训练样本集,即从人脸图像目录中读取多个人脸图像到训练样本集中,构造矩阵X;
2.计算这些图像的平均值μ;
3.计算协方差矩阵C=E[(x-μ)(x-μ)T];
4.计算特征值和特征向量:[V,D] = eig(C);
5.按特征值从大到小排序,选择前几个最大的特征值对应的Ui作为变换矩阵W;
6.把所有训练样本做变换y=WTx,保留系数y。
识别过程:
1.读取一幅待识别图像;
2.求取该图像相对于平均脸差值图像;
3.求差值图像在各特征向量上的投影,对新样本也作变换,通过计算欧式距离看与哪个y最接近,最近者则判为那一类。
4.与实际比较确定是否识别正确,统计识别率。
图解如下:
训练图像展为列向量
求协方差矩阵
待识别图像展为列向量
SVD分解生成投影矩阵
对训练图像进行投影
对训练图像进行投影
识别比较
测试结果
图6 人脸识别流程
4.4 实验及结果分析
我们使用MATLAB软件实现了人脸识别并统计其识别率。本实验采用PCA(主成分分析)方法,利用K-L变换和奇异值分解原理实现。
本论文实验采用的是是英国剑桥大学Oliveut研究所制作的ORL(Oliveut Reesarhc Lbaoratoyr)人脸数据库。该数据库包括10个不同人,每人3幅图像,共300幅。每幅原始图像256个灰度级,分辨率112x92。ORL人脸图像是在不同时间、不同视角、各种表情条件下拍摄的。其中部分如图7所示:
图7 ORL数据库部分人脸图像
该数据库提供了经过预处理的人脸训练集和测试集。此次设计对ORL人脸库样本训练时间为0.91S。识别率为90%训练样本数目多增加人脸特征库的容量,会几何级增加人脸识别核心算法的时间和空间复杂度。
图8 左一为测试图片,左二位数据库图片
如果想进一步提高人脸识别率,可以考虑与其他方法结合。仅单独使用任何一种现有的方法一般都不会取得很好的识别效果,将其他人脸识别方法组合是今后研究的一种趋势。也可以考虑改进分类决策的方法。本系统采用的最小距离分类法属于线性的分类器,而利用神经网络这类学习能力更强的非线性分类器对高维人脸识别问题可能会有更好的解决。
第5章 影响人脸识别的几个因素及人脸数据库介绍
对人脸的识别会受到很多因素的影响。例如光照环境的变化会改变人脸图像不同部位的明暗,不同的识别表情会改变图像中的人脸的外观,人脸成像时的姿态也有可能产生一定的遮挡。同样的识别方法对不同年龄、性别的人的识别效果不同,或者说随着人的年龄的改变,识别的成功率也会变化[15]。
对其中若干影响因素做初步讨论如下:
1. 光照变化
在人脸识别中,光照条件的变化常引起人脸外貌或外观的明显变化,光照变化所导致的阴影、遮挡、明暗区、暗光、高光都会使识别率大幅下降。光照的变化可以来自光线方向或能量分布的不同,也会受到人脸3D结构的影响。现有解决光照变化的方法可分两类:一类可称为被动的方法,它通过学习由于照明变化而导致的可见光谱图像的变化来设法减小光照变化造成的影响;另一类可称为主动的方法,它使用主动成像技术,使获得的图像具有在固定照明条件下所采集到图像的特点,或只有不受照明变化影响的采集方式获得的图像的特点。
2. 姿态变化
在采集人脸图像时,如果人的姿态发生变化,则其导致的投影形变会引起人脸面部不同部位的拉伸、压缩和遮挡,使图像发生很大的改变。人脸姿态在三维空间的变化共有6个自由度:沿X、Y、Z轴的平移和绕X、Y、Z轴的旋转。其中,沿X、Y轴的平移在图像上表现为人脸位置的变化,对其的校正可通过采用适当的检测方法获取变化量再借助坐标变换实现;沿Z轴的变化在图像上表现为比例的变化,对其的校正可通过缩放二维图像或三维人脸来实现。绕轴的变化可分为平面旋转、垂直深度旋转和侧深度旋转。其中,平面旋转是绕z轴的旋转;垂直深度旋转也叫上下旋转或仰俯旋转,是绕X轴的旋转;侧深度旋转有时被称为左右旋转或水平偏转,是绕Y轴的旋转。上述6个自由度的变化中绕X和Y轴的旋转难以直接从图像上确定。克服姿态变化所带来问题的一种方法是从图像中估计出人脸的不同姿态,再设法将其变换回人脸的标准姿态,用标准的人脸识别方法进行识别。还有一种方法是学习并记忆多种姿态下的特征,这相当于建立多个姿态,工作量会大一些。最后,也可以构建头部的3D模型,从中提取姿态无关特征来识别人脸。
3. 年龄影响
人的外形和纹理会随着年龄而变化,这也会导致人脸识别中的识别率下降。
解决年龄影响的思路与解决姿态影响的第一种思路有些类似,即从图像中估计出人脸的年龄,再设法将其变换回原来用于训练识别算法的人脸的年龄。与年龄有关的人脸特征即包括形状特征也包括纹理特征。形状特征可从人脸轮廓获得,而纹理特征可从人脸表面获得。在训练中,可建立起人脸特征与年龄之间的关系,即建立起年龄函数。利用年龄函数并结合人脸变老方式的分类,可自动估计出图像人脸的年龄。
另外,对人脸识别的研究还要求对识别的效果有客观的评价以及能对不同方法进行公平的比较,其中采用统一的数据库可方便比较工作,因为不同的数据库,产生的结果会有所差异。以下介绍一些典型的标准数据库。
(l)英国ORL人脸数据库。英国ORL(Olivetti Research Laboratory)人脸数据库包括从1992年4月到1994年4月拍摄的一系列人脸图像,由40个人的400幅灰度图像组成,每幅原始图像256个灰度级,分辨率112x92,图像背景为黑色。其中人脸脸部表情和细节均有变化,例如笑与不笑,眼睛睁着或闭着,戴或不戴眼镜等,人脸姿态也有变化,其深度旋转和平面旋转可达20度,人脸的尺寸也有最多10%的变化。这是目前使用最广泛的人脸数据库。
(2)英国Manchester人脸数据库。该数据库由30个人的690幅图像组成,其中训练集和测试集分开,有不同的光照和背景特征,而且对于每个人而言,前后两张照片之间的时间间隔至少有3周。训练集对光源有一定的约束,而在测试集中则变化多端。测试集还增加了两级难度:其一是对于其中的相似人脸,仅有发型,背景以及戴眼镜等变化;其二是特征遮挡,如头发,黑眼镜,手臂等。虽然Manchester数据库远比ORL数据库测试更为全面,但因发表的比较结果不够多,从而远不如ORL使用广泛。
(3)美国FERET人脸数据库。美国FERET(Face Recognition Techoulogy)人脸数据库是目前最大的人脸数据库,由美方研究实验室提供,其中每人8张照片,两张正脸,3张从右到左的不同侧面角度的照片,有些人还提供了更多不同视点和不同表情的照片。该数据库中不包含戴眼镜的照片,拍摄条件也有一定的,人脸大小约束在规定范围内。到1996年6月,该数据库已存储了1199个人的14126幅图像,而且逐年增加。但到目前为止,该数据库并未提供运动图像系列或包含语音信息。FERET数据库的最大缺点是非美研究机构的获取不便。
(4)日本ATR数据库。该数据库考虑了除人脸特征外的其他信息在人脸识别中的作用,提供人脸和语音的合成,由60人组成。但其中人脸图像是静止的而非运动图像序列。
(5)欧洲MZVTS多模型人脸数据库。该数据库用于测试多模型身份鉴别。目前该库由37人组成,每人有5个图像序列,拍摄时间间隔一周左右。其中至少有一个序列提供合成语音。其他数据库还有: CMU(Carnegie Mellon University)正面人脸数据库,MIT单人脸数据库等。ORL人脸数据库是目前使用最广泛的标准数据库,它含有大量的比较结果,并且使用该人脸数据库发表的人脸识别论文数量是最多的,是识别算法之间进行比较的首选数据库。本文所采用的是ORL人脸数据库。
第6章 总结与展望
6.1 总结
人脸识别具有重大的理论意义和应用意义,它是一项结合了多学科,多领域知识方法的技术。长期以来,如何利用计算机进行准确,快速的人脸识别,一直是图像处理与模式识别的研究热点与难点。社会的发展促进了身份认证技术市场的急速扩大,人脸识别因其自身的优点,在身份认证中的使用日益频繁。人脸识别技术具有广泛的社会需求和市场前景。
本文回顾了人脸识别发展历程及研究现状,详细介绍了人脸识别系统的构成与工作以及其中的一些关键性问题,对特征脸方法作了详细介绍,并运用其设计出人脸识别程序。本文所做的主要工作归纳如下:
(1)概述了人脸识别技术的应用及其难点,发展与现状,研究内容与主要方法,及常用的人脸识别标准数据库。
(2)介绍了人脸识别中会使用到的各种分类器。
(3)详细介绍了人脸识别的流程、KL变换、特征脸方法(PCA),使用特征脸方法设计出人脸识别程序并计算出识别成功率。
(4)在分类器的设计上,采用最近了邻分类器和三阶近邻分类器两种分类器进行分类识别,并且通过实验比较识别效果。
6.2 展望
人脸识别是一个多学科领域的挑战性难题,近30年来人脸识别的研究虽然取得了巨大的进步,但与人类的感知能力相距甚远。人脸识别涉及到很多理论和技术问题,本文只是进行初步的探索和尝试。在这个基础上可进行的后续研究可以从以下几个方面考虑。
首先,如何利用各种图像的特点,对静态人脸灰度图做相应的图像预处理,从而克服光照、姿态和表情变化对识别的影响,提高人脸识别率。同时,可以充分利用边缘和锐化图像的特点,使预处理后的图像的识别效果更好。
其次,在进行人脸识别的特征提取过程中,如何能够更好的利用图像的各种信息,比如灰度统计信息和结构信息,将各种可能的信息集合起来,找到能最大限度的利用图像现有信息的人脸识别方法。
最后,每种人脸识别方法都各有优缺点,如何充分利用现有的各种人脸识别方法,发挥某一类方法的优点,克服某一类方法的缺点,将它们进行有效的综合和组合,也是以后一个探索的方向。
参考文献
[1] 聂祥飞. 人脸识别综述. 重庆三峡学院学报[J], 2009, 25(117):14.
[2] 朱金魁. 人脸识别算法的研究[D]. 东北:林业大学硕士论文. 2009.26~28.
[3] 王志良,孟秀燕. 人脸工程学(第一版)[M].北京:机械工业出版社, 2008.45~46.
[4] 安贝. 基于K-L变换的人脸识别方法[D]. 四川:四川大学硕士论文. 2005.
[5] 邓迎宾. 人脸识别关键技术研究[D]. 云南:昆明理工大学硕士论文. 2007.
[6] 于清澄. 基于K-L变换的人脸识别算法研究[D]. 辽宁:沈阳工业大学硕士论文. 2007.
[7] 程正东等. 基于子空间的人脸识别(第一版) [D]. 北京:清华大学出版社, 2009.
[8] 齐怀峰. 基于特征脸的人脸检测与识别[D]. 云南:云南师范大学学报, 2005, 25(6):22-23.
[9] 张辉.K-L变换在人脸识别特征提取中的应用[M].. 北京: 北京航空学院出版社,2007.87~88.
[10] 黎奎,宋宇.基于特征脸和BP神经网络的人脸识别[M].陕西:社会科学出版社,2005,6:236-237.
[11] 吴昊,孟传良.基于特征脸和LDA的人脸识别[J]. 贵州工业大学学报. 2009, 25(117):14.
[12] 邓楠,基于主成分析的人脸识别[D].陕西:西安电子科技大学硕士论文. 2009.26~28.
[13]Kymlicka,Will.Face recognition technology[D]. Oxford:OxfordUniversity Press,2007.
[14]Alexander. Feature extraction in human face recognition system[M], Philosophy and public Affair,Vol.16,pp.85-110.
[15] Aditya Kelkar. Face Recognition using Eigenface Approach[J], AIAA J, Ethics, 2007, 33(5): 871~875.
致谢
在即将本科毕业之际,我借此机会向尊敬的牛老师郑老师表示衷心的感谢。在我进行毕业设计期间,她们总能细心的指导,并且启发式的教育,在解决问题的同时,又培养了我思考的能力。老师们渊博的知识和严谨的科研精神给我留下了深刻的印象,这些将使我终身受益。
毕设期间,我的同学、舍友给了我无微不至的关怀和帮助,在此向他们表示真心的感谢!
此外,还要感谢我的家人,是他们一直的鼓励和支持,使我勇往直前。感谢所有曾关心、帮助过我的老师、同学和朋友们!
最后向审阅本文的老师们表示深深的谢意!
附件
CreateDatabase
function T = CreateDatabase(TrainDatabasePath)
TrainFiles = dir(TrainDatabasePath);
Train_Number = 0;
for i = 1:size(TrainFiles,1)
(.|..|Thnmbs.db)
if not(strcmp(TrainFiles(i).name,'.')|strcmp(TrainFiles(i).name,'..')|strcmp(TrainFiles(i).name,'Thumbs.db'))
Train_Number = Train_Number + 1;
end
end
T = [];
for i = 1 : Train_Number
str = strcat(TrainDatabasePath,str);
img = imread(str);
img = rgb2gray(img);
[irow icol] = size(img);
temp = reshape(img,irow*icol,1);
T = [T temp];
End
Eigenfacecore
function [m, A, Eigenfaces] = EigenfaceCore(T)
m = mean(T,2); (j=1 : P)
Train_Number = size(T,2);
A = [];
for i = 1 : Train_Number
temp = double(T(:,i))-m;
A = [A temp];
end
L = A'*A;
[V D] = eig(L);
L_eig_vec = [];
for i = 1 : size(V,2)
if( D(i,i)>1 )
L_eig_vec = [L_eig_vec V(:,i)];
end
end
Eigenfaces = A * L_eig_vec;
Recognition
function OutputName = Recognition(TestImage, m, A, Eigenfaces)
ProjectedImages = [];
Train_Number = size(Eigenfaces,2);
for i = 1 : Train_Number
temp = Eigenfaces'*A(:,i);
ProjectedImages = [ProjectedImages temp];
end
InputImage = imread(TestImage);
temp = rgb2gray(InputImage);
[irow icol] = size(temp);
InImage = reshape(temp,irow*icol,1);
Difference = double(InImage)-m; % L_eig_vec'
ProjectedTestImage = Eigenfaces'*Difference;
Euc_dist = [];
for i = 1 : Train_Number
q = ProjectedImages(:,i);
temp = ( norm( ProjectedTestImage - q ) )^2;
Euc_dist = [Euc_dist temp];
end
[Euc_dist_min , Recognized_index] = min(Euc_dist);
Example
% A sample script, which shows the usage of functions, included in
% PCA-based face recognition system (Eigenface method)
%
% See also: CREATEDATABASE, EIGENFACECORE, RECOGNITION
% Original version by Amir Hossein Omidvarnia, October 2007
% Email: aomidvar@ece.ut.ac.ir
clear all
clc
close all
% You can customize and fix initial directory paths
TrainDatabasePath = uigetdir('D:\\Matlab编程实例\\pca和fisher算法用于人脸识别\\PCA_based Face Recognition System',...
'Select training database path' );
TestDatabasePath = uigetdir('D:\\Matlab编程实例\\pca和fisher算法用于人脸识别\\PCA_based Face Recognition System',...
'Select test database path');
prompt = {'Enter test image name (a number between 1 to 10):'};
dlg_title = 'Input of PCA-Based Face Recognition System';
num_lines= 1;
def = {'1'};
TestImage = inputdlg(prompt,dlg_title,num_lines,def);
im = imread(TestImage);
T = CreateDatabase(TrainDatabasePath);
[m, A, Eigenfaces] = EigenfaceCore(T);
OutputName = Recognition(TestImage, m, A, Eigenfaces);
SelectedImage = strcat(TrainDatabasePath,'\\',OutputName);
SelectedImage = imread(SelectedImage);
imshow(im)
title('Test Image');
figure,imshow(SelectedImage);
title('Equivalent Image');
str = strcat('Matched image is : ',OutputName);
disp(str)