基于PCA算法的人脸识别鲁春安徽工程大学,芜湖,241000E-mail:1114510762@qq.com摘要:本文介绍了人脸识别中常用的PCA(主要成分分析)算法,重点说明了K-L(霍特林)变换和SVD(奇异值分解)定理。采用PCA压缩人脸特征空间维数,首先利用K-L变换求得特征值与特征向量,再利用SVD定理得到特征脸空间。在MATLAB环境下,验证了该方法可以有效的进行识别,对实际应用有一定的参考价值。关键词:人脸识别PCAK-LSVDDesignofFaceRecognitionBasedonPCAAlgorithmluchunAnhuiPolytechnicUniversity,Wuhu241000E-mail:1114510762@qq.comAbstract:ThispaperintroducescommonlyusedinfacerecognitionalgorithmofPCA(PrincipalComponentAnalysis),especiallyontheK-LtransformandtheSVD(SingularValueDecomposition)theorem.UsingPCAcompressionfacefeaturespacedimension.Firstofall,usingK-Ltransformobtainseigenvaluesandfeaturevectors.Then,usingSVDtheoremgainsfacespace.IntheMATLABenvironment,thewaywasprovedtobeeffectiveandhaveagoodapplicationvalue.Keywords:facerecognitionPCAK-LSVD1引言人脸图像识别不仅具有重大的理论价值以及极富挑战性外,还其有许多潜在的应用前景,利用人脸图像来进行身份验证,可以不与目标相接触就取得样本图像,而其它的身份验证手段,如指纹、眼睛虹膜等必须通过与目标接触或相当接近来取得样木,在某些场合,这些识别手段就会有不便之处。就从目前和将来来看,可以预测到人脸图像识别将具有广阔的应用前景。特征脸方法就是将人脸的图像域看作是一组随机向量,可以从训练图像中,通过主元分析得到一组特征脸图像,任意给定的人脸图像都可以近似为这组特征脸图像的线性组合,用组合的系数作为人脸的特征向量。识别过程就是将人脸图像映射到由特征脸组成的子空间上,比较其与已知人脸在特征脸空间中的位置。经典的特征脸方法是采用基于欧氏距离的最近中心分类器,比较常用的是基于欧氏距离的最近邻。2PCA算法PCA主成分分析是人脸识别技术中一种常用的特征抽取方法。它的主要作用是将高维数据进行降维,即首先将用像素描述的二维人脸数据进行向量化,然后将所有的样本向量组成矩阵,再在某个数据空间中找出一组向量,将人脸数据从原来的H维降到L维(HL),降维后的人脸数据只保存识别需要的主要信息。基本原理为利用离散K-L变换和SVD定理提取人脸的主要成分构成特征脸库。PCA方法的算法如下:初始化人脸图像为二维nm灰度图像,用nmN维列向量X表示。第1步选取人脸图像训练样本集MiXi,...,2,1|,其中iX为第i个训练样本的图像向量,M为训练样本集总数。第2步计算平均人脸,即训练样本集的均值向量MiiXM11。第3步构造协方差矩阵tS,满足)()(1iMiitXXS的N×N总体散布矩阵。第4步求解协方差矩阵tS的特征值和特征向量。对大小为NN的矩阵tS计算特征是无法办到的,引入奇异值分解定理求解MM个小矩阵L。1)计算矩阵L的特征向量),...,2,1(Mll。差值图像AALXXXAM],,...,,[21。2)通过差值图像和矩阵L的特征向量的线性组合计算出协方差矩阵tS的特征向量),...,2,1(Mll,使其满足:AVXXXUMMM],...,[],...,,[],...,,[212121,第5步取前d个最大特征值的特征向量计算特征脸。d由阈值(通常取90%~99%)确定,满足:diMjjidJ11/|min。特征值所对应的特征向量组成投影空间,把训练样本数据集合和测试样本数据集合投影到该空间中得到人脸子空间。3K-L(霍特林)变换3.1定义协方差矩阵。假设f是一个1N的向量集合},...,,,{321nfffff,即if都是变量f的均值可统计N个样本向量估计。NiifNfE11)((3-1)f的协方差定义为:NiiiNifffNffNffEC111))((1))(((3-2)3.2、求出f的协方差矩阵的特征值i和特征向量i。10,NiCiiif(3-3)其中i为特征值,i为特征向量。3.3、求变换矩阵变换矩阵是由特征向量构成n,,,...21,正交化后为*(正交矩阵),将*记为A。因次定义一维K-L变换为:)()(*fAfF(3-4)反变换定义为:FAFf*)((3-5)4SVD我们知道矩阵的特征值和特征向量一般通过变换来计算,对于高维矩阵的特征值和特征向量来说求解是很困难的,为了解决这个问题我们引入了奇异值分解定理,即SVD定理。设K是轶为R的)(nmnm维矩阵,KK和KK的特征值得非负平方根称作A的奇异值,则必存在两正交矩阵:],...,,[21rrdiagiirvu,...21,1,],...,,[21UURUmmm(4-1)1,],...,,[21VVRVnnn(4-2)这样就使:000rKVU(4-3)其中],...,,[21rrdiag,i为K的奇异值,令iirvu,...21,分别为KK和KK的特征向量。由SVD定理可知,KK和KK的特征向量存在对应关系:riKvuiii,...,2,1,1(4-4)即矩阵KK的特征值和特征向量可通过KK的特征值和特征向量间接实现。4MATLAB实现PCA算法首先要对图像进行预处理,通过直方图修正、灰度变换、图像锐化、图像平滑以及几何校正等对图像进行处理。其中图像平滑又有低通滤波和高通滤波两种方法。几何校正又包括图像的插值、图像的旋转、图像的剪裁。这些处理方法都可以在MATLAB中进行仿真。求取预存人脸向量库个列元素的平均值,并且将均值图像输出,即预存人脸图像的平均脸。在MATLAB中实现的代码如下所示:function[m,a,Eigenfaces]=EigenfacesSpaces(T)m=mean(T,2);mean_face=reshape(m,180,200);Image_mean=mat2gray(mean_face);imwrite(Image_mean,'meanface.jpg','jpg');Train_Number=size(T,2);图3.1平均脸将预存人脸数据库中的人脸图像减去平均脸,构成人脸偏差矩阵A,这一步主要是因为数学运算的需要,我们通过这一步可以求出特征向量和特征值。通过人脸偏差矩阵A应用定理SVD可以求出矩阵L的全部特征值来构成对角阵D,并求L的特征向量构成V的列向量。在MATLAB中实现的代码如下所示:A=[];fori=1:Train_Numbertemp=double(T(:,i))-m;A=[Atemp];endL=A'*A;[V,D]=eig(L);保留主要特性向量的同时降低向量的维数。我们的选取原则是选择的特征值占整个特征值的。在MATLAB中实现的代码如下所示:d=diag(D);w=flipud(d);dsort=fliplr(w);vsort=fliplr(V);dsum=sum(dsort);dsum_extract=0;p=0;while(dsum_extract/dsum0.8)p=p+1;dsum_extract=sum(dsort(1:p));end将选取的特征向量构成特征脸空间的转换矩阵,然后将特征脸空间输出。在MATLAB中实现的代码如下所示:L_eig_vec=[];fori=p:size(V,2)-PG=V(:,i);L_eig_vec=[L_eig_vecG];endEigenfaces=A*L_eig_vec;fori=1:pEigenfaces=reshape(Eigenfaces(:,i),[180,200]);figure(i);imshow(mat2gray(Eigenfaces));end图3.2特征脸空间将人脸图像投影到由舍取后的特征向量构成的特征脸空间上都可以得到一组唯一的坐标,人脸图像可以看作是由这些构成特征脸空间的特征脸组成的。例如,一张人脸可以看成是由特征脸A的15%,减去特征脸B的5%,加上特征脸C的21%等构成。图3.2就是构成的特征脸空间,所有人脸图像都可以由这些人脸组合而成。5结论本文对PCA算法进行了详细的介绍,首先介绍了整个算法的识别步骤,其次介绍了算法运用的特有数学原理如K-L变换以及SVD定理,并且对K-L变换和SVD定理的数学原理进行了详细地公式推导,最后,本文对基于PCA的人脸识别算法在MATLAB上进行了系统仿真,给出了系统运行的界面,介绍了系统的主要函数,在人脸识别所用的人脸图像库中加入了新的人脸图像,事先对新加入的人脸图像进行了图像预处理。参考文献[1]黄美善.人脸识别技术综述[J].信息与电脑(理论版),2010(2):47.[2]李盛文,鲍苏苏.基于PCA+AdaBoost算法的人脸识别技术[J].计算机工程与应用,2010,46(4):170-173.[3]郑晓薇,于梦玲.基于Matlab多核集群的人脸识别算法的并行化设计[J].计算机应用,2011,31(10):2597-2599.[4]张向东,李波.基于Gabor小波变换和PCA的人脸识别方法[J].电子科技,2007(4):72-74.[5]甘俊英,李春芝.2DPCA-ICA算法在人脸识别中的应用[J].电路与系统学报,2008(4):24-28.[6]唐赫,基于PCA和神经网络的人脸识别算法研究[J].软件导刊,2013,12(6):33-34