GUI,界面的基于PCA,算法的matlab,人脸检测识别_第1页
GUI,界面的基于PCA,算法的matlab,人脸检测识别_第2页
GUI,界面的基于PCA,算法的matlab,人脸检测识别_第3页
GUI,界面的基于PCA,算法的matlab,人脸检测识别_第4页
GUI,界面的基于PCA,算法的matlab,人脸检测识别_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、20数字图像处理论文目录摘要21 概述31.1 人脸识别技术31.2 PCA方法概述32 识别功能的实现52.1 PCA方法基本原理52.2 基于主成分分析法的人脸识别62.2.1 读入人脸库62.2.2 计算K-L变换的生成矩阵62.2.3 利用SVD定理求解特征值和特征向量72.2.4 样本投影并识别82.2.5 选择分类器识别人脸92.3 基于PCA算法人脸识别的matlab实现92.3.1 读取人脸库102.3.2 利用生成矩阵求特征值和特征向量102.3.3 选取阈值提取训练样本特征102.3.4 选取测试样本进行识别112.5 实验结果及分析113 附加功能及GUI的设计134 总

2、结20摘要这次设计主要是完成了基于主成分分析(Principal Component Analysis,PCA)方法的人脸识别,为了便于操作,利用matlab GUI做了一个可视化界面,其中还附加了诸如图像平滑,锐化,灰度化,二值化,膨胀,腐蚀,二级小波分解及应用各种算子进行的边缘检测等功能,利用这些附加功能可以对待识别图像做简单的预处理,以提高识别率。PCA方法的基本原理是:利用离散K-L变换提取人脸的主要成分,构成特征脸空间,识别时把测试样本投影到该空间,构成一组投影系数,通过与特征脸的距离比较,距离最小的特征脸对应的即是识别结果。基于PCA的人脸识别分为三个阶段,第一个阶段利用训练样本集

3、构建特征脸空间;第二个阶段是训练阶段,主要是将训练图像投影到特征脸子空间上;第三个阶段是识别阶段,将测试样本集投影到特征脸子空间,然后与投影后的训练图像相比较,距离最小的为识别结果。基于PCA的人脸识别其实一种统计性的模板比配方法,原理简单,易于实现,但也有不足,它的识别率会随着关照,人脸角度,训练样本集的数量而变换,但仍不失为一种比较好的方法。1 概述1.1 人脸识别技术人脸识别技术是采用某种技术和手段对人的身份进行标识,从而依据该标识对人进行身份识别,以达到监督、管理和识别目的的一种技术。近年来由于在公安罪犯识别、安全验证、安全验证系统、信用卡验证等方面的巨大应用前景而越来越成为当前模式识

4、别和人工智能领域的一个研究热点。人脸识别基本上可分为两个方面:一是给定一幅待识别人脸图像,判别它是否是某人,即通常所说的身份验证(Authentication),这是个“一对一”的两分类问题;另一个是给定一幅待识别人脸图像,判断它是谁,即通常所说的身份识别(Recognition),这是一个一对多”的多类分类问题。通常所说的人脸识别是个“一对多”的多类分类问题,计算机人脸识别过程如图1.1所示。一个典型的人脸识别系统包含以下各部分:(1)从图像中提取人脸区域,检测,定位人脸;(2)用适当的特征表征人脸;(3)将人脸表征进行分类。图1.1基于人脸图像整体特征的人脸识别方法由于不需要提取人脸图像中

5、器官的具体信息,而且充分利用到人脸图像本身具有的灰度信息,因此可获得更高的识别性能。基于人脸图像整体特征的人脸识别方法主要有特征脸法,最佳鉴别矢量集法,贝叶斯法,基于傅立叶变换特征法,弹性图匹配法,相关方法,线性子空间法,可变形模型法和基于人工神经网络的方法等等。其中弹性图匹配法和傅里叶不变特征法侧重于表述人脸图像;最佳鉴别矢量集法,贝叶斯法,基于人工神经网络的方法侧重于分类;特征脸法和线性子空间法等侧重于人脸图像的重构。1.2 PCA方法概述PCA(principal Component Analysis)是一项在计算机视觉中用于降低维数、提取特征的技术,它被认为是人脸识别的有效方法之一,S

6、irovish和Kirby首先提出应用Karhunen-Loeve变换表征人脸,即人脸由被称之为特征脸向量的带权特征向量的线性组合表征。PCA算法将人脸图像看作随机向量,采用K-L变换得到所有人脸空间样本的正交变换基,这些基向量具有与人脸相似的形状,表征了人脸区别于其他物体的特征,因此被称为特征脸向量。对应特征值的绝对值越大,其特征向量对构造人脸的作用越大。选择作用最大的部分特征向量作为人脸空间的基向量,如此可以降低人脸空间维数,而对人脸重构的影响很微弱。利用这些基向量的线性组合描述、表达人脸和逼近人脸,进行人脸的识别和重建。将人脸映射到由特征脸向量构成的空间中,得到区别于其他人脸的特征。识别

7、过程就是把待识别人脸特征,与库中人脸特征进行比较。人脸的重建就是根据待识别人脸特征,还原到人脸空间中。PCA亦称特征脸方法把人脸图像作为一个整体来编码,而不关心眼、嘴、鼻等单个特征,从而大大降低了识别的复杂度。此方法的主要缺点是目前还没有一个快速的求解特征值和特征向量的算法,每一张新脸入库,都要重新计算特征值和特征向量,费时较多。优点是:图像的原始灰度数据可直接用来学习和识别,不需要任何初级或中级处理;不需要人脸的几何和反射知识;通过低维子空间表示进行有效压缩;与其他匹配方法相比,识别简单有效。为了解决上述缺点,研究人员在此基础上发展了许多改进方法:如将特征脸与线性判别函数相结合,可以使得对光

8、照及人脸表情不太敏感,样本集小波变换预处理减少运算量,利用奇异值分解求特征值,2DPCA等等。2 识别功能的实现2.1 PCA方法基本原理设人脸图像为二维灰度图像,用维列向量表示。人脸图像训练集为,其中为训练集中图像总数。根据训练集构造总体散布矩阵:其中为所有训练样本的平均向量选取一组标准正交且使得准则函数式(3.3)达到极值的向量作为投影轴,其物理意义是使投影后所得特征的总体散布量(类间散布量与类内散布量之和)最大。 其等价于上式即为矩阵的Rayleig熵,由Rayleigh熵7的极值性质,最优投影轴可取为的个最大的特征值所对应的标准正交的特征向量。对于人脸图像,总体散布矩阵的大小为,对它求

9、解特征值和特征向量是很困难的,由奇异值定理,一种取而代之的方法是解个较小的矩阵。首先计算矩阵的特征向量:矩阵的特征向量由差值图像与线性组合得到取的前个最大特征值的特征向量计算特征脸,由门限值确定:2.2 基于主成分分析法的人脸识别完整的PCA人脸识别的应用包括四个步骤:人脸图像的预处理;读入人脸库,训练形成特征脸空间;把训练样本和测试样本投影到特征脸空间中;选择一个距离函数按照某种规则进行识别。下面看一下详细的过程:2.2.1 读入人脸库这次设计中选用英国剑桥大学人脸库即ORL人脸库,此人脸数据库有40人,每人有10幅图像。这些图像具有以下特点:有些图像拍摄于不同的时期;人的脸部表情和脸部细节

10、有着不同程度的变化,比如,笑或不笑,眼睛或睁或闭,戴或不戴眼镜;人脸姿态也有相当程度的变化,深度旋转和平面旋转可达20。;人脸的尺度也有多达10%的变化;图像的分辨率是 112x92。在ORL人脸库中选出每个人的前5幅图像作为训练图像,构成一个200幅图像的训练集,剩下的200幅图像构成测试集。每幅图像按列相连构成10304维列向量,读入的训练样本集就构成10304200的矩阵。2.2.2 计算K-L变换的生成矩阵以训练样本集的总体散布矩阵为生成矩阵,即其中为第幅训练样本的图像向量,为训练样本集的均值向量,训练样本的总数为200。为了求的生成矩阵的特征值和正交归一化特征向量,由于矩阵维数过高,

11、计算量太大,可以引进奇异值分解定理(SVD定理)。图2.1 平均脸2.2.3 利用SVD定理求解特征值和特征向量SVD定理的定义:若矩阵,则存在正交矩阵,使得,即,则称为奇异值分解。其中,为的奇异值,是或的特征值的平方根,即。奇异值向量具有良好的稳定性,所以它对图像噪音、图像光照条件引起的灰度变化具有不敏感的特性。计算特征值和特征向量的基本步骤是:(1)创建协方差矩阵;(2)计算协方差矩阵的特征值和特征向量;(3)按特征值由小到大顺序排列特征值和特征向量。这些特征向量对应的图像很像人脸,所以被称为“特征脸”。有了这样一个由“特征脸”组成的降维子空间,任何一幅图像都可以向其投影并获得一组坐标系数

12、,这组坐标系数表明了该图像在“特征脸”子空间的位置,从而可以作为人脸识别的依据。选择了其中30个特征脸如下图所示图2.2 特征脸2.2.4 样本投影并识别得到特征脸子空间以后,就要把训练样本和测试样本都投影到特征脸子空间,每幅图像得到一组坐标系数,对应子空间中的一个点。任何一幅图像都可以有这组特征脸线性组合,加权系数就是K-L变换的系数。图2.3 人脸重建2.2.5 选择分类器识别人脸比较直接也比较常用的分类方法是选择与待分类对象距离最近的样本的类别为待分类对象的类别。常用的距离测度有:欧式距离、绝对值距离、明氏距离、马氏距离、余弦距离。有了距离的测度,将待识别的人脸映射到特征空间,寻找距离最

13、小的那一类样本。为了克服单个样本类别的偶然性,增加识别的可靠性,可以选择最近的k个样本,然后把待识别人脸判别为这k个样本中同类样本最多的那个类别,即k近邻判别。实验中使用欧式距离比较待分类特征系数与每个人的特征系数之间的距离。2.3 基于PCA算法人脸识别的matlab实现用matlab语言仿真PCA算法的人脸识别,分为以下几个步骤:2.3.1 读取人脸库allsamples=; % allsample用于存储读取的人脸图像矩阵for i=1:40 for j=1:5 a=imread (strcat (e: ORLs, num2str (i), num2str (j),.pgm); b=a

14、(1:112*92); b=double (b); allsamples= allsamples; b; endend2.3.2 利用生成矩阵求特征值和特征向量samplemean=mean (allsamples);for i=1:200 xmean (i, :) =allsamples (i, :)-samplemean;endsigma=xmean*xmean;v d=eig (sigma);2.3.3 选取阈值提取训练样本特征上面得到的200个特征向量,虽然已经比较小了,但计算量还是比较大。其实不必要保留所有的特征向量,较大特征值对应的特征向量已经能够提供足够多的用于识别的特征。一般是

15、通过计算阈值进一步降低维数,这种方法的具体做法是把特征向量和特征值从大到小排列,选取特征值占总特征值之和的比值大于一定值所对应的特征向量。阈值一般是取0.9。计算公式是。但发现在这里取0.91更好,识别率更高一点。通过程序运行可以发现,阈值选择为0.91时特征值个数减少为75个,就是说很多特征值是很小的,数值小的特征值对应的特征向量对识别只能提供很少的信息。所以通过阈值选择,计算量减少了很多。d1=diag (d);dsort=flipud (d1);vsort=fliplr (v);dsum=sum (dsort);dsum_extract=0;p=0;while (dsum_extract

16、/dsum0.91) p=p+1; dsum_extract=sum (dsort (1: p);endbase = xmean * vsort(:,1:p) * diag(dsort(1:p).(-1/2);allcoor=allsamples*base;2.3.4 选取测试样本进行识别测试样本识别的过程就是把测试图像投影到特征脸子空间,得到一组特征系数,然后按照欧式距离的最小近邻法与训练样本集投影得到的系数匹配,找到距离最小的样本就是识别的结果。但为了克服单个样本的偶然性,这里选择最近的3个样本,然后把待识别人脸判别为这3个样本中同类样本最多的那个类别。a=imread (strcat (

17、e: ORLs, num2str (i), num2str (j),.pgm);b=a (1:10304);b=double (b);tcoor=b*base; for k=1:200 mdist (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=class3 class=cl

18、ass1;elseif class1=class2 class=class1;elseif class2=class3 class=class2;end;2.5 实验结果及分析对于ORL人脸库,选用每人前5幅图像作为训练样本,后5幅图像作为测试样本,训练样本和测试样本总数均为200,阈值选为0.91。程序运行可得识别率为0.885。选取的特征空间的维数是88。PCA算法是基于人脸图像整体特征的人脸识别方法,影响识别率的因素主要有很多,如人脸库的差异,算法的差异,参数的选择,都会产生很大的影响。但现在主要考虑两点因素:(1)阈值的选择,即特征空间的维数;(2)训练样本的数量。下面就看一下选择不同

19、的参数时候他们各自对识别率的影响如表2.1所示。表2.1 阈值及样本数量对识别率的影响每人7幅每人6幅每人5幅每人4幅每人3幅每人2幅每人1幅0.200.35830.36880.32000.35000.36070.34690.32220.400.65000.63120.61500.56670.57140.53750.42500.600.86670.83130.76500.71670.70360.66560.60830.800.93330.89380.86000.80830.76430.73440.64440.850.94170.88750.86000.83330.78570.73750.663

20、90.880.94170.90630.87000.84170.78930.75000.66390.900.94170.90630.88000.84580.78930.75000.67780.920.93330.89380.88000.83330.79640.76250.68060.940.93330.90000.87500.82920.79640.75310.69720.960.93330.89380.88000.82500.78570.74690.6944从上表可以看出当阈值一定时,训练样本数的增加会使识别率提高,大概每人每增加一幅图像,识别率提高4个百分点。在训练样本数一定时,阈值的改变也

21、相应的影响识别率,阈值太小的时候识别率显然很低,大概阈值到0.8以上时,识别率变化不大,这就说明,降低特征矩阵维数不但可以减少计算量,而且基本上不会影响识别率太多。3 附加功能及GUI的设计MATLAB提供了专门的GUI设计工具图形用户界面开发环境(GUIDE),为了便于操作及演示的需要,利用GUIDE设计了可视化界面。另外还增加了诸如图像平滑,图像锐化,灰度化,二值化,膨胀,腐蚀,二级小波分解及应用各种算子进行的边缘检测的功能。“文件”菜单中有“打开”、“保存”、“退出”二级子菜单,分别用于打开,保存处理后的图像和退出界面操作。如图3.1所示图3.1“图像处理”菜单主要是完成一些基本的图像处

22、理功能,其中有“图像平滑”、“图像锐化”、“灰度化”、“二值化”、“小波分解”、“膨胀”、“腐蚀”、“边缘检测”。如下图所示。灰度、二值化、腐蚀,膨胀,边缘检测都比较简单,下面来看一下图像平滑、平滑、和小波分解的实现。如图3.2所示图3.2图像平滑主要有两个作用:一个是消除或减少噪声,改善图像质量;另一个是模糊图像,使图像看起来柔和自然。图像平滑可以在空间域进行,也可以在频域进行。空间域常使用的方法有邻域平均法、中值滤波法、多图像平均法等;频域主要是采用理想低通、巴特沃斯低通等各种滤波器进行低通滤波,来实现平滑处理。这里采用的是邻域平均法如图3.3所示。samplemean=mean (all

23、samples);for i=1:200 xmean (i, :) =allsamples (i, :)-samplemean;endSigma=xmean*xmean;v d=eig (sigma);src_image=getappdata (handles.figure_image,src_image);if isequal(src_image,0) return;else row, colum,z=size (src_image); if isequal (z, 1) for i=2: row-1 for j=2: colum-1pro_image(i,j)=(src_image(i-1

24、,j)/5+src_image(i+1,j)/5+src_image(i,j-1)/5+src_image(i,j+1)/5+src_image(i,j)/5);end end elseif isequal (z, 3) for i=2: row-1 for j=2: colum-1pro_image(i,j,1)=(src_image(i-1,j,1)/5+src_image(i+1,j,1)/5+src_image(i,j-1,1)/5+src_image(i,j+1,1)/5+src_image(i,j,1)/5);pro_image(i,j,2)=(src_image(i-1,j,2)

25、/5+src_image(i+1,j,2)/5+src_image(i,j-1,2)/5+src_image(i,j+1,2)/5+src_image(i,j,2)/5);pro_image(i,j,3)=(src_image(i-1,j,3)/5+src_image(i+1,j,3)/5+src_image(i,j-1,3)/5+src_image(i,j+1,3)/5+src_image(i,j,3)/5);end endend axes (handles.axes_dst); imshow (pro_image); title(平滑后的图像);end图3.3 图像平滑图像锐化主要是加强高

26、频部分,或减弱低频部分。图像的低频成分主要对应于图像中的区域和背景,而高频成分主要对应于图像中的边缘和细节。图像锐化加强了细节和边缘,对图像有去模糊的作用。因为噪声主要分布在高频部分,如果图像中存在噪声,锐化会放大噪声。此处是在空域采用sobel算子进行处理的。如图3.4所示。image_ruihua=getappdata (handles.figure_image,src_image);if isequal (image_ruihua,0) return;elseif isrgb (image_ruihua) errordlg(此处彩色图像能锐化处理,警告,replace);else H=f

27、special (sobel); I=filter2 (H,image_ruihua);axes (handles.axes_dst); Imshow (I); title(锐化图像); setappdata (handles.figure_image,src_image,I);end图3.4 图像锐化小波分解可以将图像分解为具有具有不同分辨率的图像,尺度展开信号分量反映图像的粗略轮廓,而小波展开各信号分量反映图像的细节,并且小波函数的尺度越高,对应信号中越精细的细节。在人脸识别中,人脸库先经过小波变换得到分辨率更低的粗略图像,其特征不会减少,但却可以极大的减少运算量。如图3.5所示。samp

28、lemean=mean (allsamples);for i=1:200 xmean (i, :) =allsamples (i, :)-samplemean;endsigma=xmean*xmean;v d=eig (sigma);B=getappdata (handles.figure_image,src_image);if isequal (B, 0) return; else if isrgb(B)x=rgb2gray(B);elsex=B;endN=1wname=db1;Lo_D, Hi_D = wfilters (wname,d); r, c=size(x); xd=double(

29、x); coef= ; for i=1: Nrow, col=size (xd);for j=1: row tmp1=xd (j, :);cD_mydwt= ;for i=1:1cvl=conv (tmp1, Lo_D);N=length (cvl);M=floor (N/2);i=1: M; dnl (i) =cvl (2*i);cvh=conv (tmp1, Hi_D);N=length (cvh);M=floor (N/2);i=1: M;dnh (i) =cvh(2*i);ca1=dnl;cd1= cD_mydwt, dnh;endx1(j, :) =ca1,cd1;endrow1,col1=size(x1);for k=1:col1tmp2=x1(:, k); cD_dwt2= ; for i=1:1cvl2=conv (tmp2, Lo_D); N=length (cvl2); M=floor (N/2); i=1: M; dnl2 (i) =cvl2 (2*i);cvh2=conv (tmp2, Hi_D);N=length (cvh2);M=floor (N/2);i=1: M;dnh2 (i) =cv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论