1、佳木斯大学学士学位论文佳木斯大学毕业论文基于Matlab的人脸识别系统设计与仿真学 院 信息电子技术专 业电子信息工程班 级11级1班学 籍 号11100540116姓 名 杨 雷指导教师 周经国佳 木 斯 大 学2015年6月10日摘要人脸识别即指利用分析比对人脸视觉特征信息从而达到身份鉴别效果的计算机技术.人脸识别是一项当下十分热门的计算机技术的研究领域,该项技术可以人脸明暗侦测,并且自动调整动态曝光补偿,同时对人脸追踪侦测,并自动调整影像放大;这项技术属于生物特征识别技术的一种,是利用生物体(一般指人)本身的生物特征从而达到区分生物体个体的目的.人脸识别技术目前主要用做身份识别.由于视频
2、监控的飞速普及,使这项应用迫切的需要一种能实现在用户非配合状态下、远距离的进行快速身份识别的技术,以求能在远距离之下快速识别人员身份,从而实现智能预警的功能.最佳的选择无疑是人脸识别技术.采用快速人脸检测识别技术可以从视频监控图象中实时捕获到人脸信息,并与人脸数据库中的已存信息进行实时比对,从而达到快速身份识别的效果。报告利用MATLAB软件来实现人脸信息检测与识别,利用YCbCr空间以及灰度图像来实现人脸的边缘分割, 将真彩图像转换为灰度图像,并根据肤色在YCbCr色度空间上的分布范围,来设定门限阀值,从而实现人脸区域与非人脸区域的分割,通过图像处理等一系列的操作来剔除干扰因素,再通过长宽比
3、和目标面积等方法在图像中定位出人脸区域,经试验,该方法能够排除面部表情、衣着背景、发型等干扰因素,从而定位出人脸区域.关键词:Matlab软件;灰度图像;边缘分割;人脸区域AbstractFace recognition especially use comparative analysis face visual feature information for identification of computer technology。 Face recognition is a hot research field computer technology, face detection,
4、light and shade can be automatically adjusted dynamically exposure compensation, human face tracking detection, automatic adjustment of image magnification; It belongs to the biometric identification technology, it is of organisms (generally refers to a person) individual biological characteristics
5、to distinguish between the organism itself。Face recognition is mainly used for identification。 Because of the video monitoring is fast popularization, many of the video monitoring application is an urgent need to a long distance, the user not cooperate condition of rapid identification technology, i
6、n order 。 Face recognition technology is undoubtedly the best choice, the fast face detection technology to monitor in real-time video image search from face, and with realtime than face database, so as to realize rapid identification。Report using MATLAB software to realize face information detectio
7、n and recognition, using YCbCr space and gray image to realize the face edge segmentation, the true color image is converted to a grayscale image, and according to the color of skin in YCbCr chroma space distribution, to set the threshold threshold, so as to realize the segmentation of face region w
8、ith the face region, through a series of operations such as image processing to eliminate interference factors, and through such means as aspect ratio and the target area locate the face region in the image, the experiment, this method can eliminate facial expressions, clothes, hair background inter
9、ference factors, so as to locate the face region.Keywords:Matlab;Gray image;edge segmentation;face region目录摘要1ABSTRACT2目录3第1章绪论41.1 课题的研究背景、目的及意义41。1.1 课题的研究背景41。1.2 研究目的及意义51。2 本课题的主要内容5第2章图像处理的MATLAB实现62.1 识别系统构成62.2 人脸图像的读取与显示72。3 图像类型的转换72.4 图像增强82.5 灰度图像平滑与锐化处理92。6 边缘检测11第3章人脸识别计算机系统123。1 系统基本构
10、架123.2 人脸检测定位算法123。3 匹配与识别17结论24致谢25参考文献26附录1 人脸识别的MATLAB源程序27附录2 外文参考文献及翻译31第1章 绪论1。1课题的研究背景、目的及意义1。1。1课题的研究背景数字图像处理技术是20世纪60年代发展起来的一门新兴技术。近30多年来,在计算机科技和大规模集成电路技术的迅猛发展、离散数学理论创立和完善,以及工业、军事、医学等方面的应用需求在不断增长,人脸识别技术已经在人机交互、安全验证系统、系统公安(罪犯识别等)、医学、档案管理、信用卡验证、视频会议等方面的巨大应用前景而越来越成为当前模式识别和人工智能领域的一个研究热点。目前,人脸识别
11、技术应用最广泛的地方就是各大公司、商场、政府保密机构的门禁考勤系统.20世纪90年代后期以来,一些商业性的人脸识别技术系统逐渐进入市场.自美国遭遇恐怖分子袭击事件后,这一技术引起了社会各方的广泛关注.由于隐蔽性十分好,该项技术逐渐成为国际反恐及安全防范的重要手段之一。人脸识别技术在中国也有迅猛发展的历史。国家“十一五科技发展规划就将人脸识别技术的研究与发展列入其中,并明确指出“要在生物特征识别技术领域缩小与世界先进水平的差距,开展生物特征识别应用技术研究,开发具有高安全性、低误报率的出入口控制新产品.在这种形势下,国内一些科研院所在人脸识别技术上有了重大发展和突破。如清华大学、中科院计算机所、
12、中科院自动化所等自主研发的人脸识别技术已经达到了国际先进的水平。经过多年的研发探索,在世界各大研究机构的研发人员的共同努力下,人脸识别技术这一领域取得了丰硕的成果,这些研究成果的取得和科技的进步,更进一步推动了人类对人脸识别技术这一高端技术的深入研究。人脸识别技术,顾名思义,指利用采集、分析、比较人脸视觉特征信息来进行身份鉴别的计算机技术.广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。它是人们一直所追求的让机器智能化技术,就是让机器具备和人类一样的思考
13、能力,识别能力以及处理事务的能力.而人脸识别技术的研究就是在这样的背景下发展起来的.1.1。2 研究目的及意义目前,人脸识别技术已经广泛用于军队、政府、社会福利保障、银行、安全防务及电子商务等领域。而我们研究这项技术的目的就是让其更好地服务于人类社会,在这个生活快节奏的前提下,与人方便.例如京沪高铁三站将建立人脸识别系统,即使整容也能被识别。铁路部门发布计划时表示,将在京沪高铁段的天津西站、济南西站、上海虹桥站这三个站点,建立人脸识别系统工程,以此来协助公安部门甄别、抓捕在逃罪犯.利用这个系统,即使作案后的犯罪分子进行整容,也会被识别。研究人脸识别技术,在现实意义上具有重大意义:一是能进一步加
14、强对人类视觉系统本身的认知;二是能够满足人类社会中对人工智能应用的广泛需要。同时人脸识别技术又有自然性、无侵犯性、成本低、智能化等几个显著优势。人脸识别技术的研究也有重大的学术价值.由于人类有非常复杂的细节变化,例如眼镜、胡须、发型等附属物的干扰,这就给该项技术带来了巨大挑战。成功构造出人脸识别系统将为解决其他与之类似的复杂问题提供重要的启示.1。2 本课题的主要内容本次课题主要讲述了人脸识别中应用Matlab对图像进行预处理,通过人脸检测、人脸跟踪、人脸比对来实现基于Matlab的人脸识别系统的仿真.利用Matlab实现一个集多种预处理方法于一体的通用的人脸识别仿真系统,将该系统作为图像预处
15、理模块嵌入在人脸识别系统中,并利用灰度图像的直方图比对来实现人脸图像的识别判断.文中在研究人脸识别技术的仿真过程中,主要涉及了YCbCr空间、灰度图像转换、噪声消除、图像填孔、图像重构、人脸区域确定、边缘检测等技术。通过多次实验并比对各个算法和技术的优缺点,有效地实现了基于Matlab的人脸识别系统的设计与仿真,并达到了预期目标和效果.第2章 图像处理的Matlab实现2。1 识别系统构成人脸识别技术系统主要可分为四个组成部分,分别为:人脸图像采集及检测、人脸图像预处理、人脸图像特征提取以及匹配与识别。一般人脸识别系统构架如图2。1所示:人脸图像采集及检测人脸图像预处理人脸图像特征提取匹配与识
16、别图2。1 人脸识别系统构架(1)人脸图像采集及检测人脸图像采集:人脸图像信息都能通过摄像镜头采集记录下来,比如不同位置、不同表情、静态图像、动态图像等方面都能得到很好的采集。当目标在采集设备拍摄的范围内时,采集设备会自动搜索并采集目标的人脸图像;人脸检测:在实际中主要应用于人脸识别的预处理,即在采集到的图像中准确定位出人脸的位置。人脸图像中包含的模式特征非常丰富,如模板特征、结构特征、直方图特征、颜色特征等.人脸检测就是挑出这其中有用的特征信息,并利用这些特征来实现人脸识别。(2)人脸图像预处理人脸图像预处理:所谓人脸图像预处理,就是基于人脸检测结果,并对人脸图像进行处理,最终服务于人脸特征
17、提取的过程.系统获取的原始人脸图像由于受到随机干扰和各种条件的限制,通常不能直接使用,所以必须在人脸图像处理过程中要先对它进行灰度图像、噪声过滤等图像预处理.而对于人脸图像,预处理的过程主要涉及灰度变换、人脸图像的光线补偿、几何校正、直方图均衡化、归一化、滤波以及锐化等。(3)人脸图像特征提取人脸图像特征提取:人脸识别系统通常会使用的特征分为视觉特征、人脸图像变换系数特征、像素统计特征以及人脸图像代数特征等。所谓人脸特征提取即针对人脸的某些特征进行的提取.人脸特征提取,也被称为人脸表征,是对人脸特征进行建模的过程。人脸特征提取的方法总结起来可以分为两大类:一种是基于统计学习或代数特征的表征方法
18、;另一种是基于知识的表征方法。(4)匹配与识别人脸图像的匹配与识别:将提取到的图像特征数据与数据库中已存的特征模板进行搜索匹配,设定一个阈值,当相似度超过这一阈值时,则把匹配所得到的结果输出.人脸识别就是将待识别的人脸特征与已存储的人脸特征模板进行比对,依据相似度对该人脸图像的身份信息进行判别。这一过程主要分为两步:第一步是确认,就是一对一进行图像比较的过程,第二步是辨认,就是一对多进行图像匹配对比的过程。2.2 人脸图像的读取与显示人脸图像的读取和显示可通过imread()和imshow()指令来实现;图像的输出可以用imwrite()函数,很方便快捷的将图像输出到电脑硬盘上;另外还可以通过
19、imcrop()、imrisize()、imrotate()等函数来实现图像的裁剪、缩放与旋转等功能.2。3 图像类型的转换Matlab支持多种图像类型,在很多图像操作处理中,对图像的类型有要求,所以就涉及到了对图像的类型进行转换。Matlab7。0图像处理工具箱包含了不同图像类型之间相互转换的大量函数,如rgb2gray()可以将颜色映像表或RGB图像转换为灰度图像,通过mat2gray()函数能实现矩阵转换为灰度图像的功能。在类型转换的处理过程中,我们还会经常遇到数据类型不匹配的问题,针对这一问题,Matlab7。0工具箱中为我们提供了各种数据类型之间相互转换的函数,例如double()函
20、数的功能就是将数据转换为双精度数据类型。因为后续的图像增强、边缘检测等都是针对灰度图像进行的,而原图像是RGB图像,所以我们首先要对原图像进行类型转换。实现过程代码如下:i=imread(F:2.JPG);j=rgb2gray(i);imshow(j);imwrite(j,F:2。tif)转换后的灰度图像如图2.2所示:图2。2 灰度图像2。4 图像增强图像增强的目的是改善图像的视觉效果,或者使图像更适合于人或机器进行分析处理。通过图像增强,可以减少图像中的噪声,提高目标与背景的对比度,也可以强调或抑制图像中的某些细节。例如,消除照片中的划痕,改善光照不均匀图像,突出目标的边缘等。实现图像的灰
21、度转换的方法有很多,其中最常用到的是直方图变换的方法,即直方图的均衡化。该种方法是使输出图像直方图近似服从均匀分布的变换方法.Matlab7。0图像处理工具箱中为我们提供了图像直方图均衡化的函数histeq(),我们也可以通过imhist()函数计算和显示图像的直方图.通过原图与直方图均衡化后图像对比可以发现,图像变得更加清晰,并且均衡化后的直方图相对于原直方图的形状更为理想。实现过程代码如下:i=imread(F:2。tif);j=histeq(i);imshow(j);figure,subplot(1,2,1),imhist(i);subplot(1,2,2),imhist(j)执行后得到
22、的图像如下所示:图2。3 均衡化后的灰度图像 图2。4 均衡化前后的直方图对比图2。5 灰度图像平滑与锐化处理平滑滤波器的作用是模糊图像或者消除噪声,Matlab7。0图像处理工具箱为我们提供了wiener2()来实现对图像噪声的自适应滤波,medfilter2()函数用来实现中值滤波。在本文案例中,为使滤波效果更加明显,我们预先为人脸图像人为增加噪声,然后用自适应滤波方法对图像进行滤波处理。锐化处理的作用是用来强调图像中被模糊的细节,在本案例中,采用了预定义高斯滤波器的方法对图像进行锐化滤波.实现过程的代码如下:i=imread(F:2.tif);j=imnoise(i,gaussian,0
23、,0.02);subplot(1,2,1),imshow(j);j1=wiener2(j);subplot(1,2,2),imshow(j1);h=fspecial(gaussian,2,0。05);j2=imfilter(i,h);figure,subplot(1,2,1),imshow(i)subplot(1,2,2),imshow(j2)执行上述代码后得到的图像如下所示:图2.5 平滑滤波效果图图2。6 锐化滤波效果图图2。5中,第一个为加入噪声的图像,第二个为滤波后的图像;图2。6中,第一个为原灰度图像,第二个为锐化后的图像.2。6 边缘检测数字图像的边缘检测是目标区域识别、图像分割、
24、区域形状提取等图像分析过程中十分重要的基础步骤,也是人脸图像识别中用来实现提取图像特征的一个重要步骤。通过计算一阶导数或二阶导数可以快捷地检测出图像中每个像素在其邻域内的灰度变化,从而检测出边缘.常用的有梯度算子,Roberts算子,canny算子,Log算子等。Matlab7。0工具箱中为我们提供的edge()函数可以用来进行边缘检测,同时也可以根据案例所需要的选择合适的算子及其参数.Matlab7。0图像处理工具箱中提供了edge()函数来实现图像边缘检测,还有各种方法算子供我们选择,在本案例中采用了canny算子来进行图像边缘检测,程序代码如下:i=imread(F:2.tif);j=e
25、dge(i,canny,0。04,0.25,1.5);imshow(j)执行上述程序后得到如下图像: 图2.1 原灰度图像 图2。7 边缘检测效果图第3章 人脸识别计算机系统3。1 系统基本构架人脸识别是一个十分复杂的过程,一般人脸识别的计算机系统流程如图3.1所示。它包括几个步骤:进行图像采集,对于采集到的图像,首先进行人脸检测,得出有无人脸的结果;然后进行人脸定位,找出人脸的位置并提取出来。对于人脸定位,在输入的是图像序列时,一般也被称为人脸跟踪。通常检测和定位同步进行。借助人脸描述对提取出来的人脸就可以进行人脸识别,即通过提取人脸特征来确定其身份。开 始图像采集检测定位是否定位成功是否处
26、理成功图像预处理人脸识别是否识别成功识别结果结 束是是是图3.1 基本框架图3。2 人脸检测定位算法人脸检测定位算法可分为两大类:一类是基于隐式特征的方法;另一类是基于显式特征的方法所谓的显式特征,即指人类肉眼可以直观看到的特征,如肤色、脸部结构、脸部轮廓等。基于显式特征的方法是指通过肉眼的观察,总结概括出人脸区域区别于“非人脸区域的特征,根据与被检测区域的对比,即是否满足这些人脸特征,从而判定该区域包含人脸与否.根据所选择的“人脸特征”,基于显式特征的方法可以分为三类:模板匹配的方法、基于肤色模型的方法、基于先验知识的方法.以上三类方法的优缺点概括见表31:表31 优缺点对比检测方法优点缺点
27、模板匹配具有较强的直观性和较好的适应性对面部表情的变换敏感;对于模板的选择、参数的确定很困难肤色模型检测速度相对较快阳光、背景光线等会使人脸区域被分割,导致被漏检先验知识的方法对于复杂图像中的人脸检测有较大优势依赖于先验知识;工作量较大,运算时间较长基于隐式特征的方法就是将人脸区域看成一类模式,通过“人脸、“非人脸”样本、构造分类器的使用,判别图像中全部可能区域是否符合“人脸模式”的一类方法来实现人脸的检测。这类方法可以分为:神经网络法、特征脸法、积分图像法、支持向量法。以上四种方法的优缺点比较见表32:表3-2 优缺点对比表检测方法优点缺点神经网络法效率较高,错误报警数较少,网络监测速度较快
28、多样本训练所耗的费时间多,网络监测错误报警数较多本征脸法能抽象人脸全部信息,运算时间相对较短通过模板测效率较低,多模板虽然增加了效率,但是检测时间较长积分图像分析法检测速度较快,满足实时检测的要求,检测效率相对较高错误报警数与检测率成反比支撑向量法具有更好的泛化能力“非人脸的复杂造成支持向量数目较多,导致运算复杂度变大运用matlab软件仿真进行人脸检测定位实例:人脸检测定位程序:% Reading of a RGB image原始图像i=imread(F:2。JPG);I=rgb2gray(i);BW=im2bw(I);figure,imshow(BW)%灰度图像及均衡化灰度图像n1 n2=
29、size(BW);r=floor(n1/10);c=floor(n2/10);x1=1;x2=r;s=r*c;for i=1:10 y1=1;y2=c;for j=1:10if (y2mx (BB2(1,k)/BB2(1,k+1)1.8 mx=p; j=k;endendfigure,imshow(I);hold on;rectangle(Position,BB2(1,j2),BB2(1,j1),BB2(1,j),BB2(1,j),EdgeColor,r )1.原始图片 2.灰度图片 3。均衡化灰度图片 4。人脸定位3.3 匹配与识别人脸人别系统的最后一步是人脸识别。人脸识别,即通过对所采集到的
30、人脸图像进行一系列处理,提取待识别人脸图像的特征信息,通过与已存人脸数据库信息进行匹配识别,确定待识别人脸图像的基本信息。运行如下代码:function varargout = faceCore(varargin) FACECORE Mfile for faceCore.fig FACECORE, by itself, creates a new FACECORE or raises the existing% singleton。 H = FACECORE returns the handle to a new FACECORE or the handle to% the existing
31、singleton。% FACECORE(CALLBACK,hObject,eventData,handles,。.。) calls the local function named CALLBACK in FACECORE.M with the given input arguments. FACECORE(Property,Value,.。.) creates a new FACECORE or raises the existing singleton。 Starting from the left, property value pairs are applied to the GUI
32、 before faceCore_OpeningFunction gets called。 An unrecognized property name or invalid value makes property application% stop。 All inputs are passed to faceCore_OpeningFcn via varargin。% *See GUI Options on GUIDEs Tools menu。 Choose ”GUI allows only one instance to run (singleton)”。% See also: GUIDE
33、, GUIDATA, GUIHANDLES Copyright 2002-2003 The MathWorks, Inc。 Edit the above text to modify the response to help faceCore Last Modified by GUIDE v2.5 28-May2009 10:21:26% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, 。.。 gui_Singleton, gui_Singleton
34、, 。. gui_OpeningFcn, faceCore_OpeningFcn, 。. gui_OutputFcn, faceCore_OutputFcn, .。 gui_LayoutFcn, , . gui_Callback, );if nargin ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);e
35、nd End initialization code - DO NOT EDIT Executes just before faceCore is made visible。function faceCore_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn。% hObject handle to figure eventdata reserved - to be defined in a future version of MATLAB% han
36、dles structure with handles and user data (see GUIDATA) varargin command line arguments to faceCore (see VARARGIN) Choose default command line output for faceCorehandles。output = hObject; Update handles structureguidata(hObject, handles); UIWAIT makes faceCore wait for user response (see UIRESUME)%
37、uiwait(handles。figure1); Outputs from this function are returned to the command line。function varargout = faceCore_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure eventdata reserved to be defined in a future version o
38、f MATLAB handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout1 = handles。output;% Executes on button press in pushbutton1。function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO) eventd
39、ata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global TrainDatabasePath ;TrainDatabasePath = uigetdir(strcat(matlabroot,work), 训练库路径选择.。 );% - Executes on button press in pushbutton2。function pushbutton2_Callback(hObject, eventda
40、ta, handles) hObject handle to pushbutton2 (see GCBO) eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)global TestDatabasePath;TestDatabasePath = uigetdir(strcat(matlabroot,work), 测试库路径选择。); Executes on button press in pushbutto
41、n3。function pushbutton3_Callback(hObject, eventdata, handles) hObject handle to pushbutton3 (see GCBO)% eventdata reserved to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)filename,pathname=uigetfile(.jpg;*.bmp,);str=pathname filename;im=imread(st
42、r);%axes(handles.axes1);imshow(im);% - Executes on button press in pushbutton4。function pushbutton4_Callback(hObject, eventdata, handles) hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDA
43、TA)global TrainDatabasePath ;global TestDatabasePath;global T;T = CreateDatabase(TrainDatabasePath);m V_PCA V_Fisher ProjectedImages_Fisher = FisherfaceCore(T); - Executes on button press in pushbutton5.function pushbutton9_Callback(hObject, eventdata, handles) hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB handles structure with handles and user data (see GUIDATA)global im;filename,pathname=uigetfile(。jpg;*.bmp,选择测试图片.);str=pathname filename;im=imread(str);axes(handles。axes1);imshow(im);% Execu