- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EigenFace算法详解及Matlab代码20140103
PAGE \* MERGEFORMAT 16
EigenFace算法回顾及Matlab代码
基于PCA的EigenFace算法发表自1987年,是第一种可行的人脸辨识算法。虽然已有20余年历史,但仍是人脸辨识算法研究中的经典,新算法都要与之作比较。
EigenFace是2D辨识算法,但为了进行3D表情辨识的研究,有必要对这一经典算法进行回顾,SIGGRAPH13的文献Online?Modeling?For?Realtime?Facial?Animation实现表情3D重构的基础是SIGGRAPH99中A?Morphable?Model?for?the?Synthesis?of?3D?Faces提出的Morphable?Facial?Model,而建立这一模型的基础思想仍是PCA,与Eigenface有着天然联系。
学习EigenFace应该是研究生时代的事儿了,旧编重拾、开卷有益,并写了Matlab代码附录于后。网上许多实例代码只实现了辨识,略去了一个重要环节:通过分解-重构,将一幅输入人脸照片表示为EigenFace基底的组合,这对于表情辨识及3D人脸模型分析都是很有用的(Online?Modeling?For?Realtime?Facial?Animation中就利用了此思想),附录的Matlab代码做了这一步。
?
??????????????????????????????????????????训练集合包含20幅图片
?????????????????????????????????????????????????生成20-1=19个特征脸
?????????????? ??最近欧式距离法得出的前三位匹配
?
???????????????????????? ?利用特征脸空间进行人脸重构/~sis26/Eigenface?Tutorial.htm中给出了EigenFace算法Matlab?代码,含有重构过程与比较,但其代码中有一个错误,训练集合照片未减去平均脸,就计算协方差矩阵了
具体算法文献教材上都有,捡要点写几句:
(1)?将训练集合中的每幅图像拉伸为列向量,并减去所有图像的均值(称之为平均脸),形成N*M矩阵A,其中N为单幅图像像素数,M为图像数目(训练集合容量)。
(2)?求协方差矩阵AA的特征向量,作为正交基底张成人脸空间,好是好但运算量过大,转而求替代矩阵(surrogate)AA的特征向量,减少计算量
(3)?矩阵AA的秩等于M-1,这是由于减去平均脸所致,故有M-1个非零特征值(正),去除属于0的特征向量,将M-1个属于非零特征值得特征向量(记住须作左乘A的修正)作为EigenFace基底(特征脸),张成人脸空间。
(4)?EigenFace基底由M-1个相互正交的向量构成,它们是协方差矩阵AA的前M-1个最显著的特征向量方向,能量主要集中在这些向量方向上,但要记住虽正交但不完备,故存在重构误差。
(5)?为了用EigenFace基底对人脸照片进行正确的分解-重构,需要对所得的基底向量进行规一化修正,因为AA的特征向量左乘A之后,虽成为AA的特征向量,但模不为1,需除以自身的模,修正为标准正交向量集合,才能进行投影分解-重构。
(6)?训练集合及测试集合中的人脸照片都能利用EigenFace基底较好地实现分解-重构,但训练集合之外的人脸,重构误差变大
(7)?EigenFace缺点:1拍摄时光照环境对识别效果(EigenFace基底)影响大
??????????????????????????????????2训练集合扩容时,需重构EigenFace基底
(8)?为了有效显示EigenFace基底图像(特征脸)需要用imagesc函数
Eigenface算法识别人脸的步骤:
This section gives step-by-step instructions along with photos and formulas on how to recognize faces and implemented into Matlab. All the necessary files to complete this tutorial would be provided.
Steps
The first step is to obtain a set S with M face images. In our example M = 25 as shown at the beginning of the tutorial. Each image is transformed into a vector of size N and placed into t
文档评论(0)