**PCA主元分析法小结(人脸识别概述性)
来源:互联网 发布:tensorflow 有趣应用 编辑:程序博客网 时间:2024/05/16 05:51
下面具体来说PCA算法在人脸识别中的算法流程,前提:有一个训练图集,里面放着同一个人的脸(对齐过的),并且每张图长宽的像素点都相同(比如160*120);有一个测试图集,里面放着待测图像,待测图像的长宽像素点与训练图集一样。
PCA的算法流程是:
一、训练流程
S1:构筑训练图像矩阵:将每一张人脸图张开成一维行向量(也可以是列向量,但以下的计算都是用行向量),训练集中所有图像组成一个训练图像矩阵,每一个行向量代表一张图。
S2:计算平均脸、协方差矩阵:平均脸就是将所有的行向量求平均得到的一个平均的行向量,将每张脸向量按下面公式计算得到协方差矩阵。
S3:计算协方差矩阵的特征值与特征向量,取前r大的特征值对应的特征向量构成r维特征空间,r<min(训练图集中图张数,每张图的像素点数)。为了使得r维特征空间更加具有代表性且更加的小,我们应该考虑特征值的变化情况,取更大的特征值,比如下面这种情况,我们取r=10即可以。
S4:按照下面公式将训练图集矩阵的每个行向量向特征空间投影,为每一张图得到投影后的r维向量,这就是降维后的每张图的特征向量了。
二、识别流程:
S1:保留训练流程中的平均脸与特征空间。
S2:构筑测试图像矩阵,与训练流程中的一样。
S3:将测试图像矩阵中的每一行按照训练流程s4中的公式向特征空间投影,得到每张图像矩阵的特征向量。
S4:根据投影后的特征向量与特征空间重建图像,计算原图像与重建后的图像间的距离。
S5:判断是否是人脸:设定阈值,如果原图像与重建后的图像间的距离小于阈值,则判断为人脸,继续s6,否则判否,识别结束。
S6:识别是否是特定人:设定阈值,并计算测试图像特征向量与所有训练图像特征向量间的欧氏距离,取最小的距离,如果最小距离小于阈值,则识别接受,否者就拒绝接受。
正如题目所示,这篇文章只是概述性的小结,说的很简单,以功能与算法流程为主,很多原理与细节没有展开,要想深入了解的,可以参考下面的文献:
关于PCA算法原理理解的:
《Eigenfaces for Recognition》——本文的公式都来自本论文,并没有仔细标明,具体参考这篇论文。
《基于PCA针对表情变化的人脸识别技术研究》
http://leen2010.blogbus.com/logs/124631640.html
用OPENCV编程实现PCA算法的:
http://apps.hi.baidu.com/share/detail/34585074
附:
OPENCV中的PCA使用(转)
对于PCA,一直都是有个概念,没有实际使用过,今天终于实际使用了一把,发现PCA还是挺神奇的。
在OPENCV中使用PCA非常简单,只要几条语句就可以了。
1、初始化数据
//每一行表示一个样本
CvMat* pData = cvCreateMat( 总的样本数, 每个样本的维数, CV_32FC1 );
CvMat* pMean = cvCreateMat(1, 样本的维数, CV_32FC1);
//pEigVals中的每个数表示一个特征值
CvMat* pEigVals = cvCreateMat(1, min(总的样本数,样本的维数), CV_32FC1);
//每一行表示一个特征向量
CvMat* pEigVecs = cvCreateMat( min(总的样本数,样本的维数), 样本的维数, CV_32FC1);
2、PCA处理,计算出平均向量pMean,特征值pEigVals和特征向量pEigVecs
cvCalcPCA( pData, pMean, pEigVals, pEigVecs, CV_PCA_DATA_AS_ROW );
3、选出前P个特征向量(主成份),然后投影,结果保存在pResult中,pResult中包含了P个系数
CvMat* pResult = cvCreateMat( 总的样本数, PCA变换后的样本维数(即主成份的数目), CV_32FC1 );
cvProjectPCA( pData, pMean, pEigVecs, pResult );
4、 重构,结果保存在pRecon中
CvMat* pRecon = cvCreateMat( 总的样本数, 每个样本的维数, CV_32FC1 );
cvBackProjectPCA( pResult, pMean, pEigVecs, pRecon );
5、重构误差的计算
计算pRecon和pData的"差"就可以了.
使用时如果是想用PCA判断“是非”问题,则可以先用正样本计算主成分,判断时,对需要判断得数据进行投影,然后重构,计算重构出的数据与原数据的差异,如果差异在给定范围内,可以认为“是”。
如果相用PCA进行分类,例如对数字进行分类,则先用所有数据(0-9的所有样本)计算主成分,然后对每一类数据进行投影,计算投影的系数,可简单得求平均。即对每一类求出平均系数。分类时,将需要分类得数据进行投影,得到系数,与先前计算出得每一类得平均系数进行比较,可判为最接近得一类。当然这只是最简单得使用方法
- PCA主元分析法人脸识别概述性小结
- PCA主元分析法人脸识别概述性小结
- PCA主元分析法人脸识别概述性小结
- **PCA主元分析法小结(人脸识别概述性)
- PCA主成分分析人脸识别
- 主元分析法PCA学习笔记
- PCA(主分量分析)在人脸识别中的应用
- PCA(主分量分析)在人脸识别中的应用
- 基于PCA(主成分分析)的人脸识别
- 基于PCA(主成分分析)的人脸识别
- PCA算法人脸识别小结--原理到实现
- PCA人脸识别
- PCA、人脸识别
- PCA人脸识别
- PCA人脸识别
- PCA人脸识别
- PCA人脸识别
- 主元分析(PCA)原理
- 青涩的思绪 泛起粉色的涟漪
- 关于video content-based copy detection近些年的研究进展
- peercast
- setsockopt 设置socket 详细用法
- 风柔月清,吾爱在浅秋
- **PCA主元分析法小结(人脸识别概述性)
- IPHONE 和 KVC/KVO 监听对象属性变化(例如:获取textView 的text的变化)
- 路上看水
- MySQL中文乱码解决方法(转自cnblog)
- lvs nat
- 小宝,小宝,我爱你
- LVS DR
- WinCE中加载位图的方法
- android滑屏两三事