您的当前位置:首页正文

(完整版)基于matlab的人脸识别系统设计与仿真毕业论文

来源:一二三四网


佳木斯大学毕业论文

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

学 院 信息电子技术 专 业 电子信息工程 班 级 11级1班 姓 名 杨 雷 指导教师 周经国

佳 木 斯 大 学

2015年6月10日

摘要

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

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

报告利用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 本课题的主要内容 ............................................ 6 第2章 图像处理的MATLAB实现 ...................................... 7 2.1 识别系统构成 ................................................ 7 2.2 人脸图像的读取与显示 ........................................ 8 2.3 图像类型的转换 .............................................. 8 2.4 图像增强 .................................................... 9 2.5 灰度图像平滑与锐化处理 ..................................... 11

2.6 边缘检测 ................................................... 13 第3章 人脸识别计算机系统 ........................................ 14 3.1 系统基本构架 ............................................... 14 3.2 人脸检测定位算法 ........................................... 15 3.3 匹配与识别 ................................................. 20 结论 ............................................................. 28 致谢 ............................................................. 29 参考文献 ......................................................... 30 附录1 人脸识别的MATLAB源程序 .................................... 31 附录2 外文参考文献及翻译 ......................................... 35

第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)],'EdgeColor','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

% 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}] varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

=

gui_mainfcn(gui_State,

% 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) % Get default command line output from handles structure varargout{1} = handles.output;

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO)

% eventdata 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, eventdata, 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 pushbutton3.

%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(str); %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 GUIDATA) 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);

% --- Executes on button press in pushbutton6.

function pushbutton6_Callback(hObject, eventdata, handles) % hObject handle to pushbutton6 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) %T = CreateDatabase(TrainDatabasePath); global T; global im;

global TrainDatabasePath ;

[m V_PCA V_Fisher ProjectedImages_Fisher] = FisherfaceCore(T); OutputName

=

Recognition(im,

m,

V_PCA,

V_Fisher,

ProjectedImages_Fisher);

SelectedImage = strcat(TrainDatabasePath,'\\',OutputName); SelectedImage = imread(SelectedImage); axes(handles.axes2); imshow(SelectedImage);

%title('Equivalent Image');

% --- Executes on button press in pushbutton7.

function pushbutton7_Callback(hObject, eventdata, handles) % hObject handle to pushbutton7 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) clear all; clc

close(gcf);

执行上述代码后效果如下图所示:

如上图所示,当我们选择待识别照片后,点击图像匹配,可以快速匹

配到与该测试图像特征信息相符合的训练库中的人脸图像,效果图如下:

结论

图像是人类日常生活和工作中获取和交换信息的重要来源,人脸图像的识别技术已经应用到了生活中的方方面面。

基于Matlab的人脸识别系统的仿真的研究很有意义。目前到处可见摄像头,监控录像,这些的普及,使人脸识别具有重大商业价值。在本文图像处理时,用到如灰度变化、格式转换和滤波锐化等基本方法来实现图像处理。通过对一些算法,方法的比较,选择了比较合理的方法进行图像预处理。

在比较人脸识别的几种方法后,我们最终选择了通过人脸图像的直方

图差值进行比较从而实现了人脸识别。事实证明,这种方法对人脸能更好的分类,但其对于人脸图像的像素质量等要求较高,而我们只是采用Orl标准的人脸数据库中的图像完成测试,因此可以得到较高的识别率。

在对大量参考文献资料的阅读的基础上,本设计对基于Matlab的人脸识别这一技术做了详细的综述。

然而,在现实生活中由于受到采集距离、光线明暗、人脸角度等因素的影响,采集到的人脸图像与人脸库进行匹配识别时,识别率很难可以达到测试要求。因此,在实际应用时还要根据具体情况进行分析。

本次基于Matlab的人脸识别系统的仿真设计到这里就结束了,在设计过程中,虽然对几种方法进行了对比选择,但是还是有很多不足,可能很多问题想的不够充分,设计中有些数据可能会有偏差,因此在今后的学习生活中要更加努力,不断地提高自己的科学文化水平和各方面素质。

致谢

在佳木斯大学的学习生活即将结束,现在想想对母校还是有很多留恋。在做毕业设计的这段时间里,我的老师、同学们对我给予了非常多的帮助,在这里,谨向他们致以最真诚的感谢!

尤为感谢的,是我的导师周经国老师。周老师学识渊博,思想敏锐,洞察力超强,治学态度严谨,平易近人。在我做毕业设计的这段时间里,常常会被一些难题所困扰,弄得焦头烂额。是周老师教导我,激励我,对我给予了细心地指导和悉心的教诲,让我摆脱困境,重新找回自信心。

同时,我也要感谢教导过我的所有老师。是你们毫无保留的指导和细致耐心的帮助,我才能顺利完成这次毕业设计。

最后,我还要感谢身边的朋友和同学,在大学生活的四年里,我在你

们的陪伴中成长,谢谢你们在做毕业设计这段日子里给予我的帮助。

真心的感谢所有在生活、学习中帮助过我的良师益友,谢谢你们!

参考文献

[1] 何东健,耿楠,张义宽.数字图像处理(第二版).西安电子科技大学出版社,2008.5:1-325 [2] 于万波.基于MATLAB的图像处理.清华大学出版社,2008.3:1-218 [3] 陈书海,傅录祥.实用数字图像处理.北京科学出版社,2005 [4] 崔屹.数字图像处理与应用.北京:电子工业出版社,1997 [5] 何东健,杨青.实用图像处理技术.陕西科学技术出版社,1998 [6] 吕风军.溯溪图像处理编程入门.清华大学出版社,1999

[7] 章毓晋.图像工程:图像处理和分析(上).清华大学出版社,1999 [8] 章毓晋.图像工程:图像分析(中).清华大学出版社,2005

[9] 章毓晋.图像工程:图像理解与计算机视觉(下).清华大学出版社,2000 [10] 朱秀昌,刘峰,胡栋.数字图像处理与图像通信.北京邮电大学出版社,2002 [11] 韩晓军.数字图像处理技术与应用[M].北京:电子工业出版社,2009 [12] 刘刚.MATLAB数字图像处理[M].北京:机械工业出版社,2010

[13] 徐倩,邓伟. 一种融合两种主成分分析的人脸识别方法[J].计算机学报,2007 [14] 郭文强,侯勇严.数字图像处理.西安电子科技大学出版社,2009 [15] 张宜华.精通MATLAB5.清华大学出版社,1999

[16] 张兆礼.现代图像处理技术及MATLAB实现.人民邮电出版社,2001

[17] Wangmeng Zuo,Kuanquan Wang,David Zhang,Hongzhi Zhang. Combination of two novel

LDA-based methods for face recognition[C].Proceedings of the IEEE,2007

[18] 何东风.人脸识别技术综述[J].计算机学报,2003 [19] The Mathworks.MATLAB User GUIdes[DB/OL].2009

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

(1)色彩空间转换:

function [r,g]=rgb_RGB(Ori_Face) R=Ori_Face(:,:,1); G=Ori_Face(:,:,2); B=Ori_Face(:,:,3);

R1=im2double(R); % 将uint8型转换成double型 G1=im2double(G); B1=im2double(B); RGB=R1+G1+B1;

row=size(Ori_Face,1); % 行像素 column=size(Ori_Face,2); % 列像素 for i=1:row for j=1:column

rr(i,j)=R1(i,j)/RGB(i,j); gg(i,j)=G1(i,j)/RGB(i,j); end end

rrr=mean(rr); r=mean(rrr); ggg=mean(gg); g=mean(ggg); (2)找区域边界

function [left, right, up, down] = bianjie(A)

[m n] = size(A); left = -1; right = -1; up = -1; down = -1; for j=1:n, for i=1:m,

if (A(i,j) ~= 0) left = j; break; end; end;

if (left ~= -1) break; end; end;

for j=n:-1:1, for i=1:m, if (A(i,j) ~= 0) right = j; break; end; end;

if (right ~= -1) break; end; end;

for i=1:m, for j=1:n,

if (A(i,j) ~= 0) up = i; break; end; end;

if (up ~= -1) break; end; end;

for i=m:-1:1, for j=1:n,

if (A(i,j) ~= 0) down = i; break; end; end;

if (down ~= -1) break; end; end;

(3)模板匹配

function [ccorr, mfit, RectCoord] = mobanpipei(mult, frontalmodel,ly,wx,cx, cy, angle)

frontalmodel=rgb2gray(frontalmodel);

model_rot = imresize(frontalmodel,[ly wx],'bilinear'); % 调整模板大小

model_rot = imrotate(model_rot,angle,'bilinear'); % 旋转模板

[l,r,u,d] = bianjie(model_rot); % 标

bwmodel_rot=imcrop(model_rot,[l u (r-l) (d-u)]); % 板人脸区域

[modx,mody] =center(bwmodel_rot); % [morig, norig] = size(bwmodel_rot); % 产生一个覆盖了人脸模板的灰度图像 mfit = zeros(size(mult)); mfitbw = zeros(size(mult)); [limy, limx] = size(mfit); % 计算原图像中人脸模板的坐标 startx = cx-modx; starty = cy-mody; endx = startx + norig-1; endy = starty + morig-1;

startx = checklimit(startx,limx); starty = checklimit(starty,limy); endx = checklimit(endx,limx); endy = checklimit(endy,limy); for i=starty:endy,

求边界坐选择模求质心

for j=startx:endx,

mfit(i,j) = model_rot(i-starty+1,j-startx+1); end; end;

ccorr = corr2(mfit,mult) % 计算相关度 [l,r,u,d] = bianjie(bwmodel_rot); sx = startx+l; sy = starty+u;

RectCoord = [sx sy (r-1) (d-u)]; % 产生矩形坐标

附录2 外文参考文献及翻译

Research development of face recognition at home and

abroad

Face recognition is one of the most outstanding ability in human visual. Its research involves pattern recognition, image processing, biology, psychology, cognitive science, with other biometric identifica method based on human perception and computer interaction field has a close contact. As early as the sixties and seventies face recognition caused the researchers' interest. In the 1960 s, Bledsoe proposed face recognition system of semi-automatic mode and feature extraction method. In the 70 s, the developed countries such as America, Britain began to attach great importance to the research of face recognition and making progress. In 1972,

Harmon with interaction is carried out on the face recognition methods in theory and practice. That same year, Sakai face image automatic recognition system is designed. In the early 80 s t. Minami developed better than that of Sakai face image automatic identification system. But early face recognition typically require some prior knowledge of the people, can't get rid of the intervention of people. Into the ninety s, as a result of the parties face the pressing needs of the face recognition system, the research of face recognition is very popular. Face recognition method is a major breakthrough, entered the stage of the real machine automatic identification such as Karhunen Loeve transform - or a new neural network technology. Face recognition research obtained the unprecedented attention, the number of papers published on face recognition and so on increased dramatically, from 1990 to 1990 alone, between SCI and EI can be retrieved as many as thousands of articles, related literature about face recognition during the period of this review is also visible. Abroad, there are many schools in facial recognition technology research, research field is very wide. These studies are military, police and big company attaches great importance to and support the domestic some well-known colleges and universities are engaged in the research of face recognition.

Face recognition is a frontier topic in the field of pattern recognition, but the current face recognition was still in the stage of research topic, it is not active topic in the field of practical

application. While humans can tell a person had no difficulty (in) the human face, but the use of computers for fully automatic face recognition has many difficulties, displays in: the face is a rigid body, the face changes; Face along with the age growth and change; The adornment such as hair, glasses of face cause shade; Face images by affected by illumination and imaging Angle, imaging distance. The difficulty of face recognition is images include a large amount of data, input pixel may be hundreds of thousands, each pixel contains different grayscale, as a result of the complexity of the calculation will increase. Existing recognition methods, by extract features from face image information, to retrieve database method is fast, and the topological properties of map matching is used to determine the matching degree of the method is relatively fast.

中文翻译

国内外人脸识别的研究发展

人脸识别是人类视觉最杰出的能力之一。它的研究涉及模式识别、图像处理、生物学、心理学、认知科学,与基于其它生物特征的身份鉴别方法以及计算机人机感知交互领域都有密切联系。人脸识别早在六七十年代就引起了研究者的强烈兴趣。20世纪60年代,Bledsoe提出了人脸识别的半自动系统模式与特征提取方法。70年代,美、英等发达国家开始重视人脸识别的研究工作并取得进展。1972年,Harmon用交互人脸识别方法在理论上与实践上进行了详细的论述。同年,Sakai设计了人脸图像自动识别系统。80年代初T. Minami研究出了优于Sakai的人脸图像自动识别系统。但早期的人脸识别一般都需要人的某些先验知识,无法摆脱人的干

预。进入九十年代,由于各方面对人脸识别系统的迫切需求,人脸识别的研究变的非常热门。人脸识别的方法有了重大突破,进入了真正的机器自动识别阶段,如Karhunen-Loève变换等或新的神经网络技术。人脸识别研究得到了前所未有的重视,国际上发表有关人脸识别等方面的论文数量大幅度增加,仅从1990年到2000年之间,SCI及EI可检索到的相关文献多达数千篇,这期间关于人脸识别的综述也屡屡可见。国外有许多学校在研究人脸识别技术,研究涉及的领域很广。这些研究受到军方、警方及大公司的高度重视和资助,国内的一些知名院校也开始从事人脸识别的研究。 人脸识别是当前模式识别领域的一个前沿课题,但目前人脸识别尚处于研究课题阶段,尚不是实用化领域的活跃课题。虽然人类可以毫不困难地由人脸辨别一个人,但利用计算机进行完全自动的人脸识别存在许多困难,其表现在:人脸是非刚体,存在表情变化;人脸随年龄增长而变化;发型、眼镜等装饰对人脸造成遮挡;人脸所成图像受光照、成像角度、成像距离等影响。人脸识别的困难还在于图像包括大量的数据,输入的像素可能成百上千,每个像素都含有各自不同的灰度级,由此带来的计算的复杂度将会增加。现有的识别方法中,通过从人脸图像中提取出特征信息,来对数据库进行检索的方法速度快,而利用拓扑属性图匹配来确定匹配度的方法则相对较快。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top