本科毕业设计__人脸定位算法研究

  • 格式:doc
  • 大小:572.50 KB
  • 文档页数:9

人脸定位算法研究计算机科学与技术专业学生:杨晔指导教师:赵辉煌摘要:人脸定位是指给定静止图像或视频序列,不管图像中人脸的位置、大小、方向、姿势、光照等如何变化,找到并定位所有人脸的确切位置的一种技术。

文章对人脸定位问题作了一些探讨,对几种人脸定位算法进行了验证,同时在综合多个标准人脸库的大型人脸图像库中作了大量实验,目的是确定一种可靠的人脸定位算法,满足实际应用的需要。

关键词:人脸定位;Matlab;二值化;边缘检测;Adaboost算法1 研究背景人脸定位就是利用计算机分析人脸图像,从中提取有效的人脸信息,用来确定人脸位置的一种技术。

它涉及到模式识别、图像处理、计算机图形学等诸多学科的知识,并与基于其它生物特征的身份鉴别方法有密切联系。

同时,人脸定位是人脸识别技术的一个重要研究方向。

在今天,人脸识别技术已经广泛应用,它与指纹、视网膜、虹膜、基因、掌纹等其它人体生物特征识别系统相比,人脸识别技术因其无需用户过多参与、非接触式的数据采集方式、对用户无任何损害、便于隐藏等优点而普遍为人们所看好,被称为21世纪最有前途的身份验证方法。

人脸识别技术应用背景十分广泛,可用于公安系统刑侦破案的罪犯身份识别、身份证及驾驶执照等证件验证、银行及海关的监控、自动门卫系统、视频会议、机器人的智能化研究以及医学等方面。

因此对于人脸识别中的关键环节之一的人脸定位显得尤为重要。

2 算法介绍2.1 基于肤色分割的人脸定位2.1.1 YcbCr颜色空间YCbCr是在世界数字组织视频标准研制过程中作为ITU - RBT1601建议的一部分,其实是YUV经过缩放和偏移的翻版。

其中Y与YUV中的Y含义一致,Cb,Cr同样都指色彩,只是在表示方法上不同而已。

在YUV家族中,YCbCr是在计算机系统中应用最多的成员,其应用领域很广泛,JPEG、MPEG均采用此格式。

一般人们所讲的YUV大多是指YCbCr。

YCbCr有许多取样格式,如4:4:4,4:2:2,4:1:1和4:2:0。

RGB色彩空间与YCbCr色彩空间的转换关系如下:1) YCbCr转换为RGBR=Y+1.371(Cr-128)G=Y-0.698(Cr-128)-336(Cb-28)B=Y+1.732(Cb-128)2)RGB转换为YCbCrY=(77/256)R+(150/256)G+(29/256)BCr=(131/256)R -(110/256)G -(21/256)B+128Cb=-(44/256)R -(87/256)G+(131/256)B+1282.1.2 基于肤色分割的人脸定位的实现利用肤色信息进行人脸的检测与定位,一个完整的人脸检测和定位过程如图2-1所示:图2-1 人脸检测和定位过程Fig 2-1 Face detection and localization process图2-1中:(1)对图像进行预处理,主要是直方图均衡和平滑处理。

(2)对图片进行颜色空间转换,用建立的肤色模型,对图像中的皮肤像素进行检测。

(3)对检测到的肤色区域进行形态学处理。

(4)标定出图像中的最大块的肤色区域,作为人脸的候选区域。

(5)利用人脸的其它特征来进一步确定人人脸。

(6)定位出所检测到的人脸区域。

通过比较,本文采用的肤色模型如下,即通过阈值方法对肤色进行判决,对图片中的每一个像素(i, j )[][](,)77,127r(,)133,1731,0,(,){i j C i j Cb elseM i j ∈∈=且 (式2-1) 这样将图像转变成一个二值图像,白色的区域就是人脸候选区域。

然后利用垂直积分投影方法来对人脸候选区域进行判决。

算法定位效果如下:图2-2 不同情况下人脸定位效果Fig 2-2 The different Human Face positioning effect总体而言,从实验结果可以看出本算法有如下特点:(1)对女性人脸的定位效果受到头发的影响比较大,定位精度不高。

(2)有一定的抗倾斜的能力。

(3)对背景和被检测者的发型、着装、脸部表情没有严格的限制。

(4)对于不同的人脸具有较高的鲁棒性。

(5)在实际应用中范围有限。

2.2 基于AdaBoost算法的人脸定位2.2.1 AdaBoost算法概述AdaBoost算法是一种基于样本(包括正样本和反样本)训练学习的方法。

训练前先从原始的样本图像中计算出相应的Haar特征值,再把Haar特征作为整个训练过程的输入变量,利用算法挑选出部分分类能力较强的Haar特征构成各自对应的弱分类器,然后利用AdaBoost算法按目标驱动的方式将多个弱分类器组合成一个强分类器。

AdaBoost算法是第一个实时的人脸定位算法,该方法从本质根除了定位的速度问题,同时拥有较好的定位结果。

利用此方法能够将一组弱学习方法提升为一个强学习方法,其核心思想是当分类器对某个样本分类正确时,则降低这个样本的权重;当分类错误时,则增加这个样本的权重,使得在后续的学习中可以集中分类错误的训练样本进行学习,最终得到一个定位准确率十分理想的分类器。

文中采用的AdaBoost算法采用的是Haar-Like特征。

Haar-Like特征最早是由Papageorgio应用于人脸的表示,Viola等在他们的基础上进行了扩展,使用3种类型4种形式的特征。

3种类型分别为:2-矩形特征、3-矩形特征、4-矩形特征,4种形式如图2-3所示:图2-3 Viola特征库Fig 2-3 Feature library2.2.2 AdaBoost算法分类器每个Haar特征对应看一个弱分类器,但并不是任伺一个Haar特征都能较好的描述人脸灰度分布的某一特点,如何从大量的Haar特征中挑选出最优的Haar特征并制作成分类器用于人脸检测,这是AdaBoost算法训练过程所要解决的关键问题。

Paul Viola和Michael Jones于2001年将Adaboost算法应用于人脸检测中,其基本思想是针对不同的训练集训练同一个分类器(弱分类器),然后把这些不同训练集上的得到的分类器联合起来,构成一个最终的强分类器。

Adaboost算法中不同的训练集是通过调整每个样本对应的权重来实现的。

开始时,每个样本对应的权重是相同的,对于h1分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突出出来,从而得到一个新的样本分布U2。

在新的样本分布下,再次对弱分类器进行训练,得到弱分类器h2。

依次类推,经过T 次循环,得到T个弱分类器,把这T个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。

训练系统总体框架,由“训练部分”和“补充部分”构成。

依据系统框架,本文的训练系统可分为以下几个模块:(1) 以样本集为输入,在给定的矩形特征原型下,计算并获得矩形特征集;(2) 以特征集为输入,根据给定的弱学习算法,确定闽值,将特征与弱分类器一一对应,获得弱分类器集;(3) 以弱分类器集为输入,在训练检出率和误判率限制下,使用AdaBoost算法挑选最优的弱分类器构成强分类器;(4) 以强分类器集为输入,将其组合为级联分类器;(5) 以非人脸图片集为输入,组合强分类器为临时的级联分类器,筛选并补充非人脸样本。

本文基于VC++6.0的平台对AdaBoost算法的人脸定位作了实现,由于分类器的训练缺乏专业的人脸数据库,且太过复杂,故采用了比较成熟的OpenCV中所提供的级联分类器:haarcascade_frontalface_alt2.xml。

实验结果如图2-4所示:图2-4 基于AdaBoost算法的人脸定位效果Fig 2-4 The AdaBoost algorithm-based face localization effect通过与基于肤分割的人脸定位的实验结果相比,基于AdaBoost算法的人脸定位在定位精度方面有了明显的提高,尤其是在对女性人脸定位方面有了很大的提高(在基于肤色分割的人脸定位算法中,头发的影响比较大),但是在实现的难易上比基于肤色分割的人脸定位复杂了很多(需要在分类器的训练上花费比较多的功夫),而且该算法在侧面人脸定位方面的精度上也有所欠缺。

总的来说,该算法有了很大的进步,有了重要的实际应用意义。

2.3 基于特征提取的人脸定位方法人脸的结构非常复杂,故人脸图像的特征也非常丰富。

人脸定位利用的是人脸的共性特征,大致分为基本特征、变换域特征、统计特征等。

基本特征又包括灰度特征、边缘特征、形状特征、结构特征等。

利用这些特征或者特征的组合,可以有效地表征一幅人脸。

2.3.1 肤色检测该算法和基于肤色分割的人脸定位算法一样,都需要进行肤色的检测。

通过实验,我们沿用第二章所采用的对肤色的判决,对整个图像进行检测,这样就将图像变成一个二值图像。

2.3.2 特征部位检测二值化图像之后,我们初步可以对整个图像中的人体的头部进行划分,通过边缘检测等方法对整个人脸进行划分,区别出人的脸部和头发部分,并用不同的颜色进行标识。

效果如图2-5:图2-5 原图像与进行区分后的图片Fig 2-5 The original image and the image after the distinction2.3.3 建立样本直方图为了实现对脸部的定位,需要对样本图像建立相对应特征点的直方图,这里,我们对上一部区分出来的脸部和头发部位进行建立直方图的操作,具体效果如下:图2-6 脸部直方图Fig 2-6 The face of histogram图2-7 头发直方图Fig 2-7 Hair histogram建立好直方图后,我们首先通过直方图匹配法来确定眼睛的位置,在二值图像中,设点(x,y)处的灰度值为g(x,y),二次微分的表达式为:∑=++-(,)(,)9(,)d x y g x i y j g x yi j=-,1,0,1If d(x,y)>D, d(x,y)=255else d(x,y)=0 (式2-2)其中D 是预先设定好的门限值。

由二值图像大小可以大致求出头部的顶点位置H ,头顶的位置不要求很精确,因为它对接下来的眼睛定位影响不大。

求到H 点后,由H 点向下移动一定距离,在这里开始依次向下移动,每移动一次都抽取一横条进行投影直方图分析,直到判断出眼睛的大致位置位置为止。

由于眉毛与眼睛挨得比较近,在检测眼睛位置的时候有可能会受到眉毛的影响而产生偏差。

因此在检测出眼睛的大致位置后需要进一步检测原图中眼球的位置。

根据眼球处的灰度特性,对眼球的检测可以采用圆面匹配的方法。

由于眼球的灰度特征比较明显,对眼球的检测正确率能够达到100%,从而也保证了眼睛位置的准确率。

由于在人脸中,人脸的正面像中,脸颊基本上是一条垂直方向上的直线段,如图2-8。