PCA人脸识别理论基础(附源码)

PCA人脸识别理论基础(附源码)
PCA人脸识别理论基础(附源码)

1 2 n 1 2 n

1 PCA 与人脸识别及其理论基础

1.1 问题描述[1]

对于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个矢量,如一 幅 N*N 象素的图像可以视为长度为 N 2 的矢量,这样就认为这幅图像是位于 N 2 维空间中的 一个点,这种图像的矢量表示就是原始的图像空间,但是这个空间仅是可以表示或者检测图 像的许多个空间中的一个。不管子空间的具体形式如何,这种方法用于图像识别的基本思想 都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像 的这种投影间的某种度量来确定图像间的相似度,最常见的就是各种距离度量。

1.1.1 K-L 变换

[1]

PCA 方法是由 Turk 和 Pentlad 提出来的,它的基础就是 Karhunen-Loeve 变换(简称 KL 变换),是一种常用的正交变换。下面我们首先对 K-L 变换作一个简单介绍:

假设 X 为 n 维的随机变量,X 可以用 n 个基向量的加权和来表示:

n

X = ∑αi φi

i =1 式中: αi 是加权系数, φi 是基向量,此式还可以用矩阵的形式表示:

X = (φ ,φ ,",φ )(α ,α ,",α )T

= Φα

取基向量为正交向量,即

T

?1

i = j T

则系数向量为:

Φ Φ j =

? ?

i ≠ j

?Φ Φ j = I α = ΦT X

综上所述,K-L 展开式的系数可用下列步骤求出:

步骤一 求随即向量 X 的自相关矩阵 R = E ?? X T

X ?? ,由于没有类别信息的样本集的 μ 均值向

量,常常没有意义,所以也可以把数据的协方差矩阵 ∑ K_L 坐标系的产生矩阵,这里 μ 是总体均值向量。

= E ??( x ? μ )( x ? μ )T ?? 作为

步骤二 求出自相关矩阵或协方差矩阵 R 的本征值 λi 和本征向量 φi , Φ = (φ1 ,φi ,",φn )

步骤三 展开式系数即为 α = ΦT X

K_L 变换的实质是建立了一个新的坐标系,将一个物体主轴沿特征矢量对齐的旋转 变换,这个变换解除了原有数据向量的各个分量之间相关性,从而有可能去掉那些带 有较少信息的坐标系以达到降低特征空间维数的目的。

T T ? i x i x

A N *r A

1.1.2 利用 PCA 进行人脸识别

完整的 PCA 人脸识别的应用包括几个步骤:人脸图像预处理;读入人脸库,训练形成 特征子空间;把训练图像和测试图像投影到上一步骤中得到的子空间上;选择一定 的距离函数进行识别。下面详细描述整个过程(源码见’faceRe c.m ’)。

1. 读入人脸库 归一化人脸库后,将库中的每人选择一定数量的图像构成训练集,其余构成

测试集。设

归一化后的图像是 n*m,按列相连就构成 N=n*m 维矢量,可视为 N 维空间中的一个点,可 以通过 K-L 变换用一个低维子空间描述这个图像。 2. 计算 K- L 变换的生成矩阵 所有训练样本的协方差

矩阵为(以下三个等价):

? ?1. ?

C A = (

M

∑ k =1

x k i x k ) / M ? m x i m x ?2. C = ( A i A T ) / M (1)

? ? M

? ?3. C ?? A = ?∑ ? i =1 ( x ? m )( x ? m )T ? ? A = {φ1 ,φ2 , ...,φM } , φi = x i ? m x , m x 是平均人脸, M 训练人脸数,协方差矩阵 C A 是

一个N*N 的矩阵, N 是 x i 的维数。

为了方便计算特征值和特征向量,一般选用第2个公式。根据K - L 变换原理,我们所求 的新坐标系即由矩阵 A i A T 的非零特征值所对应的特征向量组成。直接求N*N 大小矩阵 C 的 特征值和正交归一特征向量是很困难的, 根据奇异值分解原理(见段落1.2.5和1.2.6),可以 通过求解 A T i A 的特征值和特征向量来获得 A T i A 的特征值和特征向量,。

在计算得到 C A 的所有非零特征值 [λ0 , λ 1 ,", λ

r ?1

](从大到小排序,1 ≤ r < M )及其对

应的 单位正交特征向量 [u 0 , u 1 ,", u r ?1 ] 后,可以得到特征空间 U = [u 0 , u 1 ,", u r ?1 ] ∈?

,从而可以

计算一张图片X 在特征空间上的投影系数(也可以理解为X 在空间U 中的坐标):

3. 识别

Y = U T * X ∈ ?r *1 (2) 利用公式(2),首先把所有训练图片进行投影,然后对于测试图片也进行同样的投影, 采用判别函数对投影系数进行识别。

1.2 PCA 的理论基础

1.2.1 投影[2]

设 d 维样本 x 1 , x 2 , " , x n ,以及一个 d 维基 w ,那么标量:

i i

i i T T

y = w T

x

是相当于 x i 在基上的坐标值。如果 w = 1 , y i 就是把 x i 向方向为 w 的直线进行投影的结果,

可以从图 1 看到。推广之,如果有一组基(m 个)组成的空间 W = [w 1 , w 2 ,", w m ] ,那么可

T

m *1

以得到 x i 在空间 W 上的坐标为: Y = W x ∈ ? 。

证明: w T x = 又∵ w ? x ?

cos θ

x ? cos θ = y , w =1

? w T x = y

图 1 投影图

进一步,表达式 w = m + a e 表示 w 是一条通过点 m ,方向为 e 的直线。

1.2.2 PCA 的作用及其统计特性[3]

采用 PCA 对原始数据的处理,通常有三个方面的作用—降维、相关性去除、概率估计。下

面分别进行介绍:

? 去除原始数据相关性

从统计学上 讲, E {[ X ? E ( X )][Y ? E (Y )]} 称为随 机变量 X 与 Y 协方差,记 为

Cov ( X , Y ) 。令 ρ XY ,称为随机变量 X 与 Y 的相关系数。 ρ XY

= 1 则 X 与 Y 是相关的, ρ XY = 0 ,则 X 与 Y 是不相关的。

AA T

命题 1 对于矩阵 A 来说,如果 是一个对角阵,那么 A 中的向量是非相关的。

由 PCA 处理的人脸库数据的非相关性可以从两点进行说明。 (1) 基底的非相关性

特征空间基 U = [u 0 , u 1 ,", u r ?1 ] 是非相关的,即 U U = I 。

(2) 投影系数的非相关性

由 SVD 可知 A = {φ1 ,φ2 ,...,φM } = U

ΛV

, 其中 φi = x i ? m x , m x 是平均人脸。根

据公式(2)可以把 A 映射到特征空间上,得到: 关的,可由下面得到证明:

B = U T * A ,其中 B 是非相

Y 的协方差矩阵为: C

=

1 BB T =

1 U T AA T U =

1 Λ2

(3)

B M M M

由命题 1 可知,B 是非相关的。

? 统计参数(均值及方差)

T 均值即 m x --平均人脸。

命题 2 随机变量方差越大,包含的信息越多,当一个变量方差为 0 时,该变量为常数,不 含任何信息。

用 PCA 计算主分量,就是寻找一组向量,使得原始数据 A = {φ1 ,φ2 ,...,φM } 在这组 向量上的投影值的方差尽可能大。最大方差对应的向量就是第一主成份,以后递推就是

第二主成份,第三主成份……。

用 PCA 计算主分量就是求原始数据 A = {φ1 ,φ2 ,...,φM }(其中 φi = x i ? m x )协方

矩阵的特征向量 U = [u 0 , u 1 ,", u r ?1 ] ,由公式(3)可知,P = u i A = ( p 1 , p 2 ,", p m ) 是 A 在 u i

上的投影值,其中 P 的方差就是 u i 对应的特征值 λi ,可以理解为: 命题 3 所有原始数据在主分量 u i 上的投影值方差为 λi 。

? 降维

如果在原始空间表示一幅 n*m 大小的图片 X ,那么需要一个 N =n*m 维矢量,但是 当用公式(2)把它映射到特征空间后,只需要一个 r*1 维的向量就可。

另外,由命题 2 可知,可以根据方差的大小来判断特征向量的重要性。由 ORL 图片 库的 200 个人脸计算得到的特征值呈图 2 分布,可知特征向量重要性呈指数下降,据此 可以只选用前面几个重要的特征向量来构建特征空间。

通过计算,前 71 个特征值占了 90.17%,因此 r 可以取 71 而非 200,从而达到进一 步降维的作用。

图 2 特征值的分布

1.2.3 特征脸

U = [u 0 , u 1 ,", u r ?1 ] 中的每一个单位向量都构成一个特征脸,如图 3 所示。由这些特征脸

所张成的空间称为特征脸子空间,需要注意对于正交基的选择的不同考虑,对应较大特 征值的特征向量(正交基)也称主分量,用于表示人脸的大体形状,而对应于较小特征值 的特征向量则用于描述人脸的具体细节,或者从频域来看,

主分量表 示了人脸 的低频部 分,而此 分量则描 述了人脸 的高频部 分( 源 码 见’Eig enFace .m’)。

X

T

T

1 2 10 50 70 average

图3 特征脸,分别是第1,2,10,50,70 分量,最后一张是平均脸。

1.2.4 图片重建

要进行图片X 的重建,首先对X 投影到特征空间上,得到系数Y =U T (X ?m),然后选用一

部分系数与特征向量进行原始图片的重建:X ' = m

X

+U(1:t)*Y(1:t),其中1:t 表示取前t 个

元素。(见’recon struct.m’)

在图4 中,其中前两张图片来自训练样本,第3 张来自测试样本,可以看到对于训练样本,PCA 系数可以对图片实现很好重建,而对于训练样本以外的图片重建效果很差。

Original 15 50 100 150 199

图4 人脸图像重建。第列张图片是输入原始图,其它列图片是重建结果,数字表示t 的数目。

1.2.5 奇异值分解(SVD)[1]

设A 是秩为r 的m*n(m>>n)维矩阵,则存在两个正交矩阵和一个对角阵:

A = [a

1

,a

2

,",a

r

] =UΛV

其中U= [u0 ,u1 ,",u r ?1 ],V= [v0 ,v1 ,",v r ?1 ],Λ= diag(λ0 ,λ 1 ,",λr ?1 ) ,且

UU

= I ,V V T= I ,

i λ

i i X i i i

i i i T

2

T m *m T n *n T T

λi 呈降序排列。其中 λi

为 AA ∈? 和 A A ∈ ? 的非零特征值,u i 和 v i 分别是 AA 和 A A

对应于 λ 2 的特征向量。可得一个推论:

U = AV Λ

?1

可以计算 A T A 的特征值 λ 2 及相应的正交归一特征向量 v 后,可由推论知 AA T 的正交归一特

i i

征向量

u = 1

i

Av i

注意,协方差矩阵 C A = ( A i

A T ) / M 的特征值为: λ 2 / M 。

1.2.6 利用小矩阵计算大矩阵特征向量

高阶矩阵的特征向量可以转化为求低阶矩阵的特征向量:

设:A 是秩为 r 的 m*n (m>>n )维矩阵, C X = AA T ∈?m *m ,是一个矩阵,现在要求 C 的

特征值及特 征向量,可 通过先求小 矩阵 A T A ∈ ?n *n 的特征 向量 [v , v ,", v ] 和特征 值

0 1 r ?1

[λ0 , λ

1

,", λ

r ?1

] ,两者之间有以下关系:

A T A ? v = λ ? v

?左?乘?A → AA T ( A ? v ) = λ ( A ? v )

显然, C = AA T 的特征向量是 A ? v (注意没有单位化), [λ , λ ,", λ ] 亦为其特征值。

X i 0 1 r ?1

结论:1.2.5 与 1.2.6 的方法计算协方差矩阵的特征向量,特征值的结果是一致的,只是要

注意 1.2.5 中的特征值要除以 M ,1.2.6 中的特征向量要单位化。

1.2.7 图片归一化

图片标准化通常是一个整体概念,要求把图片归一到均值为 0,方差为 1 下情况下。 这个概念类似于一般正态分布向标准正态分布的转化:

命题 4 若 X ~ N (μ,σ 2 ) ,则 Z =

X ? μ

~ N (0,1)

σ

所以要对一组图片中的一张 X i 进行归一化(标准化),只需要减去均值,除以方差就可以了。 M

均值 m X = ∑ X i

i M ,方差为 D = E ??( X ? m X )( X ? m X ) ??

1.3 参考文献

[1] 邓楠, 基于主成份分析的人脸识别, 西北大学硕士学位论文,2006.06

[2] R.O. Duda, P.E. Hart, and D.G. Stork, Pattern Classification, seconded. John Wiley & Sons,

2001.

[3] Sami Romdhani .Face Image Analysis using a Multiple Feature Fitting Strategy. PhD Thesis,

University of Basel, Switzerland, January 2005.

[4] Sami Romdhani .FACE RECOGNITION USING PRINCIPAL COMPONENTS ANAL YSIS.

1.4 附录—matlab 源码

1.4.1 人脸识别

% FaceRec.m

% PCA 人脸识别修订版,识别率88%

% calc xmean,sigma and its eigen decomposition

allsamples=[];%所有训练图像

for i=1:40

for j=1:5

a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg'));

% imshow(a);

b=a(1:112*92); % b 是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右

b=double(b);

allsamples=[allsamples; b]; % allsamples 是一个M * N 矩阵,allsamples 中每一行数据代表一张图片,其中M=200

end

end

samplemean=mean(allsamples); % 平均图片,1 ×N

for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; % xmean 是一个M ×N 矩阵,xmean 每一行保存的数据是“每个图片数据-平均图片”

end;

% 获取特征值及特征向量

sigma=xmean*xmean'; % M * M 阶矩阵

[v d]=eig(sigma);

d1=diag(d);

% 按特征值大小以降序排列

dsort = flipud(d1);

vsort = fliplr(v);

基于opencv的人脸识别程序-代码详解

#include "cv.h" #include "highgui.h" #include #ifdef _EiC #define WIN32 #endif static CvMemStorage* storage = 0; static CvHaarClassifierCascade* cascade = 0; void detect_and_draw( IplImage* image ); const char* cascade_name = "haarcascade_frontalface_alt.xml";//人脸检测分类器 int main( int argc, char** argv ) { CvCapture* capture = 0; IplImage *frame, *frame_copy = 0; int optlen = strlen("--cascade="); const char* input_name; if( argc > 1 && strncmp( argv[1], "--cascade=", optlen ) == 0 ) { cascade_name = argv[1] + optlen; input_name = argc > 2 ? argv[2] : 0; } else { cascade_name = "E:\毕业设计\智能机器人动态人脸识别系统\陈建州程序.xml";//分类器路径 input_name = argc > 1 ? argv[1] : 0; } cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); if( !cascade )//如果没有找到分类器,输出以下 { fprintf( stderr, "ERROR: Could not load classifier cascade\n" ); fprintf( stderr, "Usage: facedetect --cascade=\"\" [filename|camera_index]\n" ); return -1;

基于PCA算法的人脸识别毕业设计论文

太原科技大学 毕业设计(论文) 设计(论文)题目:基于PCA算法的人脸识别

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期: Ⅰ

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日 Ⅰ

[作业]OPENCV人脸识别

摘要 人脸检测主要是基于计算机识别的一项数字化技术,用以准确获取人的脸部大小和位置信息,在进行人脸检测时,突出主要的脸部特征,淡化次要的环境、衣着等因素。对于某些情况下,人脸检测也可以计算出人脸,如眼睛,鼻子和嘴等精确的微妙特征。由于在安全检测系统,医学,档案管理,视频会议和人机交互等领域人脸检测系统都有光明的应用前景,因此人脸检测逐渐成为了两个跨学科领域研究的热门话题:人工智能和当前模式识别。本文基于OpenCV视觉库具体的设计并开发了对数字图像中的人脸检测的程序,所采用的人脸检测的原理主要是分类器训练模式(Adaboost算法)提取Haar特征的方法。它在整个软件极其重要的作用,图像中人脸的准确定位和识别都受图像处理好坏的直接影响。本次所设计的软件在图像处理部分所采用的方法是基于Adaboost算法进行Haar特征的提取,在此之上加以通过积分图方法来获取完整的级联分类器结构,进行人脸检测时,OpenCV级联分类器通过Adaboost人脸检测算法进行训练,此后采用不同情况下的实验样本完成精确定位以及检测试验。经过代码的设计和调试,在最后的测试中针对数字图像进行的人脸检测和定位达到了较好的效果,提高了定位和识别的正确率。 关键词:人脸检测,AdaBoost,分类器,OpenCV

Abstract Face detection is mainly based on computer recognition of a digital technology,face size and location information to accurately obtain the person,during face detection, highlight the main facial features,dilute the secondary environment,clothing,and other factors.For some cases,face detection can also calculate a person's face,such as eyes, nose and mouth,and other subtle features accurate.Because in the field of human security detection systems,medical records management,video conferencing,and human-computer interaction face detection system has bright prospects,and therefore face detection is becoming a two interdisciplinary research fields hot topic:artificial intelligence and The current pattern recognition.This article is based.penCV vision library designed and developed specifically for digital image face detection process,the principles used face detection methods are mainly classifier training mode(Adaboost algorithm)to extract Haar features.It is in the vital role of the software,the image of the human face accurately locate and identify all that is good or bad a direct impact on the image processing.This software is designed image processing method used in part based Haar Adaboost algorithm to extract features,on top of this to be to get the full cascade classifier structure by integrating the diagram method for face detection,OpenCV cascade classifier is trained by Adaboost face detection algorithm,then the use of the experimental sample under different circumstances for accurate positioning and testing.Through design and debugging code,face detection and location in the final test for digital images to achieve better results and improve the accuracy of positioning and recognition. Keywords:face detection;AdaBoost;classifier;openCV

基于PCA的人脸识别系统设计

1 HUNAN UNIVERSITY 毕业设计(论文) 设计论文题目基于PCA的人脸 识别系统 学生姓名李涛 学生学号20080810410 专业班级08级计科四班 学院名称信息科学与工程学院 指导老师潘华伟 学院院长章兢 20012 年 5 月18 日

摘要 随着计算机视觉技术的发展,以及社会的各个领域的需要,根据人固有的生物特征对人进行身份验证的课题吸引了一批研究人员,比较常见的有语音识别,指纹识别,人脸识别等技术。其中人脸识别因为识别率高、主动性强、使用方便等因素,在身份验证的各类方法中有独特的优势及相关的应用,成为了人体特征识别中的比较热门的研究课题。 本文首先阐述了人脸识别研究的历史,现状以及发展趋势,并说明了人脸识别的优势和难点。然后详细地说明人脸识别的两个部分:人脸检测和人脸识别。在人脸检测部分,本文主要介绍了基于haar分类器的检测方法,并详细说明了haar分类器的训练过程,讲述了分类器检测人脸的原理。在人脸识别部分,首先获取人的个人信息的,对人脸图像的采集并进行灰度化、归一化等预处理,然后采用PCA(主成分分析法)对采集到的图像进行特征提取,并存储相关的特征信息,最后对待识别的图像进行特征提取和分析,与训练的人脸图像数据计算欧式距离,最终识别出人的身份。在本文的最后,对实现的系统各项功能进行实验,对影响识别率的维数、采集图像数因素进行实验分析,并提出了主成分分析法人脸识别的优点和缺点。最后总结毕业设计中的不足,自己的心得体会,并对未来学习进行展望。 关键词:人脸检测,haar分类器,PCA,人脸识别

Abstract With the development of computer vision technology, and social needs in many areas, the subject of authentication according to the inherent biological characteristics attracted a group of researchers ,Voice recognition, fingerprint recognition, face recognition technology are common。Face recognition with the recognition rate, motivated, easy to use and other factors,has unique advantages in all kinds of authentication methods and related applications,has become a popular research topic in the human feature recognition。 This paper first describes the history, current situation and development trend of face recognition research, and describes the advantages and difficulties of face recognition。And then detail the recognition of two parts: face detection and face recognition。In the face detection part, the paper mainly describes the detection method based on haar classifier, and details of haar classifier training process, about the principle of the classification of the detected face。In face recognition part, it first obtains personal information the acquisition of face images and graying, owned by a pretreatment。And then using PCA (Principal Component Analysis) collected image feature extraction, and storage characteristics of information,int the last ,identifiable image feature extraction and analysis, and training of the face image data to calculate the Euclidean distance, and ultimately identify the identity of the person。In the last experiment, the dimension of the recognition rate, number of images collected factors experimental analysis, and the advantages and disadvantages of the principal component analysis for face recognition system implemented various functions. The final summary of graduate design deficiencies, and their own feelings and experiences and future learning prospects。 Keywords: face detection, Haar classifier, PCA, face recognition

基于matlab的人脸识别算法(PCA)

3.基于matlab的人脸识别算法 3.1 问题描述 对于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个矢量,如一幅 N*N 象素的图像可以视为长度为N2 的矢量,这样就认为这幅图像是位于N2 维空间中的一个点,这种图像的矢量表示就是原始的图像空间,但是这个空间仅是可以表示或者检测图像的许多个空间中的一个。不管子空间的具体形式如何,这种方法用于图像识别的基本思想都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像的这种投影间的某种度量来确定图像间的相似度,最常见的就是各种距离度量。因此,本次试题采用PCA算法并利用GUI实现。 对同一个体进行多项观察时,必定涉及多个随机变量X1,X2,…,Xp,它们都是的相关性, 一时难以综合。这时就需要借助主成分分析来概括诸多信息的主要方面。我们希望有一个或几个较好的综合指标来概括信息,而且希望综合指标互相独立地各代表某一方面的性质。 任何一个度量指标的好坏除了可靠、真实之外,还必须能充分反映个体间的变异。如果有一项指标,不同个体的取值都大同小异,那么该指标不能用来区分不同的个体。由这一点来看,一项指标在个体间的变异越大越好。因此我们把“变异大”作为“好”的标准来寻求综合指标。3.1.1 主成分的一般定义 设有随机变量X1,X2,…,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 i j (2) 组合系数(ai1,ai2,…,aip)构成的向量为单位向量, (3) 各主成分的方差是依次递减的,即 Var(C1)≥Var(C2)≥…≥Var(Cp)

基于OpenCV的视频人脸识别系统的设计与实现

摘要 基于生物特征识别的身份认证方法和系统研究一直以来都是计算机图形学和模式识别领域研究的热点,其中,由于人脸的稳定性和可见性,针对人脸识别的算法研究和系统应用最为广泛,本文针对校园内实验室和宿舍安全管理需求,设计和实现了一套针对监控视频的基于OpenCV的人脸识别原型系统,开发语言选用C++,全文内容包括: (1)构建了基于OpenCV的视频人脸识别的技术框架。针对实验室和宿舍安全管理需要,构建了基于OpenCV的视频人脸识别的技术框架,能够完成基于视频的实时人脸识别和身份认定; (2)设计了基于OpenCV的视频人脸快速检测算法。人脸检测是人脸识别的前提,本文采用基于OpenCV的快速人脸检测算法实现视频图像中人脸的快速定位和提取; (3)设计了基于AdaBoost算法的视频人脸识别方法。应用AdaBoost算法实现了针对视频流的快速人脸定位和身份识别,能够实现实时身份认定。 系统基于.NET平台设计,使用C++语言进行实现,完成了基于视频的实时人脸身份认定。 关键词:人脸检测; OpenCV;人脸识别; C++; 1

Abstract Based on the research of identity authentication method and system of biometric recognition has been a hot research field of computer graphics, pattern recognition and the stability and visibility, the face, the algorithm research and system applications of face recognition is the most widely, according to the laboratory and dormitory safety management needs of the campus, designed and implemented. A face recognition system based on OpenCV in surveillance video, development language is C++, the main content of this thesis includes: (1)Constructed the technical framework for video based face recognition based on OpenCV. According to the laboratory and the dormitory safety management needs, establishes a framework for video based face recognition based on OpenCV, which can complete real-time face recognition and identity based on video identification; (2)Design of a fast face detection algorithm in video based on OpenCV. Face detection is the precondition of face recognition, this paper uses OpenCV fast face detection algorithm to locate face in video image and extraction based on;The design use application of OpenCV to provide strong support, based https://www.360docs.net/doc/d39917263.html, platform design. (3)Design of video based face recognition method based on AdaBoost algorithm. Application of AdaBoost algorithm for fast face location and recognition of video stream, which can realize real-time identification. System based https://www.360docs.net/doc/d39917263.html, platform design, implementation is carried out using C++ language, completed the real-time face identity recognition based on video Key word:Face detection;OpenCV;Face recognition;C++;

基于PCA的人脸识别算法实现毕业论文

基于PCA的人脸识别算法实现毕业论文 目录 前言 (1) 第一章人脸识别系统概述 (2) 第一节人脸识别的研究概况 (2) 第二节人脸识别的发展趋势 (3) 一、多数据融合与方法综合 (4) 二、动态跟踪人脸识别系统 (4) 三、基于小波神经网络的人脸识别 (4) 四、三维人脸识别 (4) 五、适应各种复杂背景的人脸分割技术 (4) 六、全自动人脸识别技术 (4) 第三节人脸识别技术的主要难点 (4) 一、复杂条件下人脸的检测和关键点定位 (5) 二、光照问题 (5) 三、资态问题 (5) 四、表情问题 (5) 五、遮挡问题 (5) 第四节人脸识别流程 (5) 一、人脸图像采集 (6) 二、预处理 (6) 三、特征提取 (6) 第五节本章小结 (7) 第二章人脸图像的获取 (9) 第一节人脸图像获取 (9) 第二节人脸分割 (9) 第三节人脸数据库 (10) 第四节本章小结 (11) 第三章人脸图像的预处理 (12)

第一节人脸图像格式 (12) 一、JPEG格式 (12) 二、JPEG2000格式 (12) 三、BMP格式 (13) 四、GIF格式 (13) 五、PNG格式 (13) 第二节人脸图像常用预处理方法 (14) 一、灰度变化 (14) 二、二值化 (15) 三、直方图均衡 (15) 四、图像滤波 (15) 五、图像锐化 (17) 六、图像归一化 (18) 第三节本章小结 (19) 第四章人脸识别 (20) 第一节主成分分析基本理论 (20) 一、什么是主成分分析? (20) 二、例子 (20) 三、基变换 (21) 四、方差 (23) 五、PCA求解:特征根分解 (27) 六、PCA的假设 (28) 七、总结: (28) 八、在计算机视觉领域的应用 (30) 第二节基于PCA人脸识别算法的实现 (31) 一、创建数据库 (32) 二、计算特征脸 (32) 三、人脸识别 (34) 第三节本章小结 (36) 结论 (37) 致谢 (38) 参考文献 (39) 附录 (40) 一、英文原文 (40) 二、英文翻译 (53)

基于PCA的人脸识别

基于PCA的人脸识别 哲盼 (华北电力大学自动化系, 071003) 摘要:人脸识别技术,作为目前模式识别领域研究的热点也是难点之一,其最早提出可以追溯到1888年[1]。然而,到目前为止,由于人脸识别问题自身的复杂性,使得虽然有众多科学研究人员潜心研究多年,也做出了许多的成果,但离彻底解决并达到实用,仍旧有很多关键性的问题需要解决。本文结合研究生阶段参与教研室的科研项目,对人脸识别做了一定的研究。论文首先介绍了人脸识别的背景、研究围以及方法,对人脸识别领域的一些理论方法作了总体的介绍。本文中所采用的人脸识别方法是比较经典的PCA(Principle Component Analysis,主成分分析)[2-6]。 关键词:人脸识别,主成分分析,PCA,特征脸 PCA-based face recognition CHEN Zhe-pan (Department of Automation North China Electric Power University, Baoding 071003 China) Abstract:Techniques for face recognition were proposed by Francis Galton as early as 1888[1]In recent years considerable progress has been made in the area of face recognition:Through the development of techniques like Eigenfaces computers can now outperform humans in many face recognition tasks,particularly those in which large databases of faces must be searched.Whilst these methods performs extremely well under constrained conditions,the problem of face recognition under gross variations remains largely unsolved.This thesis details the PCA(Principle Component Analysis)algorithm and the development of a real-time face recognition system aimed to operate in constrained environments Keywords:face recognition,principle component analysis,PCA, Eigenfaces 0 引言 随着社会的不断发展进步以及各方面对快速有效的身份识别技术的迫切需求,生物特征识别技术在最近十年中得到了很快的发展。生物特征识别技术是为了验证身份而采用自动测量技术对身体的特征或个人行为特点进行采集处理,并将采集的特征或特点与模板进行比较,从而完成身份验证的一种解决方案。由于生物特征识别技术利用人本身所具有的特征(如指纹、虹膜、人脸等)进行身份认证,因而它比传统的根据人所携带物品(如)和你所记忆的容(如账号和密码)更加安全和可靠。我们有理由相信生物特征识别技术将使人们的生活方式产生重大的变化[7]。 人脸识别是生物特征识别技术的一种,它也是人们生活中最常用的一种身份认证手段,同时它也是当前最热门的模式识别研究课题之一。通过人脸我们可以判定许多信息:性别、种族、大致年龄及表情等。与其它的生物特征识别技术相比,人脸识别在采

基于PCA的人脸识别研究报告

项目名称:基于PCA的人脸识别算法研究

摘要 随着人类社会的进步,以及科技水平的提高,一些传统的身份认证的方法逐渐暴露出各种问题,因此人们需要采用一种更加可靠安全的身份认证方法。毫无疑问人体的生物特征的独一无二的,特别是其不容易丢失及复制的特性很好满足了身份识别的需要。并且随着计算机科学技术和生物医学的发展使得利用生物特征识别成为了可能。因此基于指纹、人脸、视网膜等生物特征的识别方法也越来越多。由于人脸识别的操作快速简单,结果直观,准确可靠,不需要人的配合等优点已成为人们关注的焦点。主成分分析(PCA)法通过提取高维度的人脸图像的主元,使得图像在低维度空间中被处理来降低了图像处理的难度。由于其有效的解决了图像空间维数过高的问题,已经成为人脸识别领域非常重要的理论。此次研究的就是基于PCA的人脸识别算法的实现。 本文按照完整人脸识别流程来分析基于PCA的人脸识别算法实现的性能。首先使用常用的人脸图像的获取方法获取人脸图像。本文为了更好的分析基于PCA人脸识别系统的性能分别选用了Essex人脸数据库和ORL人脸库,并在后期采用了自建的人脸库。接下来是人脸图像预处理方法。由于采用的人脸图像质量较好,而且已经做过相应的预处理,所以本文试验中只使用灰度处理。接着使用PCA提取人脸特征,使用奇异值分解定理计算协方差矩阵的特征值和特征向量以及使用最近邻法分类器欧几里得距离来进行人脸判别分类。在实验中我们发现基于PCA的人脸识别系统的识别率很高,而且具有一定鲁棒性,所以基于PCA的人脸识别算法的实现的研究还是有意义。 【关键词】人脸识别 PCA算法奇异值分解定理欧几里得距离

《基于 OpenCV的人脸识别系统》

西安电子科技大学 人工智能学院暑期夏令营科研实践《基于OpenCV的人脸识别系统》 实践报告 姓名:XXX 学校:XXXX 院系班级:XXXXXXXXX 联系方式:XXXX

目录 1 项目背景 (1) 2 项目目标 (1) 3 项目方案 (2) 3.1 人脸采集 (2) 3.2 人脸训练 (3) 3.3 人脸识别 (4) 4 项目调试 (6) 4.1 采集调试 (6) 4.2 训练调试 (6) 4.3 识别调试 (7) 5实践总结 (8)

如何创造一个安全的、数字现代化的、智能化的宿舍门禁系统有着十分重要的意义。然而,在日常管理中我们经常会碰到这样的问题:外来人员混入宿舍带来的安全隐患、夏天未带校园卡而在公寓楼前苦等、宿舍出入口必须有人盯守、晚归被困公寓楼外等等。 在当今计算机普及与急剧增长的状况下,应该实施一些高效率的系统,不仅省钱,省事,而且便捷,针对以上情况,十分有必要建立一个全面、高效、人性化、智能的高校宿舍出入管理系统。 因此,做一个人脸识别系统就非常地有必要! 2 项目目标 本项目拟完成人脸采集、人脸训练和人脸检测与识别的功能。 人脸采集程序主要完成以下功能: 1. 建立新的文件夹:用户根据提示输入自己姓名的简称,程序会在工程目录下建立该用户的文件夹,用以存放拍摄的照片; 2. 打开摄像头和写入图像:调用笔记本摄像头,当P键按下时,显示当前帧的图像,经处理后,保存图像;当q键按下时,立即退出采集程序 3. 人脸检测与裁剪:在当前帧识别出人脸后将其裁剪至ORL人脸数据 库大小即92x112。 人脸训练程序主要完成以下功能: 1. CSV文件读取:CSV文件对应的图像数据和对应的标签; 2. 样本训练:包括ORL人脸数据库的样本和自己的样本。 人脸训练样本取自ORL人脸数据库,共40个人,每人10张照片。照片在不同时间、不同表情(睁眼闭眼、笑或者不笑)、不同人脸细节(戴眼镜或者不戴眼镜)下采集,所有的图像都在一个黑暗均匀的背景下采集的,正面竖直人脸(有些有轻微旋转)。此外,增加自己的样本,并以相同尺寸拍摄20张左右图像。 人脸识别与检测程序主要完成以下功能: 1. 人脸检测:识别出当前帧是否有人脸; 2. 人脸预测:根据训练结果判断当前帧中人脸是否属于样本集; 3. 姓名显示:若属于样本集则显示姓名缩写,否则,显示“0”。

人脸识别PCA算法matlab实现及详细步骤讲解

% FaceRec.m % PCA 人脸识别修订版,识别率88% % calc xmean,sigma and its eigen decomposition allsamples=[];%所有训练图像 for i=1:40 for j=1:5 a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg')); % imshow(a); b=a(1:112*92); % b 是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上 到下,从左到右 b=double(b); allsamples=[allsamples; b]; % allsamples 是一个M * N 矩阵,allsamples 中每一行数 据代表一张图片,其中M=200 end end samplemean=mean(allsamples); % 平均图片,1 × N for i=1:200 xmean(i,:)=allsamples(i,:)-samplemean; % xmean 是一个M × N 矩阵,xmean 每一行保存的数据是“每个图片数据-平均图片” end; % 获取特征值及特征向量 sigma=xmean*xmean'; % M * M 阶矩阵 [v d]=eig(sigma); d1=diag(d); % 按特征值大小以降序排列 dsort = flipud(d1); vsort = fliplr(v); %以下选择90%的能量 dsum = sum(dsort); dsum_extract = 0; p = 0; while( dsum_extract/dsum < 0.9) p = p + 1; dsum_extract = sum(dsort(1:p)); end i=1; % (训练阶段)计算特征脸形成的坐标系 base = xmean' * vsort(:,1:p) * diag(dsort(1:p).^(-1/2)); % base 是N×p 阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化(使其方差为1) % 详见《基于PCA 的人脸识别算法研究》p31 % xmean' * vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程 %while (i<=p && dsort(i)>0) % base(:,i) = dsort(i)^(-1/2) * xmean' * vsort(:,i); % base 是N×p 阶矩阵,除以dsort(i)^(1/2) 是对人脸图像的标准化(使其方差为1) % 详见《基于PCA 的人脸识别算法研究》p31 % i = i + 1; % xmean' * vsort(:,i)是小矩阵的特征向量向大矩阵特 征向量转换的过程 %end % 以下两行add by gongxun 将训练样本对坐标系上进行投影,得到一个M*p 阶矩阵allcoor allcoor = allsamples * base; % allcoor 里面是每张训练人脸图片在M*p 子空间中的一个点,即在子空间中的组合系数, accu = 0; % 下面的人脸识别过程中就是利用这些组合系数来进行识别

基于OpenCV的人脸识别设计方案

基于OpenCV的人脸识别设计方案 导读: 本文提出了一种在Linux 平台下开发脸识别系统的方案,通过QT 来开发用户界面,调用OpenCV 图像处理库对相机进行采集和处理采集图像, 从而实现了人脸检测、身份识别、简单表情识别的功能。 人脸识别的研究可以追溯到上个世纪六、七十年代,经过几十年的曲折发展 已日趋成熟,构建人脸识别系统需要用到一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等。而人脸识别在基于 内容的检索、数字视频处理、视频检测等方面有着重要的应用价值,可广泛应 用于各类监控场合,因此具有广泛的应用前景。OpenCV 是Intel 公司支持的开 源计算机视觉库。它轻量级而且高效--由一系列 C 函数和少量C++ 类构成, 实现了图像处理和计算机视觉方面的很多通用算法,作为一个基本的计算机视觉、图像处理和模式识别的开源项目,OpenCV 可以直接应用于很多领域,其 中就包括很多可以应用于人脸识别的算法实现,是作为第二次开发的理想工具。 1 系统组成 本文的人脸识别系统在Linux 操作系统下利用QT 库来开发图形界面,以OpenCV 图像处理库为基础,利用库中提供的相关功能函数进行各种处理:通 过相机对图像数据进行采集,人脸检测主要是调用已训练好的Haar 分类器来 对采集的图像进行模式匹配,检测结果利用PCA 算法可进行人脸图像训练与 身份识别,而人脸表情识别则利用了Camshift 跟踪算法和Lucas–Kanade 光流算法。 2 搭建开发环境 采用德国Basler acA640-100gc 相机,PC 机上的操作系统是Fedora 10,并

基于OpenCV的人脸识别算法研究

基于OpenCV的人脸识别算法研究 摘要:通过对基于Adaboost人脸检测算法的研究,利用该算法与计算机视觉类库openCV进行人脸检测系统的设计,实现了对出现在视频或图像中的人脸检测。此外,在VC++6.0环境下实现了对一个简单的人脸检测系统软件的界面开发,该系统对人脸检测的速度较快,检测结果较为准确,可以作为其他人脸检测或人脸模式识别的系统的开发基础。 关键词:人脸检测;openCV;Adaboost;系统 Face detection system design based on openCV Abstract: According to the research of Adaboost algorithm of Face Detection,people made use of the algorithms and computer vision class library openCV for the design of face detection system and achieved the target of detecting faces showing up in videos and pictures. What’s more,in the environment of VC++6.0,it achieved the development of simple Face Detection. The speed of Face Detection is very fast and the test results are accurate. It can be used as the development foundation of other face detection or face pattern recognition system. Key words: face detection;openCV;Adaboost;system 1.引言 随着计算机与数字信号处理技术的高速发展,人脸检测技术在众多领域得到广泛应用。人脸检测技术是指在视频或图像中检测出现人脸位置、大小的过程。作为人脸信息处理中的一项关键技术,人脸检测技术已经超出了其它人脸识别模式的应用范畴,在视频处理、图像处理、身份验证、安全监测等方面有着重要的应用价值。随着计算机语言算法的发展,近年来出现了大量的人脸检测的算法,其中能够较好的解决人脸的检测速度与检测效果的算法,是在2001年由Paul Viola和Michael Jones首先提出的Adaboost算法。openCV是由Intel 提供的一系列包括C与C++的提供计算机视觉和图像处理的开源软件包,它为视频或图像处理搭建了很好的软件平台。本系统就是基于openCV利用Adaboost算法设计的一个简单的人脸检测系统#该系统能够快速&准确的检测到图像或视频中的人脸。 2.AdaBoost人脸检测算法 对人脸检测的研究最初可以追溯到20世纪70年代,早期的研究方向与现在的研究方向与方法不同。目前在实际中应用的人脸检测方法较为普遍的是基于Adaboost算法的方法。 Viola的人脸检测方法是一种基于积分图、级联分类检测器和Adaboost算法的方法,方法框架可以分为以下3大步骤: 1)使用Haar-like特征表示人脸,使用“积分图”实现特征数值的快速计算; 2)使用Adaboost算法挑选出一些最能代表人脸的矩形特征(弱分类器),按照加权投票的方式将弱分类器构造为一个强分类器; 3)将得到的若干强分类器串联组成一个级联结构的层叠分类器,训练得到的强级联结构能有效地提高分类器的检测速度。

基于PCA和SVM的人脸识别方法

基于PCA 和SVM 的人脸识别方法 一、PCA 算法 1 计算特征脸 设人脸图像f(x,y)为二维m n ?灰度图像,用nm 维向量R 表示。人脸图像训练集为 {}p i R i ,,2,1 =,其中p 为训练集中图像总数。这p 幅图像的平均向量为: ∑==p i i R p R 1 1 对训练样本规范化,即每个人脸i R 与平均人脸R 的差值向量: R R A i i -= p i ,,2,1 = 其中列向量i A 表示一个训练样本。 训练图像由协方差矩阵可表示为: T AA C = 其中训练样本p nm ?维矩阵],,,[21p A A A A = 特征脸由协方差矩阵C 的正交特征向量组成。对于nm 维人脸图像,协方差矩阵C 的大小为nm ×nm ,对它求解特征值和特征向量是很困难的,由此引入奇异值分解定理来解决维数过高的问题。 2 奇异值分解定理 奇异值分解定理( Singular Value Decomposition 简称SVD 定理)原理表述如下: 其中A 是一个秩为r 的r n ?维矩阵,则存在两个正交矩阵: r n r R u u u U ?-∈=],,,[110 I U U T = r r r R v v v V ?-∈=],,,[110 I V V T = 以及对角矩阵 r r r R diag ?-∈=Λ],,,[110λλλ 且110-≥≥≥r λλλ 满足下试: T V U A 2 1Λ= 其中: )1,,1,0(-=r i i λ为矩阵T AA 和A A T 的非零特征值, i u 与i v 分别为T AA 和A A T

对应于i λ的特征向量。上述分解称为矩阵A 的奇异值分解(简称SVD ),i λ为A 的奇异值。 由上述定理可以得到一个推论: 1 Λ=AV U 由于协方差矩阵T AA C =,故构造矩阵: p p T R A A L ?∈= ,容易求出其特征值i λ及相应的 正交归一特征向量),,2,1(p i v i =。有上述推论可知,C 的正交归一特征向量i u 为: i i i Av u λ1 = p i ,,2,1 = 这就是图像的特征向量,它是计算p p ?低维矩阵L 的特征值和特征向量而间接求出来的。实际上l )(p l <个特征值足够用于人脸识别。因此仅取L 的前l 个最大特征值的特征向量计算特征脸。 3 特征向量的选取 我们总共得到了p (训练样本数目)个特征向量。虽然p 比nm 小很多。但通常情况下,p 仍然会太大。根据应用的要求,并不是所有的i u 都有很大的保留意义。 考虑到使用L K -变换做为对人脸图像的压缩手段,可以选取最大的前l 个特征向量,使得: αλ λ≥∑∑==p i i l i i 11 在实际中,可以选择90.0=α,或者自定义的其他值。这说明样本集在前l 个轴上的能量占到整个能量的90%以上。 4 基于特征脸的人脸识别 基于特征脸的人脸识别过程由训练阶段和识别阶段两个阶段组成。在训练阶段,每个已知规范化后的人脸i A 映射到由特征脸张成的子空间上,得到l 维向量: i T i A U C = p i ,,2,1 = 其中T l i c c c C ],,,[21 =,],,,[21l u u u U =,p 为人脸数目。 在识别阶段,首先把待识别的图像规范化后的人脸R R A i -'='映射到特征脸空间,得到

相关文档
最新文档