《模式识别》大作业人脸识别方法
人脸识别技术的使用技巧及多角度检测方法

人脸识别技术的使用技巧及多角度检测方法摘要:人脸识别技术是一种可以通过计算机视觉系统自动检测和识别人脸的技术,已经在许多领域得到广泛应用。
本文将介绍人脸识别技术的基本原理,探讨其使用技巧,并介绍一些常用的多角度检测方法,以提高人脸识别的准确性和鲁棒性。
一、概述人脸识别技术是一项基于计算机视觉和模式识别的先进技术,通过对输入图像中的人脸进行特征提取和匹配,来实现人脸的自动识别和验证。
它被广泛应用于安防、人机交互、人脸表情分析、人脸属性分析等各个领域。
二、技巧1.图像预处理在进行人脸识别前,对图像进行预处理是非常重要的。
常见的预处理方法包括灰度化、直方图均衡化、高斯滤波等。
这些操作有助于提高图像的对比度和清晰度,为后续的特征提取和匹配提供更好的输入。
2.特征提取人脸识别的核心是提取图像中的特征,常用的特征提取方法包括主成分分析(PCA)、线性判别分析(LDA)、局部二值模式(LBP)等。
这些方法可以将人脸图像转化为具有代表性的特征向量,从而方便后续的匹配和比对。
3.模型训练与更新为了提高人脸识别的准确性,必须使用大量的人脸图像进行模型的训练。
同时,定期更新模型也是非常重要的,可以通过不断采集新的人脸图像,利用这些新数据来更新训练模型,以适应不断变化的环境和人脸特征。
4.人脸对齐人脸识别中的一个重要问题是不同角度下的人脸检测和对齐。
常见的方法包括基于特征点的对齐和基于纹理的对齐。
前者通过检测人脸关键点如眼睛、鼻子等特征点,来对齐人脸图像;后者利用纹理特征来进行对齐,提高人脸检测的准确性。
三、多角度检测方法多角度人脸检测是人脸识别中面临的一个重要问题。
对于输入的图像中可能包含多个人脸以及人脸的不同角度,我们需要采用一些方法来对其进行有效的检测和识别。
以下是几个常用的多角度检测方法:1.级联分类器级联分类器是一种基于Haar-like特征的检测方法,通过级联的方式对目标进行分类和检测。
该方法可以在保证较高准确性的同时,实现快速的人脸检测和识别。
模式识别-人脸检测

二、主要工作
2.1单个范例在RealAdaboost框架中如何工作 视觉词袋模型——BoVW模型
类比文本文档
二、主要工作
视觉词典
生成SIFT描述子 生成视觉单词 视觉单词直方图
模型框架
二、主要工作
图像库 SIFT 局部特征描 述子集合 聚类
视觉词典
视 觉 词 典 生 成 流 程
二、主要工作
全体描述子来训练范例分类器——计算量很大 高效图像检索技术——需要的范例数量大
足够的范例数量——范例过多,影响准确性
非人脸的检测容易误判
一、研究状况 创新之处
a) 使用RealAdaboost框架选取最有价值的范例,去除冗余 范例,大幅减少范例使用量
b) 把基于范例人脸识别方法的灵活性和RealAdaboost算法
Company
LOGO
不当之处,请大家多多指正!
二、主要工作
基于区域划分的方法
范例:带有位置坐标的视觉词袋,被区域分割的弱分类器
带有位置坐标的视觉词袋在目标图像上产生一张投票图 被区域分割的弱分类器给出每个像素坐标置信率的真值
二、主要工作
2.1单个范例在RealAdaboost框架中如何工作
训练阶段
Hough投票
将单个范例处理为“视觉词袋” 计算相似分数,得到投票图 “视觉词袋”和相关的位置坐标将会被放入 “倒排文件索引”以供测 试阶段高效检索
二、主要工作
2.1单个范例在RealAdaboost框架中如何工作 测试阶段——置信分数的计算
二、主要工作
2.2RealAdaboost算法训练检测器的方法 总体范例在框架中如何工作
ˆ ( x) h t
基于模式识别的人脸识别技术

基于模式识别的人脸识别技术人脸识别技术是一种基于模式识别的先进技术,通过对人脸图像进行分析和比对,能够准确地识别出一个人的身份信息。
这项技术已经被广泛应用于安防领域、金融领域、教育领域等多个领域,极大地提高了人们的生活便利性和安全性。
一、人脸识别的原理与算法人脸识别技术基于人的脸部特征进行识别和比对,其原理主要包括人脸图像采集、预处理、特征提取和特征匹配几个步骤。
首先,通过摄像头或其他设备采集人脸图像,并对图像进行预处理,包括图像增强、色彩处理等,以确保图像清晰度和一致性。
然后,通过特征提取算法,将人脸图像中的重要特征点提取出来,如眼睛、鼻子、嘴巴等,形成一个独特的人脸特征向量。
最后,将提取出的特征向量与数据库中存储的人脸特征进行比对和匹配,以确定一个人的身份信息。
目前,常用的人脸识别算法主要包括主成分分析(PCA)、线性判别分析(LDA)、支持向量机(SVM)等。
其中,PCA是一种最常用的人脸识别算法,通过对人脸图像进行降维和特征提取,能够识别出人脸图像中的主要特征。
而LDA则是通过最大化类间散度和最小化类内散度的方式,寻找出最佳的分离超平面,进而实现人脸识别。
SVM算法则是一种二分类模型,通过寻找最优分类超平面,将人脸图像分为不同的类别。
二、人脸识别技术的应用1. 安防领域:人脸识别技术可以应用于各类安保系统中,如门禁系统、监控系统等。
通过将人脸特征与数据库中的员工或授权人员信息进行比对,可以实现门禁的严格管控和入侵者的及时报警。
此外,在公共场所如机场、车站等也可以通过人脸识别技术对疑似危险分子进行识别和拦截,提高公共交通安全性。
2. 金融领域:人脸识别技术在金融领域的应用较为广泛,主要用于个人身份验证和支付安全。
通过采集用户的人脸信息,并与已有的身份信息进行比对,可以实现更加安全可靠的身份验证方式,避免了传统密码方式的繁琐和风险。
同时,结合人脸识别技术和支付系统,可以实现人脸支付,提高用户支付的便利性和安全性。
《模式识别课件》课件

医学诊断
要点一
总结词
医学诊断是利用医学知识和技术对疾病进行诊断的过程, 模式识别技术在医学诊断中发挥着重要作用。
要点二
详细描述
模式识别技术可以辅助医生进行影像学分析、病理学分析 等,提高诊断准确性和效率,为患者提供更好的医疗服务 和治疗效果。
05
模式识别的挑战与未来发 展
数据不平衡问题
《模式识别课件》 ppt课件
xx年xx月xx日
• 模式识别概述 • 模式识别的基本原理 • 常见模式识别方法 • 模式识别的应用实例 • 模式识别的挑战与未来发展
目录
01
模式识别概述
定义与分类
定义
模式识别是对各种信息进行分类和辨 识的科学,通过模式识别技术,计算 机可以识别、分类和解释图像、声音 、文本等数据。
深度学习在模式识别中的应用
总结词
深度学习在模式识别中具有广泛的应用,能够自动提取特征并实现高效分类。
详细描述
深度学习通过构建多层神经网络来学习数据的内在特征。在模式识别中,卷积神经网络和循环神经网络等方法已 被广泛应用于图像识别、语音识别和自然语言处理等领域。
THANKS
感谢观看
人脸识别
总结词
人脸识别是一种基于人脸特征的生物识 别技术,通过采集和比对人脸图像信息 进行身份验证和识别。
VS
详细描述
人脸识别技术广泛应用于安全、门禁、考 勤、移动支付等领域,通过摄像头捕捉人 脸图像,并与数据库中存储的图像信息进 行比对,实现快速的身份验证和识别。
手写数字识别
总结词
手写数字识别是一种利用计算机技术自动识 别手写数字的技术,通过对手写数字图像进 行预处理、特征提取和分类实现识别。
基于模式识别的人脸识别技术

基于模式识别的人脸识别技术
人脸识别技术基于模式识别,它是一种自动确定人类脸部特征的方法。
它能够根据已有的人脸图像从新的图像中识别或跟踪一个人的脸部。
这项技术的应用不仅仅集中在安全保护和车牌识别,它也可以用来获取用户使用情况,有助于日常生活中更好地管理。
模式识别是人脸识别技术的基础。
这项技术使用模式匹配的方法去识别和跟踪人脸,其中模式匹配通过特征提取、特征描述和特征匹配三个步骤来确定两个图像之间的相似度。
首先,特征提取从输入图像中提取出有用的特征,如脸部的眼睛、鼻子、嘴巴等。
接着,特征描述针对所提取的特征进行描述,以便将它们与其他人的脸部特征进行比较,以确定是否来自同一个人。
最后,特征匹配就是将提取出的特征和描述的特征进行比较,以确定它们之间的相似度,从而决定它们是否来自同一个人。
人脸识别技术基于模式识别在现代社会中发挥着重要作用,由于它准确可靠,它大大减少了人们使用密码或指纹识别的需求。
它可以用于实现自动化的安全、登录、访问控制等。
此外,它还可以用于车牌识别、智能商店的结账系统,也可以用于自动识别宠物和人类,以及多种智能识别系统。
人脸识别技术基于模式识别已经成为最新科技发展趋势之一,它能够提供更快、更准确的检测结果,为人类提供了更强大的安全性。
人脸识别技术提供了一种新型的安全系统,使用户可以通过它来更好地管理活动。
因此,这项技术可以用来提高安全性、提供更优质的服务,并帮助人们更好地管理日常生活。
中科院模式识别大作业——人脸识别

中科院模式识别大作业——人脸识别人脸识别是一种广泛应用于安全领域的技术,它通过对图像或视频中的人脸进行特征提取和比对,实现对个体身份的自动识别。
中科院模式识别大作业中的人脸识别任务主要包括了人脸检测、人脸对齐、特征提取和人脸比对等步骤。
下面将详细介绍这些步骤。
首先,人脸检测是人脸识别的第一步。
它的目的是在图像或视频中准确地定位人脸区域,去除背景和其他干扰信息。
传统的人脸检测算法主要基于特征匹配、分类器或神经网络等方法,而近年来深度学习技术的兴起也为人脸检测带来了重大突破。
深度学习方法通过构建卷积神经网络,在大规模数据上进行训练,可以准确地检测出各种姿态、光照和遮挡条件下的人脸区域。
接下来是人脸对齐,它的目的是将检测到的人脸区域进行准确的对齐,使得不同人脸之间的几何特征保持一致。
人脸对齐算法通常包括了关键点检测和对齐变换操作。
关键点检测通过在人脸中标注一些特定点(如眼睛、鼻子和嘴巴)来标定人脸的几何结构。
对齐变换操作则根据标定的关键点信息,对人脸进行旋转、尺度调整和平移等变换操作,使得不同人脸之间具有一致的几何结构。
人脸对齐可以提高后续特征提取的准确性,从而提高整个人脸识别系统的性能。
特征提取是人脸识别的核心步骤之一,它将对齐后的人脸图像转化为能够表示个体身份信息的特征向量。
传统的特征提取方法主要基于手工设计的特征描述子,如LBP、HOG等。
这些方法需要针对不同任务进行特征设计,且往往存在一定的局限性。
相比之下,深度学习方法可以通过网络自动地学习出适用于不同任务的特征表示。
常用的深度学习模型有卷积神经网络和人工神经网络等,它们通过在大规模数据上进行监督学习,可以提取出能够表达人脸细节和结构的高层次特征。
最后是人脸比对,它根据提取的特征向量进行个体身份的匹配。
人脸比对算法通常需要计算两个特征向量之间的相似度,常用的计算方法有欧氏距离、余弦相似度等。
在实际应用中,为了提高匹配的准确性,通常会结合分数归一化、阈值设定等技术来进行优化。
人脸识别方法

人脸识别方法人脸识别是一种通过技术手段对人脸图像进行识别和验证的技术,它在安防监控、手机解锁、人脸支付等领域有着广泛的应用。
目前,人脸识别方法主要包括传统的基于特征的方法和深度学习方法两大类。
传统的基于特征的人脸识别方法主要包括几何特征法、灰度特征法和皮肤特征法。
几何特征法是通过提取人脸图像中的几何特征点,如眼睛、鼻子、嘴巴等位置关系,然后进行匹配和识别。
而灰度特征法则是通过提取人脸图像的灰度特征,如纹理、边缘等信息,进行模式匹配和识别。
皮肤特征法则是通过提取人脸图像中的皮肤颜色特征,进行肤色分割和识别。
这些方法在一定程度上可以实现人脸识别的功能,但是对于光照、表情、姿态等因素的影响较大,识别率不稳定。
深度学习方法是近年来人脸识别领域的研究热点,主要包括卷积神经网络(CNN)和循环神经网络(RNN)等技术。
CNN可以通过多层卷积和池化操作,提取人脸图像中的高级抽象特征,然后进行分类和识别。
RNN则可以对人脸图像序列进行建模和学习,实现对视频中的人脸进行识别和跟踪。
深度学习方法在大规模数据集上训练后,可以取得较高的识别准确率和鲁棒性,对光照、遮挡、姿态等因素具有较强的鲁棒性。
除了以上介绍的方法外,人脸识别还可以结合多模态信息,如结合人脸和声纹、指纹等信息进行融合识别,提高识别的准确率和安全性。
同时,人脸识别方法还可以结合三维信息,如使用三维人脸重建技术,提高对光照、姿态等因素的鲁棒性。
总的来说,人脸识别方法经过多年的发展和研究,已经取得了较大的进展。
传统的基于特征的方法和深度学习方法各有优势,可以根据具体的应用场景选择合适的方法。
未来,随着计算机视觉和模式识别技术的不断发展,人脸识别方法将会更加准确和稳定,为人们的生活带来更多便利和安全保障。
人脸识别的几种方法

人脸识别的几种方法
人脸识别的方法主要有以下几种:
1. 基于几何特征的方法:这种方法通过提取人脸的几何特征,如眼睛、鼻子、嘴巴等部位的形状和大小,以及它们之间的几何关系(如距离、角度等),来进行人脸识别。
这种方法简单易行,但识别率较低,且对光照、表情等因素较为敏感。
2. 基于模板的方法:这种方法将人脸图像与预先存储的模板进行比对,找到最相似的模板作为识别结果。
常见的模板匹配方法有基于特征的方法、基于子空间的方法、基于神经网络的方法等。
这种方法识别率较高,但计算复杂度较高,且对模板的选择和存储要求较高。
3. 基于模型的方法:这种方法通过建立人脸模型,将人脸图像与模型进行比对,找到最相似的模型作为识别结果。
常见的模型方法有隐马尔可夫模型(HMM)、支持向量机(SVM)、神经网络等。
这种方法能够处理复杂的表情和光照变化,但需要大量的人脸数据来训练模型,且计算复杂度较高。
4. 基于深度学习的方法:这种方法通过训练深度神经网络来学习人脸特征,并进行人脸识别。
常见的深度学习算法有卷积神经网络(CNN)、循环神
经网络(RNN)等。
这种方法能够自动提取有效特征,对光照、表情等因
素具有较强的鲁棒性,但需要大量的计算资源和训练数据。
总之,人脸识别的不同方法各有优缺点,应根据具体应用场景和需求选择合适的方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《模式识别》大作业人脸识别方法---- 基于PCA 和欧几里得距离判据的模板匹配分类器一、 理论知识1、主成分分析主成分分析是把多个特征映射为少数几个综合特征的一种统计分析方法。
在多特征的研究中,往往由于特征个数太多,且彼此之间存在着一定的相关性,因而使得所观测的数据在一定程度上有信息的重叠。
当特征较多时,在高维空间中研究样本的分布规律就更麻烦。
主成分分析采取一种降维的方法,找出几个综合因子来代表原来众多的特征,使这些综合因子尽可能地反映原来变量的信息,而且彼此之间互不相关,从而达到简化的目的。
主成分的表示相当于把原来的特征进行坐标变换(乘以一个变换矩阵),得到相关性较小(严格来说是零)的综合因子。
1.1 问题的提出一般来说,如果N 个样品中的每个样品有n 个特征12,,n x x x ,经过主成分分析,将它们综合成n 综合变量,即11111221221122221122n nn n n n n nn ny c x c x c x y c x c x c x y c x c x c x =+++⎧⎪=+++⎪⎨⎪⎪=+++⎩ij c 由下列原则决定:1、i y 和j y (i j ≠,i,j = 1,2,...n )相互独立;2、y 的排序原则是方差从大到小。
这样的综合指标因子分别是原变量的第1、第2、……、第n 个主分量,它们的方差依次递减。
1.2 主成分的导出我们观察上述方程组,用我们熟知的矩阵表示,设12n x x X x ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦是一个n 维随机向量,12n y y Y y ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦是满足上式的新变量所构成的向量。
于是我们可以写成Y=CX,C 是一个正交矩阵,满足CC ’=I 。
坐标旋转是指新坐标轴相互正交,仍构成一个直角坐标系。
变换后的N 个点在1y 轴上有最大方差,而在n y 轴上有最小方差。
同时,注意上面第一条原则,由此我们要求i y 轴和j y 轴的协方差为零,那么要求T YY =Λ12n λλλ⎡⎤⎢⎥⎢⎥Λ=⎢⎥⎢⎥⎣⎦令T R XX =,则T T RC C =Λ经过上面式子的变换,我们得到以下n 个方程111111212112111221122111121211()0()0()0n n n n n n nn n r c r c r c r c r c r c r c r c r c λλλ-+++=+-++=+++-=1.3 主成分分析的结果我们要求解出C ,即解出上述齐次方程的非零解,要求ij c 的系数行列式为0。
最后得出结论i λ是||0R I λ-=的根,i y 的方差为i λ。
然后选取前面p 个贡献率大的分量,这样就实现了降维。
也就是主成分分析的目标。
二、 实现方法1、 获取数据。
在编程时具体是把一幅二维的图像转换成一维的;2、 减去均值。
要使PCA 正常工作,必须减去数据的均值。
减去的均值为每一维的平均,所有的x 值都要减去,同样所有的y 值都要减去,这样处理后的数据都具有0均值;3、 计算协方差矩阵;4、 计算协方差矩阵的特征矢量和特征值。
因为协方差矩阵为方阵,我们可以计算它的特征矢量和特征值,它可以告诉我们数据的有用信息;5、选择成分组成模式矢量现在可以进行数据压缩降低维数了。
如果你观察上一节中的特征矢量和特征值,会注意到那些特征值是十分不同的。
事实上,可以证明对应最大特征值的特征矢量就是数据的主成分。
对应大特征值的特征矢量就是那条穿过数据中间的矢量,它是数据维数之间最大的关联。
一般地,从协方差矩阵找到特征矢量以后,下一步就是按照特征值由大到小进行排列,这将给出成分的重要性级别。
现在,如果你喜欢,可以忽略那些重要性很小的成分,当然这会丢失一些信息,但是如果对应的特征值很小,你不会丢失很多信息。
如果你已经忽略了一些成分,那么最后的数据集将有更少的维数,精确地说,如果你的原始数据是n维的,你选择了前p个主要成分,那么你现在的数据将仅有p维。
现在要做的是你需要组成一个模式矢量,这只是几个矢量组成的矩阵的一个有意思的名字而已,它由你保持的所有特征矢量构成,每一个特征矢量是这个矩阵的一列。
6、获得新数据这是PCA最后一步,也是最容易的一步。
一旦你选择了须要保留的成分(特征矢量)并组成了模式矢量,我们简单地对其进行转置,并将其左乘原始数据的转置:其中rowFeatureVector是由特征矢量作为列组成的矩阵的转置,因此它的行就是原来的特征矢量,而且对应最大特征值的特征矢量在该矩阵的最上一行。
rowdataAdjust是减去均值后的数据,即数据项目在每一列中,每一行就是一维。
FinalData是最后得到的数据,数据项目在它的列中,维数沿着行。
FinalData = rowFeatureVector * rowdataAdjust这将仅仅给出我们选择的数据。
我们的原始数据有两个轴(x和y),所以我们的原始数据按这两个轴分布。
我们可以按任何两个我们喜欢的轴表示我们的数据。
如果这些轴是正交的,这种表达将是最有效的,这就是特征矢量总是正交的重要性。
我们已经将我们的数据从原来的xy轴表达变换为现在的单个特征矢量表达。
如果我们已经忽略了一些特征矢量,则新数据将会用我们保留的矢量表达。
三、matlab编程matlab程序分为三部分。
程序框图如下图所示。
四、总结从书里看我觉得最让人明白模板匹配分类器的一段话,就是“譬如A类有10个训练样品,就有10个模板,B类有8个训练样品,就有8个模板。
任何一个待测样品在分类时与这18个模板都算一算相似度,找出最相似的模板,如果该模板是B类中的一个,就确定待测样品为B类,否则为A类。
”意思很简单吧,算相似度就是算距离。
就是说,模板匹配就要用你想识别的样品与各类中每个样品的各个模板用距离公式计算距离,距离最短的那个就是最相似的。
这样的匹配方法明显的缺点就是在计算量大,存储量大,每个测试样品要对每个模板计算一次相似度,如果模板量大的时候,计算量就十分的大。
五、附录(matlab 程序代码)第一部分:CreatDatabase.mfunction T = CreatDatabase(TrainDatabasePath)%一系列人脸(训练样本T1,T2,……,TM)%函数描述:这个函数将所有训练样本的二维图像转换成一维列向量。
接着,它把这些一维列向量组合到一行里面构造出二维向量T,即每个单元的信息量是一幅图片%参数:TrainDatabasePath --- 训练数据库的路径%返回值:T ---%一个二维矩阵,包含了所有一维向量。
假设所有在训练样本的P幅图像拥有相同的大小(M*N)。
因此,这些一维向量的长度是M*N而且T将是一个MN*P的二维%矩阵%%%%%%%%%%%%%%文件处理%%%%%%%%%%%%%%%%%TrainFiles = dir(TrainDatabasePath);Train_Number = 0;for i = 1:size(TrainFiles,1)t = size(TrainFiles,1);ifnot(strcmp(TrainFiles(i).name,'.')|strcmp(TrainFiles(i).name,'..')|strcmp(TrainFiles(i).name,'Thumb s.db'))Train_Number = Train_Number + 1;endend%%%%%%%%%从一维数组构造成二维数组%%%%%%%%%%%%T = [];for i = 1: Train_Numberstr = int2str(i);str = strcat('\',str,'.pgm');str = strcat(TrainDatabasePath,str);img = imread(str);[irow icol] = size(img);temp = reshape(img',irow*icol,1);%将二维数组变成一维数组T = [T temp];end第二部分:EigenfaceCore.mfunction [m,A,Eigenfaces] = EigenfaceCore(T)%利用主成分分析(PCA)的方法在各张人脸中决定最明显的特征%描述:这个方程首先得到二维数组,包括所有的训练样本向量并且从训练样本中返回3个输出量%参数:T --- 一个二维矩阵,包含了所有一维向量。
假设所有在训练样本的P 幅图像拥有相同的大小(M*N)。
因此,这些一维向量的长度是M*N而且T将是一个MN*P 的二维%矩阵%返回值:m ---(M*Nx1)训练样本的均值% Eigenfaces --- (M*Nx(P-1))训练样本协方差矩阵的特征向量% A --- (M*NxP)中心向量的矩阵%%%%%%%%%计算均值%%%%%%%%%%%m = mean(T,2); %计算样本平均值m = (1/P)*sum(Tj's)Train_Number = size(T,2);%%%%%%%%%计算每个图像与均值的差%%%%%%%%%%%%要使PCA正常工作,必须减去数据的均值。
减去的均值为每一维的平均,所有的x 值都要减去,同样所有的y值都要减去%%%%%%这样处理后的数据都具有0均值%%%A = [];for i = 1 : Train_Numbertemp = double(T(:,i)) - m;A = [A temp]; %再次合并矩阵end%%%%%%%计算协方差矩阵%%%%%%%%%%%%%%%%%计算协方差矩阵的特征矢量和特征值%%%%%%%%L = A'*A; %L代表协方差矩阵C = A*A'.[V D] = eig(L);%计算矩阵A的特征值D(eigenvalues)和特征矩阵V(eigenvectors)%%%%%%选择成分组成模式矢量%%%%%%%%%%%L_eig_vec = [];for i = 1:size(V,2)if(D(i,i)>1)L_eig_vec = [L_eig_vec V(:,1)];endend%%%%%%计算协方差矩阵的特征向量%%%%%%%%%%Eigenfaces = A * L_eig_vec;第三部分:Recognition.mfunction OutputName = Recognition(TestImage, m, A, Eigenfaces)%函数描述:这个函数将源图像提取成特征脸,然后比较它们之间的欧几里得距离%输入量: TestImage ---测试样本的路径% m ---(M*Nx1)训练样本的均值% Eigenfaces --- (M*Nx(P-1))训练样本协方差矩阵的特征向量% A --- (M*NxP)中心向量的矩阵%返回值:OutputName ---在训练样本中的被识别的图像的名字%%%%%%%%%%从中心向量中提取特征脸%%%%%%%%%%%%%%ProjectedImages = [];Train_Number = size(Eigenfaces,2);for i = 1:Train_Numbertemp = Eigenfaces' * A(:,i)ProjectedImages = [ProjectedImages temp];end%%%%%%%%%%%%%%%%从测试样本中提取PCA特征%%%%%%%%%%%%%%% InputImage = imread(TestImage);temp = InputImage(:,:,1);[irow icol] = size(temp);InImage = reshape(temp',irow*icol,1);Difference = double(InImage) - m;ProjectedTestImage = Eigenfaces'*Difference;%%%%%%%%%%%%%计算欧几里得几何距离%%%%%%%%%%%%%%%%%%%%%% Euc_dist = [];for i = 1 : Train_Number,q = ProjectedImages(:,i);temp = (norm(ProjectedTestImage - q))^2;Euc_dist = [Euc_dist temp];end%找出A中最小元素及其索引,把最小值返回给C,最小值索引返回给I。