人脸识别

更新时间:2024-05-08 01:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

人脸识别实验

一、实验要求

1.选择任一人脸数据库

2. 查找人脸识别文献,写简单综述 3. 选择方法,完成实验

二、实验原理

1、人脸识别简介

人脸识别技术是基于人的脸部特征,对输入的人脸图象或者视频流 . 首先判断其是否存在人脸 , 如果存在人脸,则进一步的给出每个脸的位置、大小和各个主要面部器官的位置信息。并依据这些信息,进一步提取每个人脸中所蕴涵的身份特征,并将其与已知的人脸进行对比,从而识别每个人脸的身份。

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 2、.PCA

主成分分析 ( Principal Component Analysis , PCA )或者主元分析。是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题。计算主成分的目的是将高维数据投影到较低维空间。给定 n 个变量的 m 个观察值,形成一个 n′m 的数据矩阵,n 通常比较大。对于一个由多个变量描述的复杂事物,人们难以认识,那么是否可以抓住事物主要方面进行重点分析呢?如果事物的主要方面刚好体现在几个主要变量上,我们只需要将这几个变量分离出来,进行详细分析。但是,在一般情况下,并不能直接找出这样的关键变量。这时我们可以用原有变量的线性组合来表示事物的主要方面, PCA 就是这样一种分析方法。 3、原理说明

根据Kyungnam Kim在其论文 Face Recognition using Principle Component Analysis 中所陈述,PCA人脸识别的基本思想是“?express the large 1-D vector of pixelsconstructed from 2-D facial image into the compact principal components of thefeature space(eigenspace projection).” 也就是从人脸图像中找出最能代表人脸的特征空间。一个单个的人脸图片映射到这个特征空间得到这个特征空间的一组系数(这张人脸图片的特征脸特征)。如果两张人脸图片映射到这个特征空间的系数差不多,就表示这两张人脸是同一个人。

三、实验设计

1

1

1、测试数据库

测试数据库为ORL_92x112,其中含40个人,每人10张图片,共400张图片。。 2、算法设计及测试 1)训练阶段

2)一张人脸图片在计算机表示为一个像素矩阵,即是一个二维数组,现在把这个二维数组变成一维数组,即把第一行后面的数全部添加到第一行。这样一张图片就能表示为一个向量d=(x1,x2......xn)。xn表示像素。

3) 现在训练库里有m张人脸图片,把这些图片都表示成上述的向量形式,即d1,d2,。。。dm,把这m个向量取平均值得向量avg=(y1,y2......yn)。 得到平均图像:

图2 平均图像

4) 用d1,d2...........dm分别减去avg后组成一个矩阵X,即矩阵X的第一行为d1-avg,后面类似。X的大小为m×n。因为找特征空间不能基于一张图片,而要在所有的人脸图片提取出共同特征,所以要取各个人脸向量到平均人脸向量的向量差。依据这个每个人脸图片跟平均脸向量的向量差组成矩阵A,然后依据矩阵A来求解最特征空间。

5)矩阵X乘以X的逆矩阵X’得X的协方差矩阵W,W的大小m×m,求W的特征向量。取最大的K个特征向量组成新的矩阵Y,Y的大小m×k。 6) 使用X’乘以Y得到特征脸C,C的大小n×k,如:

7)用图片向量d乘以C得到图片向量d在特征脸的投影向量pn,有多少张图片就有多少个pn。pn的大小1×k

8)探究各特征值所占有的能量数

9) 第n个特征值占所有特征值之和的百分比 (特征值从大到小排列)。 10)前n个特征值占所有特征值之和的百分比 (特征值从大到小排列)。

在实验中,要求保留90%的能量,所以当取前20个特征值得时候就可以满足要求了。 11)测试阶段

12)一张新的图片也表示为d的向量,记为D,D的大小1×n

2

2

13). D乘以上面训练得到的特征脸C得到这个图片向量D在C下的投影向量P,p的大小1×k。

14).计算p与上面所有的pn的向量距离,与p最小的那个向量所对应的人脸图片跟这张新人脸图片最像。

15).判别图像的相似性有两种方法:一种是计算N维空间中图像间的距离,另一种是测量图像间的相似性。当测量距离时,距离应尽可能的小,一般选择距离测试图像最近的训练图像作为它所属的类别,识别的方法和最初的图像匹配方法类似:将测试集中的每一幅降维图像与降维的训练集进行匹配,然后将其分类到距离最小的训练集头像中,如果两个头像表示一个人,表示识别成功。而测量相似性时,图像应尽可能的相似,也就是说具有最大相似性的训练图像类被认为是测试图像所属的类别。本程序采用三阶近邻法,算法流程图如下图所示:

读取训练集图像数据人脸识别每列减去均值将测试集进行降维计算协方差矩阵降训练集进行降维计算协方差矩阵的特征值和特征向量选择主成分

图3 基于PCA的人脸识别算法流程图

三、实验结果与分析

1,程序:

clc clear all close all %%

%训练过程

file=dir('TRAIN\\*.bmp'); for i=1:length(file)

temp_train=imread(file(i).name); [m,n]=size(temp_train);

S(:,i)=reshape(temp_train,m*n,1); end

for i=1:length(file)

3 3

for j=1:m*n X(j,i)=S(j,i); end end

%计算均值

for i=1:length(file) miu(i)=mean(X(:,i)); end

X=double(X);

%去均值

for i=1:length(file); X(:,i)=X(:,i)-miu(i); end W=X'*X; [V D]=eig(W); d1=diag(D);

dsort = flipud(d1); vsort = fliplr(V); dsum = sum(dsort); a=20;

Y=vsort(:,1:a); C=X*Y;

T=zeros(m*n,length(file)); for j=1:length(file) for i=1:a

T(:,j)=T(:,j)+Y(j,i)*C(:,i); end end B=T;

%本征脸

for i=1:length(file) B(:,i)=B(:,i)+miu(i); end

cg=reshape(B(:,7),m,n); cg=uint8(cg); figure;

imshow(cg);title('本征脸') %%

%测试过程

file_t=dir('TEST\\*.bmp'); temp_test = imread(file_t.name); figure

subplot(1,2,1);

imshow(temp_test);title('测试人脸');hold on;4 4

X_test=double(reshape(temp_test,m*n,1)); m2=mean(X_test); X_test=X_test-m2; for i=1:length(file) z(:,i)=T(:,i)-X_test; end

sum=zeros(1,length(file)); for j=1:length(file) for i=1:m*n

sum(j)=sum(j)+abs(z(i,j)); end end

min=min(sum);

a=find(abs(sum-min)<=0); dd=reshape(S(:,a),m,n); subplot(1,2,2);

imshow(dd);title('匹配人脸');hold on;

特征脸:

结果

5 5

本文来源:https://www.bwwdw.com/article/5dog.html

Top