MATLAB-PCA人脸识别算法
- 格式:doc
- 大小:65.50 KB
- 文档页数:4
信号处理方向课程设计报告题目:采用PCA方法的人脸识别系统院系:电子信息学院专业:信息类班级:姓名:学号:指导教师:2013年1月16号目录1:绪论 (3)1.1:研究背景 (3)1.2:应用前景 (3)2:设计基本要求 (5)3:内容原理 (6)3.1 为什么设计PCA人脸识别系统 (6)3.2 PCA算法的原理 (6)3.3 Eigenface算法 (8)3.4 PCA算法在人脸识别中的应用 (9)4:设计步骤 (11)4.1:数据采集 (11)4.2.:文件的读入与显示 (11)4.3:载入要训练的人脸集图像并存储 (12)4.4.:获取训练图像集合的主成分特征向量 (13)4.5:显示特征脸 (14)4.6:平均脸显示 (15)4.7:由特征脸重构训练集内人脸图像 (15)5:心得体会 (17)附录1:参考文献 (18)附录2:课程设计源代码 (18)1:绪论1.1:研究背景为了帮助学生深入理解和消化基本理论、进一步提高综合应用能力并且锻炼独立解决问题的能力,我们将《数字信号处理》、《DSP原理与应用》、《语音信号处理》和《数字图象处理》几门课程融合在一起开设的DSP综合实验课程设计。
主要要求有:一:设计内容突出信号处理的理论和技术的综合应用。
如在信号滤波实验中,在语音信号中混有噪声,要求学生滤除该语音信号中的噪声。
学生首先要进行信号谱分析、然后选择滤波器类型,再确定滤波器参数,最后进行滤波器设计与应用。
而不是简单地给出滤波器类型和设计指标。
二:如何将《DSP原理与应用》、《语音信号处理》和《数字图象处理》三门课程有机的结合起来,设计一实际的系统。
由学生在所学知识的基础上,查阅相关资料,自主设计,通过实验装置进行实现,并对结果进行综合分析,寻找最佳设计方案。
希望学生通过完成一个与信号处理相关的课题的理论设计、程序设计和实验调试任务,提高他们分析解决实际问题的能力。
本设计要求运用课程所学知识,进行算法实现、Matlab仿真,程序设计,DSP开发平台上调试,加深对信号处理知识的理解与运用,培养对可编程DSP芯片的开发技能。
Matlab技术面部表情识别与情感分析近年来,随着计算机视觉和人工智能的发展,面部表情识别与情感分析成为了研究的热点。
在各个领域,包括人机交互、心理学和市场研究等,对于准确分析和理解人们的情感和表情,这项技术具有重要的应用价值。
Matlab作为一种流行的科学计算软件,具有强大的图像处理和模式识别功能,在面部表情识别与情感分析中发挥着重要的作用。
首先,面部表情识别是通过分析面部特征,包括眼睛、眉毛、嘴唇等部位的变化,来判断人的情绪状态。
Matlab提供了丰富的图像处理工具箱,可以对面部图片进行预处理、特征提取和分类。
例如,通过使用Matlab提供的Haar级联分类器,可以检测面部区域,并使用典型的图像特征,如梯度直方图、局部二值模式等,来捕捉面部表情的特征。
同时,Matlab还支持各种分类算法,如支持向量机、神经网络和决策树等,可以根据提取的面部特征进行训练和分类。
其次,情感分析是通过对文本、音频或图像等媒体数据进行分析,来推断人们的情绪状态和情感倾向。
在基于图像的情感分析中,Matlab提供了丰富的图像处理和特征提取函数。
通过对面部图片进行增强、滤波和二值化等预处理操作,可以提取出图像中的感兴趣区域,并计算出相关的纹理和颜色特征。
例如,使用Matlab的纹理特征函数可以提取出面部图片的熵、对比度和能量等纹理信息,这些信息可以反映面部表情的细微变化。
在特征提取的基础上,可以使用机器学习算法,如朴素贝叶斯和随机森林等,根据特征的统计分布和关联性来进行情感分类和分析。
此外,Matlab还提供了人脸数据库和算法库,方便研究人员进行面部表情识别和情感分析的实验。
例如,AT&T数据库和FER2013数据库提供了大量的面部表情图片和相应的标签,可以用于训练和验证算法的效果。
同时,Matlab还提供了一些开源的面部表情识别和情感分析算法,如Active Appearance Model (AAM)、Facial Action Coding System (FACS)和Convolutional Neural Network (CNN)等,这些算法可以作为研究的基准和参考。
如何使用Matlab进行人脸检测和人脸识别人脸检测和人脸识别是计算机视觉领域中的重要技术应用,可以广泛用于人脸识别系统、人脸支付、安全监控等众多领域。
本文将介绍如何使用Matlab进行人脸检测和人脸识别。
1. 背景介绍人脸检测和人脸识别技术的出现,为计算机系统实现对人脸的自动分析和识别提供了可能。
人脸检测是指从一幅图像或视频序列中确定是否存在人脸,并找出人脸的位置和大小。
而人脸识别则是在检测到的人脸图像上进行特征提取和模式匹配,以实现对人脸的身份识别。
2. 人脸检测在Matlab中,可以使用Viola-Jones算法进行人脸检测。
该算法通过构造Haar特征与Adaboost集成学习算法相结合,能够在较短的时间内实现高效的人脸检测。
具体操作如下:2.1 加载图像首先,在Matlab中加载需要进行人脸检测的图像。
可以使用imread函数进行图像加载,并将其转换为灰度图像进行处理。
例如:```Matlabimage = imread('face.jpg');gray_image = rgb2gray(image);```2.2 构建人脸检测器在Matlab中,可以使用vision.CascadeObjectDetector对象构建人脸检测器。
该对象可以通过Viola-Jones算法进行人脸检测。
具体代码如下:```MatlabfaceDetector = vision.CascadeObjectDetector();bbox = step(faceDetector, gray_image);```2.3 显示检测结果最后,可以使用insertObjectAnnotation函数将检测到的人脸位置在原始图像上标记出来。
代码示例如下:```Matlabdetected_image = insertObjectAnnotation(image, 'rectangle', bbox, 'Face');imshow(detected_image);```3. 人脸识别在Matlab中,可以使用基于人脸特征的Eigenface、Fisherface和LBPH等算法进行人脸识别。
人脸识别核心算法在检测到人脸并定位面部关键特征点之后,主要的人脸区域就可以被裁剪出来,经过预处理之后,馈入后端的识别算法。
识别算法要完成人脸特征的提取,并与库存的已知人脸进行比对,完成最终的分类。
我们在这方面的主要工作包括:∙基于LGBP的人脸识别方法问题:统计学习目前已经成为人脸识别领域的主流方法,但实践表明,基于统计学习的方法往往会存在“推广能力弱”的问题,尤其在待识别图像“属性”未知的情况下,更难以确定采用什么样的训练图像来训练人脸模型。
鉴于此,在对统计学习方法进行研究的同时,我们还考虑了非统计模式识别的一类方法。
思路:对于给定的人脸图像,LGBP方法首先将其与多个不同尺度和方向的Gabor滤波器卷积(卷积结果称为Gabor特征图谱)获得多分辨率的变换图像。
然后将每个Gabor特征图谱划分成若干互不相交的局部空间区域,对每个区域提取局部邻域像素的亮度变化模式,并在每个局部空间区域内提取这些变化模式的空间区域直方图,所有Gabor特征图谱的、所有区域的直方图串接为一高维特征直方图来编码人脸图像。
并通过直方图之间的相似度匹配技术(如直方图交运算)来实现最终的人脸识别。
在FERET四个人脸图像测试集合上与FERET97的结果对比情况见下表。
由此可见,该方法具有良好的识别性能。
而且LGBP方法具有计算速度快、无需大样本学习、推广能力强的优点。
参见ICCV2005表.LGBP方法与FERET'97最佳结果的对比情况∙基于AdaBoost的Gabor特征选择及判别分析方法问题:人脸描述是人脸识别的核心问题之一,人脸识别的研究实践表明:在人脸三维形状信息难以准确获取的条件下,从图像数据中提取多方向、多尺度的Gabor特征是一种合适的选择。
使用Gabor特征进行人脸识别的典型方法包括弹性图匹配方法(EGM)和Gabor特征判别分类法(GFC)。
EGM在实用中需要解决关键特征点的定位问题,而且其速度也很难提高;而GFC则直接对下采样的Gabor特征用PCA降维并进行判别分析,尽管这避免了精确定位关键特征点的难题,但下采样的特征维数仍然偏高,而且简单的下采样策略很可能遗漏了非常多的有用特征。
基于主成分分析(PCA)的⼈脸识别技术本科期间做的⼀个课程设计,觉得⽐较好玩,现将之记录下来,实验所⽤。
1、实验⽬的(1)学习主成分分析(PCA)的基础知识;(2)了解PCA在⼈脸识别与重建⽅⾯的应⽤;(3)认识数据降维操作在数据处理中的重要作⽤;(4)学习使⽤MATLAB软件实现PCA算法,进⾏⼈脸识别,加深其在数字图像处理中解决该类问题的应⽤流程。
2、实验简介(背景及理论分析)近年来,由于恐怖分⼦的破坏活动发⽣越发频繁,包括⼈脸识别在内的⽣物特征识别再度成为⼈们关注的热点,各国均纷纷增加了对该领域研究的投⼊。
同其他⽣物特征识别技术,如指纹识别、语⾳识别、虹膜识别、DNA识别等相⽐,⼈脸识别具有被动、友好、⽅便的特点。
该技术在公众场合监控、门禁系统、基于⽬击线索的⼈脸重构、嫌疑犯照⽚的识别匹配等领域均有⼴泛应⽤。
⼈脸识别技术是基于⼈的脸部特征,对输⼊的⼈脸图像或者视频流,⾸先判断其是否存在⼈脸。
如果存在⼈脸,则进⼀步的给出每个脸的位置、⼤⼩和各个主要⾯部器官的位置信息。
其次并依据这些信息,进⼀步提取每个⼈脸中所蕴涵的⾝份特征,并将其与已知的⼈脸进⾏对⽐,从⽽识别每个⼈脸的⾝份。
⼴义的⼈脸识别实际包括构建⼈脸识别系统的⼀系列相关技术,包括⼈脸图像采集、⼈脸定位、⼈脸识别预处理、⾝份确认以及⾝份查找等;⽽狭义的⼈脸识别特指通过⼈脸进⾏⾝份确认或者⾝份查找的技术或系统。
我们在处理有关数字图像处理⽅⾯的问题时,⽐如经常⽤到的图像查询问题:在⼀个⼏万或者⼏百万甚⾄更⼤的数据库中查询⼀幅相近的图像。
其中主成分分析(PCA)是⼀种⽤于数据降维的⽅法,其⽬标是将⾼维数据投影到较低维空间。
PCA形成了K-L变换的基础,主要⽤于数据的紧凑表⽰。
在数据挖掘的应⽤中,它主要应⽤于简化⼤维数的数据集合,减少特征空间维数,可以⽤较⼩的存储代价和计算复杂度获得较⾼的准确性。
PCA法降维分类原理如下图所⽰:如上图所⽰,其中五⾓星表⽰⼀类集合,⼩圆圈表⽰另⼀类集合。
Matlab在视频人脸检测与人脸识别中的应用技巧人脸检测和人脸识别是计算机视觉领域中的重要研究方向,近年来得到了广泛的应用。
在视频处理中,人脸的准确检测和识别是实现许多高级应用的基础。
Matlab作为一种功能强大的数学建模与仿真软件,提供了丰富的图像处理工具箱,使得人脸检测与识别算法的实现变得简单与高效。
一、图像预处理在进行人脸检测与识别之前,通常需要对图像进行预处理,以提高算法的准确性。
图像预处理的过程包括灰度化、直方图均衡化、尺寸归一化等。
利用Matlab的图像处理工具箱,可以快速实现这些预处理操作。
1.1 灰度化灰度化是将彩色图像转换为灰度图像的过程,将去除色彩信息,使图像变得更易处理。
在Matlab中,使用rgb2gray函数可以方便地将彩色图像转换为灰度图像。
1.2 直方图均衡化直方图均衡化是一种增强图像对比度的方法,通过对图像的灰度直方图进行变换来实现。
在Matlab中,使用histeq函数可以对图像的灰度直方图进行均衡化操作,提高图像的细节显示能力。
1.3 尺寸归一化不同的人脸图像具有不同的尺寸和角度,这对人脸检测与识别算法会造成影响。
为了提高算法的鲁棒性,通常需要将人脸图像进行尺寸归一化处理。
在Matlab中,可以使用imresize函数将图像进行缩放,使得人脸图像具有相同的尺寸。
二、人脸检测人脸检测是指在一幅图像中自动识别和定位人脸的过程,是人脸识别的首要步骤。
Matlab提供了多种人脸检测算法的实现,其中常用的有Haar特征分类器和基于深度学习的卷积神经网络(CNN)。
2.1 Haar特征分类器Haar特征分类器是一种基于机器学习的人脸检测算法,可以通过训练集的正负样本学习出人脸的特征。
在Matlab中,可以使用vision.CascadeObjectDetector对象和trainCascadeObjectDetector函数来实现Haar特征分类器的训练与检测。
2.2 基于深度学习的卷积神经网络(CNN)近年来,深度学习在图像处理领域取得了巨大的突破,其中卷积神经网络是一种非常有效的人脸检测方法。
人脸识别% FaceRec.m% PCA 人脸识别修订版,识别率88%% calc xmean,sigma and its eigen decompositionallsamples=[];%所有训练图像for i=1:40for j=1:5a=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=200endendsamplemean=mean(allsamples); % 平均图片,1 × Nfor 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));endi=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; % 下面的人脸识别过程中就是利用这些组合系数来进行识别% 测试过程for i=1:40for j=6:10 %读入40 x 5 副测试图像a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg'));b=a(1:10304);b=double(b);tcoor= b * base; %计算坐标,是1×p 阶矩阵for k=1:200mdist(k)=norm(tcoor-allcoor(k,:));end;%三阶近邻[dist,index2]=sort(mdist);class1=floor( (index2(1)-1)/5 )+1;class2=floor((index2(2)-1)/5)+1;class3=floor((index2(3)-1)/5)+1;if class1~=class2 && class2~=class3class=class1;elseif class1==class2class=class1;elseif class2==class3class=class2;end;if class==iaccu=accu+1;end;end;end;accuracy=accu/200 %输出识别率特征人脸% eigface.mfunction [] = eigface()% calc xmean,sigma and its eigen decompositionallsamples=[];%所有训练图像for i=1:40for j=1:5a=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=200endendsamplemean=mean(allsamples); % 平均图片,1 × Nfor 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));endp = 199;% (训练阶段)计算特征脸形成的坐标系%while (i<=p && dsort(i)>0)% base(:,i) = dsort(i)^(-1/2) * xmean' * vsort(:,i); % base 是N×p 阶矩阵,除以dsort(i)^(1/2)是对人脸图像的标准化,详见《基于PCA 的人脸识别算法研究》p31% i = i + 1; % xmean' * vsort(:,i)是小矩阵的特征向量向大矩阵特征向量转换的过程%endbase = xmean' * vsort(:,1:p) * diag(dsort(1:p).^(-1/2));% 生成特征脸for (k=1:p),temp = reshape(base(:,k), 112,92);newpath = ['d:\test\' int2str(k) '.jpg'];imwrite(mat2gray(temp), newpath);endavg = reshape(samplemean, 112,92);imwrite(mat2gray(avg), 'd:\test\average.jpg');% 将模型保存save('e:\ORL\model.mat', 'base', 'samplemean');人脸重建% Reconstruct.mfunction [] = reconstruct()load e:\ORL\model.mat;% 计算新图片在特征子空间中的系数img = 'D:\test2\10.jpg'a=imread(img);b=a(1:112*92); % b 是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右b=double(b);b=b-samplemean;c = b * base; % c 是图片a 在子空间中的系数, 是1*p 行矢量% 根据特征系数及特征脸重建图% 前15 个t = 15;temp = base(:,1:t) * c(1:t)';temp = temp + samplemean';imwrite(mat2gray(reshape(temp, 112,92)),'d:\test2\t1.jpg'); % 前50 个t = 50;temp = base(:,1:t) * c(1:t)';temp = temp + samplemean';imwrite(mat2gray(reshape(temp, 112,92)),'d:\test2\t2.jpg'); % 前100 个t = 100;temp = base(:,1:t) * c(1:t)';temp = temp + samplemean';imwrite(mat2gray(reshape(temp, 112,92)),'d:\test2\t3.jpg'); % 前150 个t = 150;temp = base(:,1:t) * c(1:t)';temp = temp + samplemean';imwrite(mat2gray(reshape(temp, 112,92)),'d:\test2\t4.jpg'); % 前199 个t = 199;temp = base(:,1:t) * c(1:t)';temp = temp + samplemean';imwrite(mat2gray(reshape(temp, 112,92)),'d:\test2\t5.jpg');基于2DPCA与(2D)2PCA的人脸识别(第二版)。
随机过程PCA用于人脸识别附Matlab代码于琦2011/10/27学号:2009011149【摘要】人脸识别技术是近来非常活跃的研究领域,它综合多学科知识,且应用非常广泛。
采用主元分析法(PCA)进行人脸识别的经典方法之一。
本文利用Matlab在ORL人脸库上实现PCA初步人脸识别,包括图像特征提取、人脸重构与识别方法设计。
讨论了用奇异值分解等方法简化特征向量求解,并详细阐述其在Matlab中的实现过程。
结合ORL人脸库自身特点,通过对特征值和特征脸的分析进行合理取舍,提高了识别率。
【介绍】“人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。
更好的解决该问题将有助于身份确认和身份查找等应用、促进众多学科的发展。
”“目前,人脸识别的方法可以分为5类,分别为基于特征脸(PCA)的人脸识别方法,神经网络的人脸识别方法,弹性图匹配的人脸识别方法,线段Hausdorff 距离(LHD) 的人脸识别方法支持向量机(SVM) 的人脸识别方法。
其中给予特征脸的人脸识别是传统方法,基于K-L 变换(PCA)的人脸识别方法又叫特征脸方法、本征脸方法(Eigenface),最早由Turk 和Pentland 提出。
它有均方误差最小,降维减少计算量,主分量特性稳定等优点。
”“由于PCA较之于前几种方法相对简单,故本文对PCA算法进行研究并用Matlab 给出实现。
”“本文的结构安排如下:第二章模型(Model)及基本理论和方法(Basic Theory and Method),第三章方法(Method)及方法分析(Analysis of Method),第四章算法(Algorithm)及算法分析(Analysis of Algorithm),第五章数值结果及讨论(Discussion),第六章结论(Conclusion)。
第二章模型及基本理论和方法采用PCA对原始数据的处理,通常有三个方面的作用—降维、相关性去除、概率估计。
Matlab中的人脸识别与人脸特征提取近年来,随着计算机技术的快速发展和应用的普及,人脸识别技术逐渐进入了我们的生活。
无论是在安全领域的门禁系统、身份验证应用,还是在娱乐领域的人脸美化软件,人脸识别都发挥着重要的作用。
而在人脸识别技术的实现中,人脸特征提取是一个关键的环节。
本文将介绍在Matlab中实现人脸识别和人脸特征提取的方法与技巧。
在Matlab中,有许多经典的人脸识别算法可供选择,其中最为常见且被广泛应用的是基于主成分分析(PCA)的人脸识别算法。
PCA是一种经典的降维算法,它通过线性变换将高维数据映射到低维空间中,从而捕捉数据的主要特征。
在人脸识别中,我们可以将每张人脸的像素矩阵视为一个高维数据向量,利用PCA算法将其映射到一个低维特征空间中。
在特征空间中,每张人脸都可以表示为一个特征向量,就像每个人都有自己独特的“人脸特征码”一样。
要在Matlab中实现基于PCA的人脸识别,首先需要收集一组包含多个人脸的图像数据集作为训练样本。
然后,将每个人脸的像素矩阵展开成一个列向量,并将这些列向量按列排成一个矩阵,构成一个大的数据矩阵。
接下来,通过对数据矩阵进行协方差矩阵分解和特征值分解,可以得到一组特征向量。
这些特征向量被称为“特征脸”,它们是训练样本中人脸数据的主要变化方向。
最后,通过计算待识别人脸与训练样本中每个人脸的特征向量的距离,并找出距离最小的特征向量所对应的人脸,即可完成人脸识别的过程。
除了PCA算法,还有其他一些在Matlab中常用的人脸识别算法,如线性判别分析(LDA)算法、小波变换、局部二值模式(LBP)等。
这些算法在原理和实现上各有特点,可以根据实际需求选择合适的算法进行人脸识别。
在人脸识别之前,首先需要对输入的人脸图像进行预处理。
通常的预处理步骤包括灰度化、直方图均衡化和人脸检测。
灰度化是将彩色图像转换为灰度图像,降低了计算复杂度,同时保留了图像的关键信息。
直方图均衡化可以增强图像的对比度,使得人脸特征更加明显。
MATLAB中的人脸检测与人脸关键点定位技术人脸检测与人脸关键点定位是计算机视觉中一个重要的课题,它在许多应用领域都有着广泛的应用,如人脸识别、人机交互、表情分析等。
MATLAB作为一种非常强大的科学计算软件,也提供了丰富的工具和函数来实现这些功能。
在本文中,将探讨MATLAB中的人脸检测与人脸关键点定位技术,并介绍其原理和具体实现方式。
一、人脸检测技术人脸检测是计算机视觉中的一项基础任务,其目标是在给定的图像中准确地识别出人脸的位置。
在MATLAB中,人脸检测通常基于基于统计模型的方法,如Haar特征和级联分类器。
1. Haar特征Haar特征是一种用于物体检测的特征描述方法,它通过计算图像中不同区域的灰度差异来表示目标物体的特征。
在人脸检测中,Haar特征可以用来检测人脸的各种细节,如眼睛、鼻子、嘴巴等。
MATLAB提供了一系列函数和工具箱来计算和提取Haar特征,以及构建Haar特征分类器。
2. 级联分类器级联分类器是一种常用的目标检测方法,它通过级联多个简单的分类器来实现对复杂目标的检测。
在人脸检测中,级联分类器可以用来筛选候选区域,并排除一些不可能是人脸的区域,从而提高检测的准确率。
MATLAB中的人脸检测函数通常会使用级联分类器进行初步筛选,以减少计算量。
二、人脸关键点定位技术人脸关键点定位是在检测到人脸后,进一步定位人脸的关键特征点,如眼睛、眉毛、鼻子、嘴巴等。
在MATLAB中,人脸关键点定位主要基于形状模型和特征点回归方法。
1. 形状模型形状模型是一种用于描述人脸形状变化的数学模型,它通过学习和建模一组训练数据的形状变化,从而能够对新的输入数据进行形状预测。
在人脸关键点定位中,形状模型可以用来对给定的人脸进行局部形状的估计,从而进一步定位关键点。
MATLAB提供了一些函数和工具箱来实现形状模型的训练和预测。
2. 特征点回归特征点回归是一种常用的人脸关键点定位方法,它通过学习一个回归函数,将图像中的像素坐标映射到关键点的位置坐标。
基于PCA的人脸识别算法Alen Fielding摘要:文章具体讨论了主成分分析( PCA)人脸识别算法的原理及实现。
它具有简单、快速和易行等特点,能从整体上反映人脸图像的灰度相关性具有一定的实用价值。
关键词:人脸识别;PCA;生物特征;识别技术中图分类号: TP302 文献标识码: AFace recognition method based on PCAZhangjinhua(Information engineering college,Southwest university of science and technology,Sichuan,621010,China)Abstract : The paper discussed the principal component analysis (PCA) face recognition algorithm of principle and realization. It is simple, rapid and easy wait for a characteristic, can reflect from whole face image gray correlation has certain practical value.Key words : Face recognition; PCA; Biological characteristics; Recognition technology1引言PCA,即Principal Component Analysis,主成分分析方法,是一种得到广泛应用的事实上的标准人脸识别方法。
传统主成分分析方法的基本原理是:利用K-L变换抽取人脸的主要成分,构成特征脸空间,识别时将测试图像投影到此空间,得到一组投影系数,通过与各个人脸图像比较进行识别。
这种方法使得压缩前后的均方误差最小,且变换后的低维空间有很好的分辨能力。
2 K-L变换PCA方法是由Turk和Pentlad提出来的,它的基础就是Karhunen-Loeve变换(简称K-L变换),是一种常用的正交变换。
首先对K-L变换作一个简单介绍:假设X为n维的随机变量,X可以用n个基向量的加权和来表示:X= ∑=nia1i φi式中:αi是加权系数,φi是基向量,此式可以用矩阵的形式表示:X =(φ1,φ2,φ3,……,φn)( α1,α 2 ,……αn)= Φα系数向量为:α=ΦT X综上所述,K-L展开式的系数可用下列步骤求出:步骤一求随机向量X的自相关矩阵R=E[X T X],由于没有类别信息的样本集的μ均值向量,常常没有意义,所以也可以把数据的协方差矩阵∑=E[(x-μ)(x-μ)T]作为K-L坐标系的产生矩阵,这里μ是总体均值向量。
步骤二求出自相关矩阵或者协方差矩阵R的本征值λi 和本征向量φi,Φ=(φ 1 ,φ2,φ 3 ,……,φn)步骤三展开式系数即为α=ΦT XK-L变换的实质是建立一个新的坐标系,将一个物体主轴沿特征矢量对齐的转变换,这个变换解除了原有数据向量的各个分量之间相关性,从而有可能去掉那些带有较少信息的坐标系以达到降低特征空间维数的目的。
3 PCA方法PCA方法,也被叫做特征脸方法(eigenfaces),是一种基于整幅人脸图像的识别算法,被广泛用于降维,在人脸识别领域也表现突出。
一个N×N的二维脸部图片可以看成是N的一个一维向量,一张112×92的图片可以看成是一个10,304维的向量,同时也可以看成是一个10,304维空间中一点。
图片映射到这个巨大的空间后,由于人脸的构造相对来说比较接近,因此,可以用一个相应的低维子空间来表示。
我们把这个子空间叫做“脸空间”。
PCA 的主要思想就是找到能够最好地说明图片在图片空间中的分布情况的那些向量。
这些向量能够定义“脸空间”,每个向量的长度为N,描述一张N×N的图片,并且是原始脸部图片的一个线性组合。
对于一副M*N 的人脸图像,将其每列相连构成一个大小为D=M*N维的列向量。
D就是人脸图像的维数,也即是图像空间的维数。
设n是训练样本的数目;Xj表示第j幅人脸图像形成的人脸向量,则所需样本的协方差矩阵为:Sr=1()()NTj ijx u x u=--∑(1)其中u为训练样本的平均图像向量:u =11njjxn=∑(2)令A=[x1-u x2-u (x)n-u],则有Sr=AA T,其维数为D*D。
根据K-L变换原理,需要求得的新坐标系由矩阵AA T的非零特征值所对应得特征向量组成。
直接计算的计算量比较大,所以采用奇异值分解(SVD)定理,通过求解A T A的特征值和特征向量来获得AA T的特征值和特征向量。
依据SVD定理,令li(i=1,2,……,r)为矩阵A T A的r个非零特征值,vi为A T A对应于li的特征向量,则AA T的正交归一特征向量ui为:i i u Av(i=1,2,……r) (3) 则特征脸空间为:w=(u 1 ,u 2…… u r ,)。
将训练样本投影到“特征脸”空间,得到一组投影向量Ω=w T u ,构成人脸识别的数据库。
在识别时,先将每一幅待是识别的人脸图像投影到“特征脸”空间,再利用最近邻分类器的比较其与库中人脸的位置,从而识别出该图像是否是库中的人脸,如果是,是哪一个人脸。
4利用PCA 进行人脸识别完整的PCA 人脸识别的应用包括几个步骤:人脸图像预处理;读入人脸库,训练形成特征子空间;把训练图像和测试图像投影到上一步骤中得到的子空间上;选择一定的距离函数进行识别。
本文采用matlab7.5作为工具平台, 实现了一个人脸自动识别的系统原型。
实验在样本图库英国剑桥大学的ORL( Olivetti Research Laboratory) 人脸库上进行,它为网上下载的国外标准人脸数据库。
ORL 库包含40 个人,每个人10副图像,共计400 幅人脸正面图像,每幅图像大小为92×112,图像是在不同时间,光线轻微变化的条件下摄制的,其中包括姿态、光照和表情的差别。
其中部分如图1 所示:图1 ORL 人脸数据库中的 5幅图像 该数据库提供了经过预处理的人脸训练集和测试集。
选取前5 张人脸图像作为训练样本,后5 张人脸图像作为测试样本。
本实验运行的环境是IntelCelero n CPU 2.00GHz 处 理器、512MB 内 存,Window s XP 操作系统,对ORL 人脸库样本训练时间为70. 91s,识别率为90% ,训练样本数目多增加人脸特征库的容量,会几何级增加人脸识别核心算法的时间和空间复杂度。
在识别结果的显示窗口中, 一共显示了在整个人脸图像库中最小的10 个欧氏距离,它们的排列也是从小到大进行排列的,同时, 换句话说,这10 个欧氏距离,也就分别代表了与实验中选取的待识别的人脸图像最相近的10 幅人脸图像。
距离最近, 当然也就是我们实验所需识别的人脸图像。
下面详细描述整个过程: 4.1 读入人脸库归一化人脸库后,将库中的没人选择一定数量的图像构成训练集,其余的构成测试集。
设归一化后的图像时n*m 维,按列相连就构成N=n*m 维矢量,可视为N 维空间中的一个点,可以空过K-L 变换用一个低维子空间描述这个图像。
4.2 计算通过K-L 变换的生成矩阵 所有训练样本的协方差矩阵为(以下三个等价);a. C 1=( 1.Mk k k x x =∑T )/M-m x .m x Tb. C 1=(A.A T )/M(1)c. C 1=[ 1()()MT i x i x i x m x m =--∑]/MA=(φ1φ2,……,φm ), φi =x i -m x ,其中m x 是平均人脸,M 是训练人脸数,协方差矩阵C 1是一个N*N 的矩阵,N 是x i 的维数。
为了方便计算特征值和特征向量,一般选用第二个公式。
根据K-L 变换原理,我们所求的新坐标即由矩阵 A.A T 的非零特征值所对应的特征向量组成。
直接求N*N 大小矩阵的C 1的特征值和正交归一特征向量是很困难的,根据奇异值分解原理,可以通过求解A T A 的特征值和特征向量来获得AA T的特征值和特征向量。
4.3 识别利用公式Y=U T *X ,首先把所有图片进行投影,然后对于测试图片也进行同样的投影,采用判别函数对投影系数进行识别。
5结论与展望人脸识别是目前较活跃的研究领域, 本文详细给出了基于主成分分析的人脸特征提取的原理与方法。
并使用matlab 作为工具平台, 实现了一个人脸自动识别的系统原型。
实验结果表明, 该系统识别率为85%, 达到预期的效果。
如果想进一步提高人脸识别率, 可以考虑与其他方法结合。
仅单独使用任何一种现有的方法一般都不会取得很好的识别效果, 将其他人脸识别方法组合是今后研究的一种趋势。
也可以考虑改进分类决策的方法。
本系统采用的最小距离分类法属于线性的分类器, 而利用神经网络这类学习能力更强的非线性分类器对高维人脸识别问题可能会有更好的解决。
参考文献:[1]邓楠, 基于主成份分析的人脸识别. 2006.06. [2]龚勋,PCA 与人脸识别及其理论基础. 2007.04. [3]田印中, 董志学, 黄建伟, 基于PCA 的人脸识别算法研究及实现. 2010.03.[4]李华胜,杨桦,袁保宗.人脸识别系统中的特征提取. 2001,06.[5]温福喜, 刘宏伟. 基于 2D PCA 和 2D LDA 的人脸识别方法. 2007.08.[6]李刚, 高政.人脸识别理论研究进展. 2003, 01. [7]张翠平, 苏光大.人脸识别技术综述. 2000, 05. [8] 罗昊, 孟传良.基于特征脸和LDA 的人脸识别.2005,12。