文档库 最新最全的文档下载
当前位置:文档库 › 基于matlab的人脸识别系统设计与仿真本科毕业论文

基于matlab的人脸识别系统设计与仿真本科毕业论文

大学毕业论文

基于Matlab的人脸识别系统设计与仿真

摘要

人脸识别即指利用分析比对人脸视觉特征信息从而达到身份鉴别效果的计算机技术。人脸识别是一项当下十分热门的计算机技术的研究领域,该项技术可以人脸明暗侦测,并且自动调整动态曝光补偿,同时对人脸追踪侦测,并自动调整影像放大;这项技术属于生物特征识别技术的一种,是利用生物体(一般指人)本身的生物特征从而达到区分生物体个体的目的。

人脸识别技术目前主要用做身份识别。由于视频监控的飞速普及,使这项应用迫切的需要一种能实现在用户非配合状态下、远距离的进行快速身份识别的技术,以求能在远距离之下快速识别人员身份,从而实现智能预警的功能。最佳的选择无疑是人脸识别技术。采用快速人脸检测识别技术可以从视频监控图象中实时捕获到人脸信息,并与人脸数据库中的已存信息进行实时比对,从而达到快速身份识别的效果。

报告利用MATLAB软件来实现人脸信息检测与识别,利用YCbCr空间以及灰度图像来实现人脸的边缘分割, 将真彩图像转换为灰度图像,并根据肤色在YCbCr色度空间上的分布范围,来设定门限阀值,从而实现人脸区域与非人脸区域的分割,通过图像处理等一系列的操作来剔除干扰因素,再通过长宽比和目标面积等方法在图像中定位出人脸区域,经试验,该方法能够排除面部表情、衣着背景、发型等干扰因素,从而定位出人脸区域。

关键词:Matlab软件;灰度图像;边缘分割;人脸区域

Abstract

Face 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, 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 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, in 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 real-time than face database, so as to realize rapid identification.

Report using MATLAB software to realize face information detection 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 with 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 interference factors, so as to locate the face region. Keywords:Matlab;Gray image;edge segmentation;face region

目录

摘要 (1)

ABSTRACT (2)

目录 (3)

第1章绪论 (4)

1.1课题的研究背景、目的及意义 (4)

1.1.1 课题的研究背景 (4)

1.1.2 研究目的及意义 (5)

1.2本课题的主要内容 (5)

第2章图像处理的MATLAB实现 (6)

2.1识别系统构成 (6)

2.2人脸图像的读取与显示 (7)

2.3图像类型的转换 (7)

2.4图像增强 (8)

2.5灰度图像平滑与锐化处理 (9)

2.6边缘检测 (11)

第3章人脸识别计算机系统 (12)

3.1系统基本构架 (12)

3.2人脸检测定位算法 (12)

3.3匹配与识别 (17)

结论 (24)

致谢 (25)

参考文献 (26)

附录1 人脸识别的MATLAB源程序 (27)

附录2 外文参考文献及翻译 (31)

第1章绪论

1.1 课题的研究背景、目的及意义

1.1.1 课题的研究背景

数字图像处理技术是20世纪60年代发展起来的一门新兴技术。近30多年来,在计算机科技和大规模集成电路技术的迅猛发展、离散数学理论创立和完善,以及工业、军事、医学等方面的应用需求在不断增长,人脸识别技术已经在人机交互、安全验证系统、系统公安(罪犯识别等)、医学、档案管理、信用卡验证、视频会议等方面的巨大应用前景而越来越成为当前模式识别和人工智能领域的一个研究热点。目前,人脸识别技术应用最广泛的地方就是各大公司、商场、政府保密机构的门禁考勤系统。

20世纪90年代后期以来,一些商业性的人脸识别技术系统逐渐进入市场。自美国遭遇恐怖分子袭击事件后,这一技术引起了社会各方的广泛关注。由于隐蔽性十分好,该项技术逐渐成为国际反恐及安全防范的重要手段之一。

人脸识别技术在中国也有迅猛发展的历史。国家“十一五”科技发展规划就将人脸识别技术的研究与发展列入其中,并明确指出“要在生物特征识别技术领域缩小与世界先进水平的差距,开展生物特征识别应用技术研究,开发具有高安全性、低误报率的出入口控制新产品。”在这种形势下,国内一些科研院所在人脸识别技术上有了重大发展和突破。如清华大学、中科院计算机所、中科院自动化所等自主研发的人脸识别技术已经达到了国际先进的水平。

经过多年的研发探索,在世界各大研究机构的研发人员的共同努力下,人脸识别技术这一领域取得了丰硕的成果,这些研究成果的取得和科技的进步,更进一步推动了人类对人脸识别技术这一高端技术的深入研究。

人脸识别技术,顾名思义,指利用采集、分析、比较人脸视觉特征信息来进行身份鉴别的计算机技术。广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系

统。它是人们一直所追求的让机器智能化技术,就是让机器具备和人类一样的思考能力,识别能力以及处理事务的能力。而人脸识别技术的研究就是在这样的背景下发展起来的。

1.1.2 研究目的及意义

目前,人脸识别技术已经广泛用于军队、政府、社会福利保障、银行、安全防务及电子商务等领域。而我们研究这项技术的目的就是让其更好地服务于人类社会,在这个生活快节奏的前提下,与人方便。例如京沪高铁三站将建立人脸识别系统,即使整容也能被识别。铁路部门发布计划时表示,将在京沪高铁段的天津西站、济南西站、上海虹桥站这三个站点,建立人脸识别系统工程,以此来协助公安部门甄别、抓捕在逃罪犯。利用这个系统,即使作案后的犯罪分子进行整容,也会被识别。

研究人脸识别技术,在现实意义上具有重大意义:一是能进一步加强对人类视觉系统本身的认知;二是能够满足人类社会中对人工智能应用的广泛需要。同时人脸识别技术又有自然性、无侵犯性、成本低、智能化等几个显著优势。人脸识别技术的研究也有重大的学术价值。由于人类有非常复杂的细节变化,例如眼镜、胡须、发型等附属物的干扰,这就给该项技术带来了巨大挑战。成功构造出人脸识别系统将为解决其他与之类似的复杂问题提供重要的启示。

1.2 本课题的主要内容

本次课题主要讲述了人脸识别中应用Matlab对图像进行预处理,通过人脸检测、人脸跟踪、人脸比对来实现基于Matlab的人脸识别系统的仿真。利用Matlab实现一个集多种预处理方法于一体的通用的人脸识别仿真系统,将该系统作为图像预处理模块嵌入在人脸识别系统中,并利用灰度图像的直方图比对来实现人脸图像的识别判断。

文中在研究人脸识别技术的仿真过程中,主要涉及了YCbCr空间、灰度图像转换、噪声消除、图像填孔、图像重构、人脸区域确定、边缘检测等技术。通过多次实验并比对各个算法和技术的优缺点,有效地实现了基于Matlab的人脸识别系统的设计与仿真,并达到了预期目标和效果。

第2章图像处理的Matlab实现

2.1 识别系统构成

人脸识别技术系统主要可分为四个组成部分,分别为:人脸图像采集及检测、人脸图像预处理、人脸图像特征提取以及匹配与识别。一般人脸识别系统构架如图2.1所示:

图2.1 人脸识别系统构架

(1)人脸图像采集及检测人脸图像采集:人脸图像信息都能通过摄像镜头采集记录下来,比如不同位置、不同表情、静态图像、动态图像等方面都能得到很好的采集。当目标在采集设备拍摄的范围内时,采集设备会自动搜索并采集目标的人脸图像;人脸检测:在实际中主要应用于人脸识别的预处理,即在采集到的图像中准确定位出人脸的位置。人脸图像中包含的模式特征非常丰富,如模板特征、结构特征、直方图特征、颜色特征等。人脸检测就是挑出这其中有用的特征信息,并利用这些特征来实现人脸识别。

(2)人脸图像预处理人脸图像预处理:所谓人脸图像预处理,就是基于人脸检测结果,并对人脸图像进行处理,最终服务于人脸特征提取的过程。系统获取的原始人脸图像由于受到随机干扰和各种条件的限制,通常不能直接使用,所以必须在人脸图像处理过程中要先对它进行灰度图像、噪声过滤等图像预处理。而对于人脸图像,预处理的过程主要涉及灰度变换、人脸图像的光线补偿、几何校正、直方图均衡化、归一化、滤波以及锐化等。

(3)人脸图像特征提取人脸图像特征提取:人脸识别系统通常会使用的特征分为视觉特征、人脸图像变换系数特征、像素统计特征以及人脸图像代数特征等。所谓人脸特征提取即针对人脸的某些特征进行的提取。人脸特征提取,也被称为人脸表征,是对人脸特征进行建模的过程。人脸特征提取的方法总结起来

可以分为两大类:一种是基于统计学习或代数特征的表征方法;另一种是基于知识的表征方法。

(4)匹配与识别人脸图像的匹配与识别:将提取到的图像特征数据与数据库中已存的特征模板进行搜索匹配,设定一个阈值,当相似度超过这一阈值时,则把匹配所得到的结果输出。人脸识别就是将待识别的人脸特征与已存储的人脸特征模板进行比对,依据相似度对该人脸图像的身份信息进行判别。这一过程主要分为两步:第一步是确认,就是一对一进行图像比较的过程,第二步是辨认,就是一对多进行图像匹配对比的过程。

2.2 人脸图像的读取与显示

人脸图像的读取和显示可通过imread( )和imshow( )指令来实现;图像的输出可以用imwrite( )函数,很方便快捷的将图像输出到电脑硬盘上;另外还可以通过imcrop( )、imrisize( )、imrotate( )等函数来实现图像的裁剪、缩放与旋转等功能。

2.3 图像类型的转换

Matlab支持多种图像类型,在很多图像操作处理中,对图像的类型有要求,所以就涉及到了对图像的类型进行转换。Matlab7.0图像处理工具箱包含了不同图像类型之间相互转换的大量函数,如rgb2gray()可以将颜色映像表或RGB图像转换为灰度图像,通过mat2gray()函数能实现矩阵转换为灰度图像的功能。在类型转换的处理过程中,我们还会经常遇到数据类型不匹配的问题,针对这一问题,Matlab7.0工具箱中为我们提供了各种数据类型之间相互转换的函数,例如double()函数的功能就是将数据转换为双精度数据类型。

因为后续的图像增强、边缘检测等都是针对灰度图像进行的,而原图像是RGB 图像,所以我们首先要对原图像进行类型转换。实现过程代码如下:

i=imread('F:\2.JPG');j=rgb2gray(i);

imshow(j);imwrite(j,'F:\2.tif')

转换后的灰度图像如图2.2所示:

图2.2 灰度图像

2.4 图像增强

图像增强的目的是改善图像的视觉效果,或者使图像更适合于人或机器进行分析处理。通过图像增强,可以减少图像中的噪声,提高目标与背景的对比度,也可以强调或抑制图像中的某些细节。例如,消除照片中的划痕,改善光照不均匀图像,突出目标的边缘等。

实现图像的灰度转换的方法有很多,其中最常用到的是直方图变换的方法,即直方图的均衡化。该种方法是使输出图像直方图近似服从均匀分布的变换方法。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)

执行后得到的图像如下所示:

图2.3 均衡化后的灰度图像图2.4 均衡化前后的直方图对比图2.5 灰度图像平滑与锐化处理

平滑滤波器的作用是模糊图像或者消除噪声,Matlab7.0图像处理工具箱为我们提供了wiener2()来实现对图像噪声的自适应滤波,medfilter2()函数用来实现中值滤波。在本文案例中,为使滤波效果更加明显,我们预先为人脸图像人为增加噪声,然后用自适应滤波方法对图像进行滤波处理。锐化处理的作用是用来强调图像中被模糊的细节,在本案例中,采用了预定义高斯滤波器的方法对图像进行锐化滤波。实现过程的代码如下:

i=imread('F:\2.tif');

j=imnoise(i,'gaussian',0,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 边缘检测

数字图像的边缘检测是目标区域识别、图像分割、区域形状提取等图像分析过程中十分重要的基础步骤,也是人脸图像识别中用来实现提取图像特征的一个重要步骤。通过计算一阶导数或二阶导数可以快捷地检测出图像中每个像素在其邻域内的灰度变化,从而检测出边缘。常用的有梯度算子, ,Roberts算子,canny 算子,Log算子等。Matlab7.0工具箱中为我们提供的edge()函数可以用来进行边缘检测,同时也可以根据案例所需要的选择合适的算子及其参数。

Matlab7.0图像处理工具箱中提供了edge()函数来实现图像边缘检测,还有各种方法算子供我们选择,在本案例中采用了canny算子来进行图像边缘检测,程序代码如下:

i=imread('F:\2.tif');

j=edge(i,'canny',[0.04,0.25],1.5);

imshow(j)

执行上述程序后得到如下图像:

图2.1 原灰度图像图2.7 边缘检测效果图

第3章人脸识别计算机系统

3.1 系统基本构架

人脸识别是一个十分复杂的过程,一般人脸识别的计算机系统流程如图3.1所示。它包括几个步骤:进行图像采集,对于采集到的图像,首先进行人脸检测,得出有无人脸的结果;然后进行人脸定位,找出人脸的位置并提取出来。对于人脸定位,在输入的是图像序列时,一般也被称为人脸跟踪。通常检测和定位同步进行。借助人脸描述对提取出来的人脸就可以进行人脸识别,即通过提取人脸特征来确定其身份。

图3.1 基本框架图

3.2 人脸检测定位算法

人脸检测定位算法可分为两大类:一类是基于隐式特征的方法;另一类是基于显式特征的方法

所谓的显式特征,即指人类肉眼可以直观看到的特征,如肤色、脸部结构、脸部轮廓等。基于显式特征的方法是指通过肉眼的观察,总结概括出人脸区域区

别于“非人脸”区域的特征,根据与被检测区域的对比,即是否满足这些人脸特征,从而判定该区域包含人脸与否。根据所选择的“人脸特征”,基于显式特征的方法可以分为三类:模板匹配的方法、基于肤色模型的方法、基于先验知识的方法。

以上三类方法的优缺点概括见表3-1:

表3-1 优缺点对比

基于隐式特征的方法就是将人脸区域看成一类模式,通过“人脸”、“非人脸”样本、构造分类器的使用,判别图像中全部可能区域是否符合“人脸模式”的一类方法来实现人脸的检测。这类方法可以分为:神经网络法、特征脸法、积分图像法、支持向量法。

以上四种方法的优缺点比较见表3-2:

表3-2 优缺点对比表

运用matlab软件仿真进行人脸检测定位实例:

人脸检测定位程序:

%%%%% Reading of a RGB image原始图像

i=imread('F:\2.JPG');

I=rgb2gray(i);

BW=im2bw(I);

figure,imshow(BW) %%%%%%%%%%%%%%%%%%%%灰度图像及均衡化灰度图像

[n1 n2]=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:10

if (y2<=c | y2>=9*c) | (x1==1 | x2==r*10) loc=find(BW(x1:x2, y1:y2)==0);

[o p]=size(loc);

pr=o*100/s;

if pr<=100

BW(x1:x2, y1:y2)=0;

r1=x1;r2=x2;s1=y1;s2=y2;

pr1=0;

end

imshow(BW);

end

y1=y1+c;

y2=y2+c;

end

x1=x1+r;

x2=x2+r;

end

figure,imshow(BW) %%%%%%%%%%%%%%%%%%人脸定位%%%%%%%%%%%%%%%%%% %%%%%

L = bwlabel(BW,8);

BB = regionprops(L, 'BoundingBox');

BB1=struct2cell(BB);

BB2=cell2mat(BB1);

[s1 s2]=size(BB2);

mx=0;

for k=3:4:s2-1

p=BB2(1,k)*BB2(1,k+1);

if p>mx & (BB2(1,k)/BB2(1,k+1))<1.8

mx=p;

j=k;

end

end

figure,imshow(I);

hold on;

rectangle('Position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j)],'Edg eColor','r' )

1.原始图片

2.灰度图片

3.均衡化灰度图片

4.人脸定位

3.3 匹配与识别

人脸人别系统的最后一步是人脸识别。人脸识别,即通过对所采集到的人脸图像进行一系列处理,提取待识别人脸图像的特征信息,通过与已存人脸数据库信息进行匹配识别,确定待识别人脸图像的基本信息。运行如下代码:function varargout = faceCore(varargin)

% FACECORE M-file 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 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 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 GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, 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-May-2009 10:21:26

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @faceCore_OpeningFcn, ...

'gui_OutputFcn', @faceCore_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

% 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 % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to faceCore (see VARARGIN)

% Choose default command line output for faceCore

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes faceCore wait for user response (see UIRESUME)

% 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 of MATLAB % handles structure with handles and user data (see GUIDATA)

相关文档
相关文档 最新文档