基于MATLAB的人脸考勤识别系统

摘 要

人脸识别是模式识别和图像处理等学科的一个研究热点,它广泛应用在身份验证、刑侦破案、视频监视、机器人智能化和医学等领域,具有广阔的应用价值和商用价值。人脸特征作为一种生物特征,与其他生物特征相比,具有有好、直接、方便等特点,因

此使用人脸特征进行身份识别更易于被用户所接受。

人脸识别技术在过去的几十年得到了很大的发展,但由于人脸的非刚性、表情多变等因素,使得人脸识别技术在实际应用中面临着巨大的困难。本文针对近年来国内外相关学术论文及研究报告进行学习和分析的基础上,利用图像处理的matlab实现人脸识别方法,这种实现简单且识别准确率高,但其缺点是计算量大,当要识别较多人员时,该方法难以胜任。

利用MATLAB实现了一个集多种预处理方法于一体的通用的人脸图像预处理仿真系

统,将该系统作为图像预处理模块可嵌入在人脸识别系统中,并利用灰度图像的直方图比对来实现人脸图像的识别判定。

参考源码:MATLAB人脸识别GUI界面.zip-网络管理文档类资源-CSDN下载

第1章 绪 论

本章提出了本文的研究背景及应用前景。首先阐述了人脸图像识别意义;然后介绍了人脸图像识别研究中存在的问题;接着介绍了自动人脸识别系统的一般框架构成;最后简要地介绍了本文的主要工作和章节结构。

1.1 研究背景

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

人脸识别的方法有了重大突破,进入了真正的机器自动识别阶段,如Karhunen-Loève变换等或新的神经网络技术。人脸识别研究得到了前所未人脸识别方法的分析与研究 有的重视,国际上发表有关人脸识别等方面的论文数量大幅度增加,仅从1990年到2000年之间,SCI及EI可检索到的相关文献多达数千篇,这期间关于人脸识别的综述也屡屡可见。国外有许多学校在研究人脸识别技术,研究涉及的领域很广。这些研究受到军方、警方及大公司的高度重视和资助,国内的一些知名院校也开始从事人脸识别的研究。

人脸识别是当前模式识别领域的一个前沿课题,但目前人脸识别尚处于研究课题阶段,尚不是实用化领域的活跃课题。虽然人类可以毫不困难地由人脸辨别一个人,但利用计算机进行完全自动的人脸识别存在许多困难,其表现在:人脸是非刚体,存在表情变化;人脸随年龄增长而变化;发型、眼镜等装饰对人脸造成遮挡;人脸所成图像受光照、成像角度、成像距离等影响。人脸识别的困难还在于图像包括大量的数据,输入的像素可能成百上千,每个像素都含有各自不同的灰度级,由此带来的计算的复杂度将会增加。现有的识别方法中,通过从人脸图像中提取出特征信息,来对数据库进行检索的方法速度快,而利用拓扑属性图匹配来确定匹配度的方法则相对较快。

1.2 人脸图像识别的应用前景

人脸识别系统现在在大多数领域中起到举足轻重的作用,尤其是用在机关单位的安全和考勤、网络安全、银行、海关边检、物业管理、军队安全、智能身份证、智能门禁、司机驾照验证、计算机登录系统。我国在这方面也取得了较好的成就,国家863项目“面像检测与识别核心技术”通过成果鉴定并初步应用,就标志着我国在人脸识别这一当今热点科研领域掌握了一定的核心技术。

就从目前和将来来看,可以预测到人脸图像识别将具有广阔的应用前景,如表1-1中所列举就是其中已经实现或逐步完善的应用。

表1-1 人脸识别的应用

应用 优点 存在问题
信信用卡、汽车驾照、护照以及个人身份验证等 图像摄取可控图像分割可控图像质量好 需要建立庞大的数据库
嫌疑犯照片匹配 图像质量不统一多幅图像可用 潜在的巨大图像库
互联网应用 视频信息价值高多人参与 存在虚假
银行/储蓄安全 监控效果好 图像分割不可控图像质量较差
人群监测 图像质量高可利用摄像图像 图像分割自由图像质量低、实时性

1.3 本文研究的问题

本文介绍了人脸图像识别中所应用MATLAB对图像进行预处理,应用该工具箱对图像进行经典图像处理,通过实例来应用matlab图像处理功能,对某一特定的人脸图像处理,进而应用到人脸识别系统。本文在总结分析人脸识别系统中几种常用的图像预处理方法基础上,利用MATLAB实现了一个集多种预处理方法一体的通用的人脸图像预处理仿真系统,将该系统作为图像预处理模块可嵌入在人脸识别系统中,并利用灰度图像的直方图比对来实现人脸图像的识别判定。

其中涉及到图像的选取,脸部定位,特征提取,图像处理和识别几个过程。

1.4 识别系统构成

人类似乎具有“与生俱来”的人脸识别能力,赋予计算机同样的能力是人类的梦想之一,这就是所谓的“人脸识别”系统。假设我们把照相机、摄像头、扫描仪等看作计算机的“眼睛”,数字图像可以看作计算机观察到的“影像”,那么AFR赋予计算机根据其所“看到”的人脸图片来判断人物身份的能力。

广义的讲,自动人脸识别系统具有如图1.1所示的一般框架并完成相应功能的任务。

(1)人脸图像的获取

一般来说,图像的获取都是通过摄像头摄取,但摄取的图像可以是真人,也可以是人脸的图片或者为了相对简单,可以不考虑通过摄像头来摄取头像,而是直接给定要识别的图像。

(2)人脸的检测

人脸检测的任务是判断静态图像中是否存在人脸。若存在人脸,给出其在图像中的坐标位置、人脸区域大小等信息。而人脸跟踪则需要进一步输出所检测到的人脸位置、大小等状态随时间的连续变化情况。

(3)特征提取

通过人脸特征点的检测与标定可以确定人脸图像中显著特征点的位置(如眼睛、眉毛、鼻子、嘴巴等器官),同时还可以得到这些器官及其面部轮廓的形状信息的描述。

根据人脸特征点检测与标定的结果,通过某些运算得到人脸特征的描述(这些特征包括:全局特征和局部特征,显式特征和统计特征等)。

(4)基于人脸图像比对的身份识别

即人脸识别(Face Identification)问题。通过将输入人脸图像与人脸数据库中的所有已知原型人脸图像计算相似度并对其排序来给出输入人脸的身份信息。这包括两类识别问题:一类是闭集(Close Set)人脸识别问题,即假定输入的人脸一定是人脸库中的某个个体;另一类是开集(Open Set)识别,即首先要对输入人脸是否在已知人脸库中做出判断,如果是,则给出其身份。

(5)基于人脸图像比对的身份验证

即人脸确认(Face Verification)问题。系统在输入人脸图像的同时输入一个用户宣称的该人脸的身份信息,系统要对该输入人脸图像的身份与宣称的身份是否相符作出判断。

1.5 论文的内容及组织

第二章主要介绍人脸识别系统中所用到的仿真软件Matlab,介绍了在人脸图像识别过程中所需要的图像处理技术,包括:一些基本操作、格式转换、图像增强等。并做了一个Matlab图像处理功能的实例

第三章主要始涉三个方面:首先是对人脸识别系统的构成做详细论述;其次就是对人脸识别过程中的关键环节人脸检测、特征提取和图像预处理做详细介绍;最后就是Matlab在人脸识别系统中的具体应用,即人脸图像识别的具体技术,并用Matlab进行仿真试验并得到结果。

第四章是对人脸图像识别体系构架的设计,并给出了人脸识别用到的理论知识即直方图差异对比,并编写matlab代码实现人脸图像识别。

第2章 图像处理的Matlab

2.1 Matlab简介

MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 

  MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。编辑本段基本应用

MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。

2.2 数字图像处理及过程

数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。

2.2.1图像处理的基本操作

读取和显示图像可以通过imread()和imshow()来实现;图像的输出用imwrite()函数就可以很方便的把图像输出到硬盘上;另外还可以用imcrop()、imrisize()、imrotate()等来实现图像的裁剪、缩放和旋转等功能。

2.2.2图像类型的转换

Matlab支持多种图像类型,但在某些图像操作中,对图像的类型有要求,所以要涉及到对图像类型进行转换。Matlab7.0图像处理工具箱为我们提供了不同图像类型相互转换的大量函数,如mat2gray()函数可以将矩阵转换为灰度图像,rgb2gray()转换RGB图像或颜色映像表为灰度图像。在类型转换的时候,我们还经常遇到数据类型不匹配的情况,针对这种情况,Matlab7.0工具箱中,也给我们提供了各种数据类型之间的转换函数,如double()就是把数据转换为双精度类型的函数。

2.2.3图像增强

图像增强的目的是为了改善图像的视觉效果,提高图像的清晰度和工艺的适应性,以及便于人与计算机的分析和处理,以满足图像复制或再现的要求。图像增强的方法分为空域法和频域法两大类,空域法主要是对图像中的各个像素点进行操作;而频域法是在图像的某个变换域内对整个图像进行操作,并修改变换后的系数,如傅立叶变换、DCT变换等的系数,然后再进行反变换,便可得到处理后的图像。下面以空域增强法的几种方法加以说明。

(1).灰度变换增强

有多种方法可以实现图像的灰度变换,其中最常用的就是直方图变换的方法,即直方图的均衡化。这种方法是一种使输出图像直方图近似服从均匀分布的变换算法。Matlab7.0图像处理工具箱中提供了图像直方图均衡化的具体函数histeq(),同时我们可以用函数imhist()函数来计算和显示图像的直方图。

(2).空域滤波增强

空域滤波按照空域滤波器的功能又可分为平滑滤波器和锐化滤波器。平滑滤波器可以用低通滤波实现,目的在于模糊图像或消除噪声;锐化滤波器是用高通滤波来实现,目的在于强调图像被模糊的细节。在Matlab中,各种滤波方法都是在空间域中通过不同的滤波算子实现,可用fspecial()函数来创建预定义的滤波算子,然后可以使用imfilter()或filter2()函数调用创建好的滤波器对图像进行滤波。

2.2.4边缘检测

数字图像的边缘检测是图像分割、目标区域识别、区域形状提取等图像分析领域十分重要的基础,也是图像识别中提取图像特征的一个重要属性。边缘检测算子可以检查每个像素的邻域并对灰度变化率进行量化,也包括对方向的确定,其中大多数是基于方向导数掩模求卷积的方法。常用的有Sobel算子,Prewitt算子,Roberts算子,Log算子等。Matlab7.0工具箱中提供的edge()函数可以进行边缘检测,在其参数里面,可以根据需要选择合适的算子及其参数。

2.3 本章小结

以上实例只是对Matlab图像处理工具箱函数的一小部分运用,从这些功能的运用可以看出,Matlab语言简洁,可读性强。作为人脸识别系统中图像预处理工具,有非常好的处理功能。

在这段学习Matlab图像处理软件的过程中,也遇到了很多的问题,感谢在老师和同学的帮助下让我更熟练的掌握这款软件,这将会在我以后工作和运用当中受用一生。其中最大的阻碍是软件里是全英文的,因此我得更加要学好英语、重视英语。也同时学会了要善于利用各种资源。

第3章 人脸区域定位

3.1人脸区域粗定位

3.1.1肤色区域标记编码

经在进行区域分析和计算之前,先对其进行统计编码,已确定筛选的对象。

区域标记的具体算法流程如下:

(1)扫描整幅图像.把所有肤色,类肤色区域的边界点标记出来:

(2)从每个区域的一个边界点出发并标记,利用四邻域的原则搜索所有为标记的边界点,并标记出来。根据连通性的原理,在编码处理过程中,属于同样码号的像素就属于同一个区域。同时编码后可得到肤色像素点的数量,也即该区域的面积。

(3)根据每个连通区域边界点的不同标记把所有的连通区域分割开来,这样就得到了所有可能的人脸区域。边界由肤色像素点和非肤色像素点所组成。

3.1.2基于区域面积和长宽比的粗定位

在进行人脸区域筛选之前,首先考虑到这样一个问题:人的面部近似为椭圆形,在长宽比上存在一定的比例。但是一些肤色区域也可能在长宽比上存在一定比例,如人的手攥成拳头时,这就需要考虑另一个因素——区域的面积。人脸区域在图像中(除去背景)相对占有较大的比例。基于这些想法,结合文献,本文采用如下的方法:

首先对人脸图像进行处理,将其分为网格状,由于部分人脸可能存在一些旋转倾斜,因此直接利用区域的上、下、左、右4个顶点的坐标值进行判断存在一定的困难。利用提取区域边界进行操作,而区域边界是根据对图像各区域进行编码时获得的。然后对其各网格进行二值分析,通过像素比例来做处理,满足面积比例的再对其长宽比进行筛选,最后得到选出的人脸区域。

详细操作如下:

  1. 统计并提取构成该区域边界的所有点的坐标值,记录下X轴上具有最小、最大分量的坐标值,以此作为人脸的长宽参数,同理求出Y轴上具有最小、最大分量的坐标值。
  2. 令B等于其中较大者,S等于其中较小者,B与S的比值B/S(=r)即为所求的区域长宽比。
  3. 对于垂直正面的人脸,则该比值近似于1。但由于图像中人脸或有偏差或侧脸,且肤色相似度分割可能造成人脸头颈部作为同一个区域分割,并为防止把正确的分割区域作为错误的判断,故将r的上限适当放大。本文选取r的取值范围为[0.4,2.4],不属于这个范围的候选区域则直接删除。
  4. 区域长宽求出后,区域的面积即为该区域中白色像素点的个数,用公式可表达为

利用该方法,对图像进行处理,结果如下图所示:

图3.1粗定位后的图像

3.2特征点定位

经过上述步骤之后,可得到粗略定位的人脸区域。可将该图作为姿态估计的输入图像,但是利用没有进行人脸对齐的图像进行人脸姿态估计.效果往往不是很好。这里进一步采取了特征点定位算法来提取出人脸上的特征点,根据特征点的相对位置来进行输入图像的规范化,进一步提高姿态估计的精确度。

3.2.1特征点选取

人体面部结构组成的有眼睛、鼻子、嘴巴、下巴、颧骨,还有部分毛发特征比如胡须,眉毛等。这些特征是人与人区别的主要标志,因此对这些器宫的形状和结构关系的几何描述,可以作为人脸特征描述的重要特征。几何特征提取即是用适当的方法对眼睛、鼻子、嘴巴、下巴等器官的形状、大小和结构关系进行几何描述。

本文选取了眼靖和嘴融作为特征点来进行特征点定位。眼睛用作人脸检测验证方法的依据是:两眼之间的间距和嘴角距离不受光照或表情变化影响,特征突出易于定位。

3.2.2嘴唇定位

在色彩空间中,嘴唇的颜色与面部的其他部位的区别是很明显的: 一是亮度比其他肤色暗一些,二是红色在三基色中占比例较大。具有这些特征的区域可假设为嘴唇。

由嘴唇和肤色色度分析可知,在YCbCr 色彩空间中,嘴唇比肤色具有较高的Cr 分量。因此,构建嘴唇的提取模型:

在CVL图像库中,选取肤色和嘴唇像素,进行统计,得到:

3.2.3眼睛定位

目前实现眼睛定位的算法很多,主要有区域分割法、灰度投影法、边缘提取法、统计学习法,模板法等。

区域分割法首先对人脸的二值图像进行区域分割,然后设定一系列经验值和支持函数定位眼睛;

灰度投影法对人脸图像进行水平和垂直方向的投影,根据波峰、波谷的分布信息来定位眼睛;

边缘提取法主要是针对灰度单人脸图像,根据图像的灰度投影曲线来确定人脸的左右上下边缘,利用预测法确定人眼在眉眼区域的大概位置,通过检测眉眼部分的边缘及边缘分组,确定双眼的坐标位置。

霍夫变换法主要针对眼球进行研究。在用霍夫变换检测眼球前,先用Canny算法提取边缘。设图像空间为(i,j),i和j分别表示行和列,三维变换空间为(ie,je,R),其中ie、je分别代表眼球圆心的行和列,R为半径。下半圆表达式为:

对于变化空间的每一个坐标点(ie,je,R),在图像空间都对应一个半圆,在这个半圆上存在的边缘点数就是变换空间上坐标点(ie,je,R)对应的值。实验表明,霍夫变换具有抗干扰能力强的优点。

统计学习法将人眼区域看作一类模式,使用大量不同条件下的人眼与非人眼样本,借助统计分析理论和机器学习方法提取人眼共有的一些特征,实现人眼检测。

根据眼睛的特性,本文采用一种检测近眼物的算法:

  1. 基于肤色特性筛选出眼睛区域

眼睛有一项特殊的特性,即明显的黑白区域相邻。由黑白颜色的特点可以得到,虹膜的RGB值很小,眼白的RGB值很大,并且两者的RGB两两差值很小。因此利用RGB三色的两两差值的绝对值F作为眼睛像素进行识别。

  1. 基于模板法进行人眼选取

经过上一步分割出可能含有眼睛的区域之后,利用圆形模板来对其进行进一步筛选检测。圆形模板的优点在于不受人脸角度的限制。这里将待测区域再次分割标记为黑区和白区,分别赋值为1和2,其他区域则赋值为0。

具体算法如下:

构造圆形二值模板,R=3,4,5,…,15。从最小的模板开始进行匹配,当找到匹配区域后,重复匹配直到匹配度不再增加,保留匹配程度好的区域。计算扩大模板后,被覆盖区域里白色像素比例是否有很大程度的增加。是,则判断为眼睛。

  1. 基于眼嘴几何形状的人眼定位

由于眼睛与嘴巴构成等腰三角形,利用这一特征进行最终的人脸区域确定。

假设嘴巴中心和任意两个近眼物可构成一系列三角形,设瞳距为1,则其与嘴巴中心的距离d因近似为1,考虑到角度等其他影响,取值1.0<d<1.3。

处理结果如图3.2所示。

3.3实验结果和分析

部分实验结果图像上图所示,用符号“+”代表定位的眼睛位置。

图3.2 特征点定位的图像

由图可以看出对于不同表情、不同光照、不同姿态和佩戴眼镜的情况都有较好的定位结果。

但是当配戴黑色边框眼镜且眼镜上边缘距离眼球较近、或者光照太强时容易产生错误定位的情况。另外当由于光照角度太侧而造成脸部阴影严重时也会产生错误的定位。

3.4本章小结

本章主要描述了人脸区域定位的过程,考虑到人脸图像的复杂性,将人脸区域定位分为两方面:人脸区域粗定位,基于特征点的精确定位。

首先根据人脸面积比和长宽比,对于类似人脸的区域进行筛选,去除大部分背景干扰。但仍有部分其他干扰如裸露的皮肤等,这里采用对眼睛和嘴唇的精确定位,排除其他类人脸区域。

通过以上人脸图像的定位,其定位结果表明文中提出的定位算法有较强的适应性它可以有效地运用于不同尺寸,不同姿态,深色或浅色背景等的情况,是一种有效的人脸定位方法,但是此方法也存在一定的局限性例如只能对简单背景的正面单人图像成功定位,在复杂的背景下可能出现定位错误的情况。

人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。其他识别无法人脸识别的优势在于其自然性和不被被测个体察觉的特点。虽然人脸识别有很多比拟的优点,但是它本身也存在许多困难。人脸识别被认为是生物特征识别领域甚至人工智能领域最困难的研究课题之一。人脸识别的困难主要是人脸作为生物特征的特点所带来的。所有的人脸的结构都相似,而人可以通过脸部的变化产生很多表情。所以还需进一步的改进人脸定位的算法,使定位的效果更加准确,快速。

第4章 人脸图像识别系统实现

4.1 引言

计算机人脸识别是一个非常活跃的研究领域,因其在公安刑侦破案、银行密码系统、计算机安全系统以及动态监视系统等方面都有广泛应用,已成为当前模式识别、计算机视觉领域的研究热点。人脸识别系统一般包括人脸检测与定位、人脸图像预处理、特征提取和匹配识别四个组成部分。其中,人脸图像预处理,作为特征提取和识别的前提步骤,是计算机人脸识别系统中的必要环节。其目的是在去除噪声,加强有用信息,对输入设备或其他因素造成的退化现像进行复原,为后续的特征提取和识别作准备。

不同的人脸识别系统根据其采用的图像来源和识别算法需要不同,采用的预处理方法也不同。常用的人脸图像预处理方法有:滤波去噪、灰度变换、图像二值化、边缘检测、尺寸归一化、灰度归一化等。用在同一系统中的可能只有其中一种或几种预处理方法,但一旦库中采集到的原始图像质量发生较大变化(如人脸大小、光照强度、拍摄条件、成像系统等方面变化),原有的预处理模块便不能满足特征提取的需要,还要更新,这是极不方便的。

鉴于此,作者在总结分析了灰度变换、滤波去噪、边缘检测三种广泛应用于不同人脸识别系统中的预处理方法基础上,设计了一个通用的人脸图像预处理仿真系统。该系统可对不同条件下的原始图像进行相应的预处理。如,用户可根据需要选择使用不同的滤波方法去除噪声、不同的边缘检测算子检测人脸边缘、选择不同的灰度变换算法实现图像的灰度校正和灰度归一化,仿真系统同时还实现了尺寸归一化、二值化等其他常用的图像预处理算法。

4.2系统基本机构

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

图4.1 基本框架图

4.3 人脸检测定位算法

人脸检测定位算法大致可分为两大类:基于显式特征的方法和基于隐式特征的方法。

所谓显式特征是指对人类肉眼来说直观可见的特征,如肤色、脸部轮廓、脸部结构等。基于显式特征的方法是指由人通过肉眼观察,总结出人脸区别于“非人脸”区域的特征,然后根据被检测区域是否满足这些“人脸特征”,来判定该区域是否包含人脸。根据所选择的“人脸特征”,基于显式特征的方法分以下三类:基于肤色模型的方法、模板匹配的方法、基于先验知识的方法。

在彩色图像中,颜色是人脸表面最为显著的特征之一,利用颜色检测人脸是很自然的想法。Yang等在考察了不同种族、不同个体的肤色后,认为人类的肤色能在颜色空间中聚成单独的一类,而影响肤色值变化的最主要因素是亮度变化。因此他们采用广泛使用的RGB颜色空间,在滤去亮度值的图像中通过比较像素点的r、g值与肤色范围来推断该像素点及其邻域是否属于人脸区域。除了RGB颜色空间,还有诸如HIS,LUV,GLHS等其它颜色空间被使用。寻找到肤色区域后,必须进行验证,排除类肤色区域。Yoo等利用肤色像素的连通性分割出区域,使用椭圆拟合各个区域,根据椭圆长短轴的比率判断是否为人脸。

模板匹配的方法一般是人为地先定义一个标准人脸模板,计算输入图像与模板的似然度;然后,确定一个似然度阈值,用以判断该输入图像中是否包含人脸。标准人脸模板可以是固定的样板,也可以是带参变量的曲线函数。

基于先验知识的方法则采用符合人脸生理结构特征的人脸镶嵌图(mosaic image)模型,并在分析了足够多的人脸图像样本的基础上,针对人脸的灰度、边缘、纹理等信息,建立一种关于人脸的知识库。在检测中,首先抽取这些灰度、边缘等信息,然后检验它是否符合知识库中关于人脸的先验知识。

以上三种方法的优缺点比较见表3-1。

基于隐式特征的方法将人脸区域看成一类模式,使用大量“人脸”、“非人脸”样本训练、构造分类器,通过判别图像中所有可能区域是否属于“人脸模式”的方法来实现人脸检测。这类方法有:特征脸法、人工神经网络法、支持向量机法;积分图像法。

特征脸法(eigenface)把单个图像看成一维向量,众多的一维向量形成了人脸图像特征空间,再将其变换到一个新的相对简单的特征空间,通过计算矩阵的特征值和特征向量,利用图像的代数特征信息,寻找“人脸”、“非人脸”两种模式在该特征空间中的分布规律。

人工神经网络(Artificial Neural Network,ANN)的方法是通过训练一个网络结构,把模式的统计特性隐含在神经网络的结构和参数之中。基于人工神经网络的方法对于复杂的、难以显式描述的模式,具有独特的优势。

支撑向量机(Support Vector Machine,SVM)法是在统计学习理论基础上发展出的一种新的模式识别方法,它基于结构风险最小化的原理,较之于基于经验风险最小化的人工神经网络,一些难以逾越的问题,如:模型选择和过学习问题、非线性和维数灾难问题、局部极小点问题等都得到了很大程度上的解决。但是直接使用SVM方法进行人脸识别有两方面的困难:第一,训练时需要求解二次规划问题计算复杂度高,内存需求量巨大;第二,在非人脸样本不受限制时,需要极大规模的训练集合,得到的支持向量会很多,使得分类器的计算量过高。

基于积分图像(Integral Image)特征的人脸检测方法是Viola等新近提出的一种算法,它综合使用了积分图像描述方法、Adaboost学习算法及训练方法、级联弱分类器。

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

表4-2 基于隐式特征方法的特征

检测方法 优点 缺点与需要改进的地方
本征脸法 标准人脸模板能抽象人脸全部信息,运算不涉及迭代耗费时间短 但模板检测效率低,多模板提高了效率也增加了检测时间
神经网络法 检测效率高,错误报警数目不多,训练成熟的网络监测速度快 多样本训练耗费时间多,但网络监测错误报警数目多
支撑向量机机法 比神经网络方法具有更好的泛化能力,能对为观测到的例子进行有效分类 “非人脸”样本复杂多样,造成支持向量数目多,运算复杂度大
基于积分图像分析法 检测速度快,基本满足实时检测要求,检测效率可以与神经网络法比较 错误报警数目少时,检测率不高

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

原始图片
灰度图片
均衡化灰度图片
人脸定位

4.4 人脸图像的预处理

不同的人脸识别系统根据其采用的图像来源和识别算法需要不同,采用的预处理方法也不同。常用的人脸图像预处理方法有:滤波去噪、灰度变换、图像二值化、边缘检测、尺寸归一化、灰度归一化等。用在同一系统中的可能只有其中一种或几种预处理方法,但一旦库中采集到的原始图像质量发生较大变化(如人脸大小、光照强度、拍摄条件、成像系统等方面变化),原有的预处理模块便不能满足特征提取的需要,还要更新,这是极不方便的。鉴于此,作者在总结分析了滤波去噪、边缘检测、灰度变换三种广泛应用于不同人脸识别系统中的预处理方法基础上,设计了一个通用的人脸图像预处理仿真系统。该系统可对不同条件下的原始图像进行相应的预处理。如,用户可根据需要选择使用不同的滤波方法去除噪声、不同的边缘检测算子检测人脸边缘、选择不同的灰度变换算法实现图像的灰度校正和灰度归一化,仿真系统同时还实现了尺寸归一化、二值化等其他常用的图像预处理算法。

4.4.1 仿真系统中实现的人脸图像预处理方法

根据所查阅文献资料,常应用于人脸图像的预处理方法有:图像类型转换、滤波去噪、灰度变换、边缘检测及二值化、尺寸归一化、灰度归一化等。作为通用人脸图像预处理模块,要能够充分适应不同人脸库中图像在人脸大小、光照强度、成像系统等方面的任意性和差异性,不能单独采用某种单一的滤波、灰度变换和边缘检测方法。所以,在本仿真系统中,对上述的每种预处理方法全部加以实现的同时,还对三种最常用预处理方法:滤波去噪、灰度变换、边缘检测,提供了多种不同的具体算法供用户比较、选择之用。

1)滤波去噪

由于噪声给图像带来的失真和降质,在特征提取之前采用滤波的方式来去除噪声是实际人脸识别系统中所必须的步骤。滤波的方法有很多,如各种平滑滤波、各种锐化滤波等,关于各种滤波方法的原理和分类可参考文献[2]。下面对本文实现的滤波方法及其选择依据加以说明。在人脸图像预处理中使用较多的滤波是平滑滤波,方法可分为以下三类:线性滤波、中值滤波、自适应滤波。

(1)线性滤波最典型的线性滤波方法如,采用邻域平均法的均值滤波器、采用邻域加权平均的高斯滤波和维纳滤波。对图像进行线性滤波可以去除图像中某些特定类型的噪声,如图像中的颗粒噪声,高斯噪声、椒盐噪声等。对扫描得到的人脸图像根据其噪声类型一般采用此种滤波方法。考虑滤波模板大小对滤波效果影响较大,仿真系统选择算法时对同种滤波算法提供了不同模板大小的情况。

(2)中值滤波法中值滤波法是一种非线性滤波方法,它把像素及其邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。中值滤波方法的最大优点是抑制噪声效果明显且能保护边界。对于使用基于整体的人脸识别算法的系统中,由于失掉小区域的细节对特征提取影响较小,所以这种滤波方法最受欢迎。

(3)自适应滤波自适应滤波能够根据图像的局部方差来调整滤波器的输出,其滤波效果要优于线性滤波,同时可以更好地保存图像的边缘和高频细节信息。

2)灰度变换

灰度变换是图像增强技术中的一种。通过灰度变换,可对原始图像中的光照不均进行补偿,使得待识别人脸图像遵循同一或相似的灰度分布。只有这样,不同图像在特征提取和识别时才具有可比性。这一过程,也被称作灰度归一化。常用在人脸识别系统中的灰度变换方法主要有:基于图像统计特征的直方图均衡化、直方图规定化和灰度均值方差标准化三种方法。直方图均衡化和直方图规定化的灰度变换原理和实现方法可由matlab仿真来实现。

三种灰度变换方法,均能在一定程度上消除由于光照条件不同而对人脸识别带来的影响。故在仿真系统中提供了三种灰度变换效果比较及选择界面,用户可根据需要选用。

3)边缘检测

对输入人脸图像进行边缘检测是很多人脸识别系统在人脸粗定位及人脸主要器官(眼睛、鼻子、嘴巴)定位时采用的预处理方法。边缘检测的方法有很多,主要有:微分算子法、Sobel算子法、拉普拉斯算子法、canny算子法等。每种算子对不同方向边缘的检测能力和抑制噪声的能力都不同。所以,和灰度变换及滤波去噪部分的设计思路相同,在仿真系统中,笔者给出了canny、sobel、log、prewitt四种算子在不同灰度阈值下、不同方向的边缘检测算法,使用者可从检测结果中加以比较、选择合适的算法。图像类型转换、图像二值化、尺寸归一化也是一些人脸识别系统中经常使用的预处理方法。为了在不修改其他算法的基础上,扩大系统处理图像的类型和范围,将输入图像首先转换为统一的类型,是多数人脸图像预处理中的第一步。在本仿真系统中通过调用MATLAB中提供的各种图像类型转换函数来实现TIF、JPG转换为BMP格式及彩色到灰度图像的转换;对图像二值化,采用了graythresh()函数来自动选择阈值的二值化方法[1];尺寸归一化采用的算法是对人脸图像进行剪裁和尺寸缩放,实现去除大部分头发、服饰和背景的干扰并将人脸图像大小统一。

4.5识别理论

用灰度直方图增强图像对比度是基于图像灰度值统计的一种重要方法,它以概率论为基础的,常用的实现算法主要是直方图均衡化和直方图规定化。

直方图均衡化主要用于增强动态范围较小的图像的反差,基本思想是把原始图的直方图变换为均匀分布的形式,这样就增强了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。直方图均衡化的优点是能自动地增强整个图像的对比度,但它的具体的增强效果不好控制,处理的结果总是得到全局均衡化的直方图。实际中有时需要变换直方图使之成为某个需要的形状,从而有选择地增强某个灰度值范围内的对比度或使图像灰度值的分布满足特定的要求,这时可以采用比较灵活的直方图规定化方法。

4.6人脸识别的matlab实现结果

实现结果如图4.1和4.2

图4.3 用户界面
图4.4 实现结果

结 论

基于matlab数字图像处理与识别系统其实是一个范围很大的应用系统,作者在此只是有针对性、有选择地进行了一些开发和实现。

该系统的主要功能模块共有二个:(1)数字图像处理的基本方法;(2)人脸识别。

在“数字图像处理的基本方法”这一部分,用到的一些基本方法和一些最常用的处理方法来实现图像预处理,如格式转换,灰度变化和滤波锐化。仅就这一部分而言,就有很多可以继续完成的工作,可将其它一些数字图像处理方法进一步加以实现,如图像的平滑,图像矩阵的变换(K-L变换、Fourier变换、小波变换等),图像的膨胀腐蚀、图像的几何变换(平移、旋转、缩放等),以及各种编码图像的读写与显示。仅这一部分即可形成一个专用的图像处理平台。

关于“人脸识别”,在了解了人脸识别的各种方法后,选择了图像直方图差值比较进行了实现。该方法能较好地实现人脸的分类,但对人脸图像的要求较高,目前仅是采用Orl的标准人脸库中的图像来进行测试,因此能获得较高的识别率。而在现实生活中采集到的人脸图像则会受到很多因素的影响,识别率就未必能达到要求了。若要进一步提高识别率和适用范围,则还需要结合其它算法,如PCA、神经网络等。

参 考 文 献

[1] 祝磊,朱善安.人脸识别的一种新的特征提取方法[J].计算机学报,2007,34(6): 122-1251

[2] 何东风,凌捷.人脸识别技术综述[J].计算机学报,2003,13(12)75-78

[3] Younus Fazl-e-Basit Javed和Usman Qayyum”,采用直方图的人脸识别和处理”第三阶段仅相关新兴技术研报告。

[4] CVL Face Database[EB/OL].(2007-04-13).http://www.lrv.f- ri.uni- Lj.si/facedb.html.

[5] Shi J.,Tomasi C..Good features to http://track.In:Proceedings of the IEEE International Conference on Computer Vision and Pattern Recognition,Seattle,W A,1994,593-600.

[6] Yao P.,Eveans G.,Calaway A..Using affine correspondence to estinata 3D facial http://pose.In:Proceedings of the IEEE International Conference on Image Proceeding.Thessalonik 2001,Vol3,919-922.

[7] 何国辉,甘俊英.PCA-LDA算法在性别鉴别中的应用[J].中国图像图形学报,2006,32(19):208-211.

[8] 王聃,贾云伟,林福严.人脸识别系统中的特征提取[J].自动化学报,2005,21(7-3).

[9] 张俭鸽,王世卿,盛光磊.基于小波和DFB-PCA的人脸识别算法研究[J].自动化学报,2007,23(2-1).

[10] 曹林,王东峰,刘小军,邹谋炎.基于二维Gabor小波的人脸识别算法[J].电子学报,2006,28(3)490-494

[11] 焦峰,山世光,崔国勤,高文,李锦涛.基于局部特征分析的人脸识别方法[J].自动化学报,2003,15(1):53-58

[12] 徐倩,邓伟.一种融合两种主成分分析的人脸识别方法[J].计算机学报,2007,43(25):195-197

附录A 人脸识别matlab程序

%%%%% Reading of a RGB imagei=imread('face1.jpg');
I=rgb2gray(i);
BW=im2bw(I);
figure,imshow(BW)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% minimisation of background portion[n1 n2]=size(BW);
r=floor(n1/10);
c=floor(n2/10);
x1=1;x2=r;
s=r*c;for i=1:10y1=1;y2=c;for j=1:10if (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<=100BW(x1:x2, y1:y2)=0;r1=x1;r2=x2;s1=y1;s2=y2;pr1=0;endimshow(BW);endy1=y1+c;y2=y2+c;endx1=x1+r;x2=x2+r;
endfigure,imshow(BW)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% detection of face object[s1 s2]=size(BB2);
mx=0;
for k=3:4:s2-1p=BB2(1,k)*BB2(1,k+1);if p>mx & (BB2(1,k)/BB2(1,k+1))<1.8mx=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+1)],'EdgeColor','r' )

分享结束~欢迎讨论,码字不易,觉得有帮助的话请给安妮赞同鼓励哦

超详细基于MATLAB的人脸考勤识别系统相关推荐

  1. 基于MATLAB的人脸考勤识别系统

    基于MATLAB的人脸考勤识别系统 摘 要 人脸识别是模式识别和图像处理等学科的一个研究热点,它广泛应用在身份验证.刑侦破案.视频监视.机器人智能化和医学等领域,具有广阔的应用价值和商用价值.人脸特征 ...

  2. 基于MobileNet的人脸表情识别系统(MATLAB GUI版+原理详解)

    摘要:本篇博客介绍了基于MobileNet的人脸表情识别系统,支持图片识别.视频识别.摄像头识别等多种形式,通过GUI界面实现表情识别可视化展示.首先介绍了表情识别任务的背景与意义,总结近年来利用深度 ...

  3. 基于matlab的人脸考勤系统,gui界面,界面简洁,实现实时打卡考勤

    基于matlab的人脸考勤系统,gui界面,界面简洁,实现实时打卡考勤,正确率高. 涉及图像处理,特征提取,数据降维,机器学习训练,支持把新照片新录入系统. ID:69400663195853731

  4. Python基于OpenCV的人脸表情识别系统[源码&部署教程]

    1.项目背景 人脸表情识别是模式识别中一个非常重要却十分复杂的课题.首先对计算机人脸表情识别技术的研究背景及发展历程作了简单回顾.然后对近期人脸表情识别的方法进行了分类综述.通过对各种识别方法的分析与 ...

  5. 基于CNN的人脸表情识别系统

    基于CNN的人脸表情识别系统 主要功能: 1)图片识别,可以通过上传本地图片,进行表情识别 2)拍照识别,点击拍照识别按钮,可以调用摄像头实现拍照,并进 行表情识别 实现原理: 1.表情库的建立 fe ...

  6. 基于Matlab神经网络语音情感识别系统

    文件大小:5.1M 代码行数:55行(主程序) 开发环境:Matlab2018 点击下载:点击下载 简要概述:基于Matlab神经网络语音情感识别系统,五种基本情感:'生气','高兴','中性','悲 ...

  7. 基于matlab的手写体数字识别系统,基于matlab的手写体数字识别系统研究

    基于matlab的手写体数字识别系统研究 丁禹鑫1,丁会2,张红娟2,杨彤彤1 [摘要]随着科学技术的发展,机器学习成为一大学科热门领域,是一门专门研究计算机怎样模拟或实现人类的学习行为的交叉学科.文 ...

  8. 基于Matlab平台人脸面部表情识别的疲劳检测

    基于面部特征识别的疲劳检测系统设计 1.研究背景与意义 -疲劳检测在现实生活中具有很大的意义和实用价值,也是一个值 得进一步完善研究的课题. 研究目标 本设计目标在于利用Matlab强大的图像 处理能 ...

  9. 【百度快照】基于MATLAB GUI的条形码识别系统

    1.1 应用MATLAB识别条形码总体设计*** 本设计为基于MATLAB的条形码识别系统,带有一个GUI界面. 1.1.1 程序总体设计思路 在上节中我们简单的介绍了MATLAB的发展以及优点.在以 ...

最新文章

  1. 如何删除oracle实例
  2. 分布式服务框架 Zookeeper(二)官方介绍
  3. tkinter项目实战_Python GUI项目实战(二)主窗体的界面设计与实现
  4. mxnet基础到提高(24)-C++-符号,变量读写
  5. PostgreSQL新手入门教程
  6. 剪裁tiff影像数据_能看更会用,超擎影像云平台带你轻松玩转海量影像!
  7. hdu 2648 Shopping
  8. Forward框架的逆袭:解析Forward+渲染
  9. cygwin汉化简单操作【ZT】
  10. python读取文件名包含某字符的文件_python 读写文件时判断文件名是否包含某字符串...
  11. Android实现百度地图定位服务
  12. 线性表的链式存储结构(完整代码(C语言)+运行实例)
  13. 720vr全景网站平台系统 vr全景图制作系统
  14. LeetCode题解(1564):把箱子放进仓库里I(Python)
  15. 重新定义流媒体服务器
  16. windows2012装sql 2000 sql 2005 vs2005的解决办法
  17. Redis - PHP扩展 - phpredis - 安装和使用
  18. java学习笔记-基础篇
  19. mysql内存淘汰_从创建索引过程中内存变化来看SQL Server与MySQL的内存淘汰算法
  20. 产业实现新一轮发展 固网宽带提速进行时

热门文章

  1. 欠款超 1 亿,乐视被法院拉黑,“画反”了的生态还有救吗?
  2. 双时格林函数演练总结
  3. 了解Gazebo的bumper插件
  4. android 云端数据库更新到本地
  5. GitHub入门使用指南
  6. iOS巅峰之开发过程中的小知识点大全
  7. 服务器多开虚拟机对网络要求,虚拟机多开到一定数量后网络不稳定或没网
  8. 《苹果往事》演员阵容
  9. cherry-pick的定义和使用方法
  10. 秒懂设计模式之状态模式(State Pattern)