人脸检测主要是基于计算机识别的一项数字化技术,用以准确获取人的脸部大小和位置信息,在进行人脸检测时,突出主要的脸部特征,淡化次要的环境、衣着等因素。对于某些情况下,人脸检测也可以计算出人脸,如眼睛,鼻子和嘴等精确的微妙特征。由于在安全检测系统,医学,档案管理,视频会议和人机交互等领域人脸检测系统都有光明的应用前景,因此人脸检测逐渐成为了两个跨学科领域研究的热门话题:人工智能和当前模式识别。本文基于OpenCV视觉库具体的设计并开发了对数字图像中的人脸检测的程序,所采用的人脸检测的原理主要是分类器训练模式(Adaboost算法)提取Haar特征的方法。它在整个软件极其重要的作用,图像中人脸的准确定位和识别都受图像处理好坏的直接影响。本次所设计的软件在图像处理部分所采用的方法是基于Adaboost算法进行Haar特征的提取,在此之上加以通过积分图方法来获取完整的级联分类器结构,进行人脸检测时,OpenCV级联分类器通过Adaboost人脸检测算法进行训练,此后采用不同情况下的实验样本完成精确定位以及检测试验。经过代码的设计和调试,在最后的测试中针对数字图像进行的人脸检测和定位达到了较好的效果,提高了定位和识别的正确率。
关键词:人脸检测,AdaBoost,分类器,OpenCVAbstract
Facedetectionismainlybasedoncomputerrecognitionofadigitaltechnology,facesizeandlocationinformationtoaccuratelyobtaintheperson,duringfacedetection,highlightthemainfacialfeatures,dilutethesecondaryenvironment,clothing,andotherfactors.Forsomecases,facedetectioncanalsocalculateaperson'sface,suchaseyes,noseandmouth,andothersubtlefeaturesaccurate.Becauseinthefieldofhumansecuritydetectionsystems,medicalrecordsmanagement,videoconferencing,andhuman-computerinteractionfacedetectionsystemhasbrightprospects,andthereforefacedetectionisbecomingatwointerdisciplinaryresearchfieldshottopic:artificialintelligenceandThecurrentpatternrecognition.Thisarticleisbased.penCVvisionlibrarydesignedanddevelopedspecificallyfordigitalimagefacedetectionprocess,theprinciplesusedfacedetectionmethodsaremainlyclassifiertrainingmode(Adaboostalgorithm)toextractHaarfeatures.Itisinthevitalroleofthesoftware,theimageofthehumanfaceaccuratelylocateandidentifyallthatisgoodorbadadirectimpactontheimageprocessing.ThissoftwareisdesignedimageprocessingmethodusedinpartbasedHaarAdaboostalgorithmtoextractfeatures,ontopofthistobetogetthefullcascadeclassifierstructurebyintegratingthediagrammethodforfacedetection,OpenCVcascadeclassifieristrainedbyAdaboostfacedetectionalgorithm,thentheuseoftheexperimentalsampleunderdifferentcircumstancesforaccuratepositioningandtesting.Throughdesignanddebuggingcode,facedetectionandlocationinthefinaltestfordigitalimagestoachievebetterresultsandimprovetheaccuracyofpositioningandrecognition.
Keywords:facedetection;AdaBoost;classifier;openCV目录
摘要...............................................................................................................................................................1Abstract.............................................................................................................................................................2第1章人脸检测概述..................................................................................................................................11.1背景.................................................................................................................................................11.2目前的研究状况.............................................................................................................................11.3研究意义.........................................................................................................................................2第2章人脸图像处理技术..........................................................................................................................32.1OpenCV概述..................................................................................................................................32.1.1OpenCV简介.......................................................................................................................32.1.2应用领域..............................................................................................................................32.1.3OpenCV的基本结构...........................................................................................................42.1.4OpenCV的特征......................................................................................................................42.2图像预处理.....................................................................................................................................52.2.1灰度图像转换......................................................................................................................52.2.2图像噪声消除......................................................................................................................62.2.2图像边缘检测......................................................................................................................6第3章人脸检测原理与算法......................................................................................................................73.1人脸识别原理.................................................................................................................................73.2人脸检测方法.................................................................................................................................73.3改进型双重人脸检测.....................................................................................................................93.4双眼定位算法...............................................................................................................................103.5双重检测算法的实现...................................................................................................................11第4章人脸识别算法与实现....................................................................................................................134.1设计思想.......................................................................................................................................134.2程序设计流程...............................................................................................................................134.3代码编写.......................................................................................................................................144.3.1载入图片阶段....................................................................................................................144.3.2图片预处理阶段................................................................................................................144.3.3加载分类器并进行检测....................................................................................................144.3.4打印检测结果....................................................................................................................15参考文献........................................................................................................................................................16附录一人脸检测源程序..............................................................................................................................17第1章
1.1
背景
人脸检测概述
近年来,随着信号处理理论和计算机的出现及其发展,人们开始用摄像机获取环境图像并将其转换成数字信号,用计算机实现对视觉信息的处理,这就形成了计算机视觉。计算机视觉是当前计算机科学中的一个非常活跃的领域,其基本假设是:可以用计算的方式来模拟人类的视觉机制。
人脸的自动识别是一种重要的生物特征识别技术,与其它身份识别方法相比,人脸识别具有直接、方便、友好等特点,因而人脸自动识别问题的研究不仅具有重要的应用价值,而且具有重要的理论意义。现在,随着科学技术和电子商务的发展,人脸检测的应用背景已经远远超出了人脸识别系统的范畴,在基于内容的检索、数字视频处理、计算机视觉、人机交互等方面都有着重要的应用价值。
人脸识别通过计算机提取人脸的特征,并根据这些特征进行身份验证。人脸与人体的其他生物特征(指纹、虹膜等)一样与生俱来不可改变,它们所具有的唯一性和不易被复制的良好特性为身份鉴别提供了必要的前提,同其他生物特征识别技术相比,人脸识别技术具有操作简单、结果直观、隐蔽性好的优越性。1.2
目前的研究状况
目前,许多人脸识别系统能够在特定条件(光照、背景、人脸正对摄像头等)下很好地实现人脸识别,识别效率高。但是在实际运用中,各种条件不可能都满足,特别是针对户外监控识别系统,环境变化比较大,现有系统识别效率明显下降。
目前的人脸识别系统所需要解决的问题主要有以下几点:
(1)人脸具有很复杂的细节变化,不同的外貌特征如脸形、肤色等,不同的表情如眼、嘴的开与闭等;
(2)其他物体对人脸的遮挡,如眼镜、头发和头部饰物以及其他外部物体等;另外一方面由于外在条件变化所引起:
1(3)成像角度的不同也能造成人脸的多姿态,如平面内旋转、深度旋转以及上下旋转,其中深度旋转影响较大;
(4)光照的影响,如图像中的亮度、对比度的变化和阴影等;
(5)图像的成像条件,如摄像设备的焦距、成像距离,图像获得的途径等等。这些困难都为解决人脸问题造成了难度。如果能找到一些相关的算法并使其能在应用过程中达到实时,将为成功构造出具有实际应用价值的人脸检测系统提供保证。1.3
研究意义
人脸识别是机器视觉和模式识别领域最富有挑战性的课题之一,同时也具有较为广泛的应用意义。人脸识别技术是一个非常活跃的研究领域,它覆盖了数字图像处理、模式识别、计算机视觉、神经网络、心理学、生理学、数学等诸多学科的内容。如今,虽然在这方面的研究已取得了一些可喜的成果,但是FRT在实际应用中仍面临着很严峻的问题,因为人脸五官的分布是非常相似的,而且人脸本身又是一个柔性物体,表情、姿态或发型、化妆的千变万化都给正确识别带来了相当大的麻烦。如何能正确识别大量的人脸并满足实时性要求是迫切需要解决的问题。
2第2章
2.12.1.1
OpenCV概述OpenCV简介
人脸图像处理技术
OpenCV是Intel公司支持的开源计算机视觉库。它轻量级而且高效——由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。1999年在俄罗斯设立的软件开发中心“SoftwareDevelopmelltCellter¨开发的。
OpenCV采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上。OpenCV还提供了Python、Ruby、MATLAB以及其他语言的接口。OpenCV的设计目标是执行速度尽量快,主要关注实时应用。它采用优化的C代码编写,能够充分利用多核处理器的优势。如果是希望在Intel平台上得到更快的处理速度,可以购买Intel的高性能多媒体函数库IPP(IntegratedPerformancePrimitives)。IPP库包含许多从底层优化的函数,这些函数涵盖多个应用领域。如果系统已经安装了IPP库,OpenCV会在运行时自动使用相应的IPP库。
OpenCV的一个目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷地设计更复杂的计算机视觉相关应用程序。OpenCV包含的函数有500多个,覆盖了计算机视觉的许多应用领域,如工厂产品检测、医学成像、信息安全、用户界面、摄像机标定、立体视觉和机器人等。因为计算机视觉和机器学习密切相关,所以OpenCV还提供了MLL(MachineLearningLibrary)机器学习库。该机器学习库侧重于统计方面的模式识别和聚类。MLL除了用在视觉相关的任务中,还可以方便地应用于其他的机器学习场合。2.1.2
应用领域
自从OpenCV在1999年1月发布alpha版本开始,它就被广泛用在许多应用领域、产品和研究成果中。相关应用包括卫星地图和电子地图的拼接,扫描图像的对齐,医学图像去噪(消噪或滤波),图像中的物体分析,安全和入侵检测系统,自动监视和安全系
3统,制造业中的产品质量检测系统,摄像机标定,军事应用,无人飞行器,无人汽车和无人水下机器人。将视觉识别技术用在声谱图上,OpenCV可以进行声音和音乐识别。2.1.3
OpenCV的基本结构
OpenCV主体分为五个模块,其中四个模块如图2-1所示。OpenCV的CV模块包含基本的图像处理函数和高级的计算机视觉算法。ML是机器学习库,包含一些基于统计的分类和聚类工具。HighGUI包含图像和视频输入/输出的函数。CXCore包含OpenCV的一些基本数据结构和相关函数。
CV图像处理和视觉算法MLL统计分类器HighGUIGUI图像和视频输入/输出CXCORE基本结构和算法、XML支持、绘图函数图2-1OpenCV的基本结构图2-1中并没有包含CvAux模块,该模块中一般存放一些即将被淘汰的算法和函数(如基于嵌入式隐马尔可夫模型的人脸识别算法),同时还有一些新出现的实验性的算法和函数(如背景和前景的分割)。2.1.4OpenCV的特征
OpenCV的主要特征有以下几个方面:(1)图像数据的操作(分配、释放、复制、设置和转换)。
(2)图像是视频的输入输出I/O(文件与摄像头的输入、图像和视频文件输出)。(3)矩阵和向量的操作以及线性代数的算法程序(矩阵积、解方程、特征值以及奇异
4值等)。
(4)各种动态数据结构(列表、队列、集合、树、图等)。
(5)基本的数字图像处理(滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等)。
(6)结构分析(连接部件、轮廓处理、距离变换、各自距计算、模板匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合、Delaunay三角划分等)。
(7)摄像头定标(发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、立体对应)。
(8)运动分析(光流、运动分割、跟踪)。
(9)目标识别(特征法、隐马尔可夫模型:HMM)。
(10)基本的GUI(图像与视频显示、键盘和鼠标事件处理、滚动条)。(11)图像标注(线、二次曲线、多边形、画文字)。2.2
图像预处理
由于一些外界条件的不同,例如用干采集图像的设备的性能好坏、现场光照明暗程度不同等,图像通常会存在噪声、清晰度低等缺陷。此外,图像中人脸的绝对坐标及区域大小会随着人离摄像头的远近而改变。要想保证提取到的人脸特征不会受到上述这些因素的影响,则需要在提取特征人脸之前,对图像进行预处理。2.2.1
灰度图像转换
由于对彩色图像数据的分析比黑白图像要难得多,所以将彩色图像转换成灰度
图是图像预处理的第一步。对图像进行灰度化处理是智能识别的基础,一般采集的图像都是三原色(R,G.B三个分量)。为了提高检测运动目标的速度,需要在特征提取之前将人脸图像进行灰度化,这样就只需要对像素点的灰度值进行处理。
本文采用OpenCV视觉库的接口进行灰度化处理,具体实现是通过使用cvCvtColor()函数,使用RGB2GRAY参数,将RGB彩色图转换为灰度图。
52.2.2图像噪声消除
通常视频可以理解为连续的图像序列,在采集、保存、传输视频图像数据的过程中常会出现噪声干扰现象,噪声会使图像失真,使图像不像原木那样均匀连续地变化,进而会对图像的后续处理产生影响。因此,对视频图像进行检测分析之前,应对输入的图像进行噪声消除,尽最地消除图像中的噪声干扰,有助于准确快速地获取图像的特征,从而也能更好地进行模式识别等复杂处理,同时也能够减少目标检测的计算量。
按影响图像质量的噪声源可将图像噪声分为三类:第一类,阻性元件内部电子自由热运动产生的电子噪声,常用零均值高斯白噪声模型来近似。第二类,由于光电转换引起的泊松噪声(椒盐噪声)。第三类,在感光过程中产生的颗粒噪声。根据噪声与信号之间的关系,噪声也可分为加性噪声和乘性噪声。加性噪声的来源主要有人为噪声、自然噪声、内部噪声,主要表现形式有脉冲噪声和高斯噪声。乘性噪声往往具有随机性,是图像中最普通的噪声,其中一个典型代表是光照变化。
OpenCV消除图像噪声的常用方法有:均值滤波、中值滤波和高斯滤波。均值滤波对高斯噪声有较好的抑制作用,中值滤波适用于处理椒盐噪声。下面简单介绍下这三种去噪方法。2.2.2
图像边缘检测
在对图像进行目标检测时,图像边缘是重要的提取信息。根据人眼的直观感受,目标图像的边缘信息是最明显的,图像边缘在整个图像中变化差异最大。提取图像边缘的主要依据是目标边缘处像素点的灰度值变化比较剧烈。图像边缘往往处于前景物体与背景图像的交界处,所以一般采用高通滤波器,保留高频信号。
常用的边缘检测方法有:梯度边缘检测、差分边缘检测、Sobel边缘检测算子、Laplace边缘检测算子等。OpenCV中常用于边缘检的函数有:cvSobel(),cvLaplace(),cvCanny()。
6第3章
3.1
人脸识别原理
人脸检测原理与算法
人脸识别算法的原理:系统输入一般是一张或者一系列含有未确定身份的人脸图像,以及人脸数据库中的若干已知身份的人脸图象或者相应的编码,而其输出则是一系列相似度得分,表明待识别的人脸的身份。
此方法是把人脸面部器官之间关系编码并准则化的人脸检测方法。这是一种自顶而下的方法,根据人脸面部器官的对称性、灰度差异等先验知识,制定一系列的准则。当图像中的待测区域符合准则,即被检测为人脸。
人脸及器官具有典型的边沿和形状特征,通常人们利用采用Laplacian,Sobel和Canny等算子来提取边沿特征,将这些特征用于人脸的定位。边沿和形状对于光照条件的变化具有很好的鲁棒性,灰度特征对光照比较敏感。3.2
人脸检测方法
现有的人脸检测方法,人致分为三类:基于人脸几何特征的方法、基于人脸肤色的方法和基于人脸统计理论的方法。(1)基于人脸几何特征的方法
人脸的几何特征即人脸的而部特征(如眼睛、鼻户、嘴巴、耳朵、肤色等),主要判别标准是人脸轮廓五官的对称性以及各个特征之间相对的位置。典型的基于人脸几何特征的方法有:基于先验知识的人脸检测方法和基于模板的人脸检侧方法.
基于先验知识的检测方法,首先需要确定人脸区域,然后通过前辈总结的先验知识来检验是否存在人脸,例如人脸面部五官的对称性、灰度值的不同等.人脸五官存在一些基本的规律,例如眼睛的形状及对称性,眼睛、鼻子、眉毛和嘴巴处的像素灰度值要大于人脸其他部位,鼻和嘴巴的中心点的连线与两只眼睛的连线是垂直的等.可以将这些特征信息作为一个判别准则.若图像符合这些准则,则确定存在人脸。该算法的优点为人脸特征比较直观、检测容易实现、计算量小。然而,该算法也存在不容忽视的缺点,检测准确率不高。如果人脸表发生变化或人脸偏向的角度不同,则人脸特征的判别准则
7也会产生很大的变化。这种情况下,若只采用固定准则去定义人脸.则会产生人睑的误检漏检,检测准确率不高。
基于模板的人脸检测方法,就是预先将包含人脸局部特征的标准脸部模型参数化。利用算法计算出图像待检测区域的特征与标准脸部模板的相似度,如果相似度的大小符合制定的准则(大干某个阈值),就可以判断检测区域存在人脸。该方法虽然实现容易,但标准模板的设定固定单一,不能有效地解决人睑姿态、大小以及形状变化等问题。为了提高该方法的鲁棒性,人们又提出了基干弹性模板的人脸检测方法。在该方法所建立的模型中,对应面部器官(人眼、鼻子等)的尺寸、位置、角度等信息的参数被设置为可变参数,这样在检测时能够根据被测图像的具体情况动态地调整标准模板的参数,利用修正后的标准模板再进行检测,检测的准确度会提高很多,而且能够减少外界环境(光线、人脸表情变化等)对检测结果的影响。该算法缺点是耗时较长,不利于实时性检测。(2)基于人脸肤色的方法
肤色是人面部的重要特征,不依赖于面部其他器官的细节特征,相对稳定性较强。人脸表情变化、人脸偏向角度变化等情况对确定肤色区域不会产生影响,并且其色彩信息能够区别于大多数背景物体的颜色,从而可以很好地对人脸区域进行分割。因此,基于肤色的人脸检测方法实用性较强。但是由于外界环境的变化,光照强度、光源颜色的变化,对利用肤色特征进行人脸分割会产生很大的影响。因此,需要结合几何形状、运动分析算法,才能很好地在视频中对人脸进行定位。
面部肤色特征一般通过建立肤色模型来描述,Gauss模型、混合Gauss模型以及直方图模型都是常用的肤色模型。检测时根据被测图像像素与肤色模型的相似度,然后结合空间相关性将可能的人脸区域从背景中分割出来,再对分害」出的区域进行几何特征分析,确定其与人脸特征的相关值,从而排除非“人脸”的似肤色区域。(3)基于人脸统计理论的方法
基于统计理论进行人脸检测的方法是目前人脸检测领域的研究重心。其主要思想是将人脸检测的问题转化为统计学上模式识别的问题,即通过采用统计分析以及机器学习的方法,对人脸样本以及非人脸样本进行训练,得到其各自的特征,从而构建一个人脸分类器。利用该分类器可以完成对人脸的检测,同时可以得到人脸的绝对坐标和大小。现有的主要方法包括有:基于特征空间的方法、摹于人工神经网络的方法、基于支持向量机的方法、基于隐马尔可夫模型的方法以及Boosting方法。
83.3改进型双重人脸检测
总结3.2节多个人脸检测算法的特点可以发现:基于几何特征的方法虽然容易实现,
但易出现人脸的误检漏检,检测效果较差;基于人脸肤色的方法容易受到外界光线强度变化的影响,鲁棒性差,检测正确性低:相比较而言,基于人脸统计理论的方法检测正确率较高,应用比较广泛。其中AdaBoost方法算法计算复杂度低,运算速度快,本系统采用该方法作为人脸检侧的主要手段,并结合双眼定位对原始检测算法进行改进,得到一个双重检测方法,来实现人脸检测功能。
传统的AdaBoost方法是基于统计理论的方法。基于AdaBoost的实时人脸检测算法是将人脸图像用Harr-like特征表示,并引入了“积分图”对图像进行表达,减少了计算特征值所耗费的时间。利用AdaBoost思想,选择若干最能代表人脸的弱特征,从而构造成一个强分类器。基于\"Cascade\"策略,将训练所得的强分类器按照串联方式连接起来,形成一个级联分类器。通过加载该级联分类器.可以对待检测图像的分类,从而实现人脸检测。该算法能够提高检测人脸的速度,实时性好,检测性能也较好。
Harr-like特征是一种简单的矩阵特征,人脸图像的局部特征主要由相邻矩形区域灰度值的变化来反映。Haar-like特征可以分类为:边缘特征、线性特征、中心特征,其具体的表现形式如图3-1所示。边界特征包含四种:线性特征包含八种;中心特征包含两种。
图3-1Harr-like特征引入积分图(IntegralImage)这个概念,可以对Haar-like特征值进行快速计算,减少训练样本以及检测人脸所耗费的时间。积分图的主要思想为:构造一个数组,其中的元素
9表示从起点到各个点所组成的矩形区域中所有像素之和,并将该数组保存在内存中,当需要计算某个矩形区域中所有像素之和时,再不需要对整个区域进行计算,而是可以直接对该数组中的元素进行索引,从而提高计算速度。
AdaBoost算法应用于人脸检测,主要是对赋予了不同权值的“人脸”与“非人脸”样本进行迭代学习,通过每一轮学习,都得到一个有最高检测正确率的弱分类器。经过N轮训练。选择出正确率最高的N个弱分类器,并对其赋予一个与其正确率相应的权值。然后由这N个弱分类器结合成为一个强分类器。
最终,将得到的强分类器串联起来形成级联分类器一人脸检测器。对每一级强分类器都进行闽值调整,使得每一级都能使大多数的人脸样本通过,而将大部分的非人脸样本剔除。此外,对强分类器进行串联时,应该将相对较重要的特征构成且结构也比较简单的强分类器作为前而几级,这样能够将大量的“非人脸”样本首先剔除掉。这样尽管随着级数的增多,矩形特征数目越来越多,计算量会一直减少,人脸检测的速度也会加快,就能符合系统对实时性的要求。3.4
双眼定位算法
传统的AdaBoost人脸检测算法,是通过加载训练好的人脸分类器,提取人脸特征。对待测图像进行分析,并通过判断得到结果。然而,选取不同的训练样本,训练所得级联分类器的检测效果也有很大不同。同时,由于样本的选取过程随机性较大,不能包含所有人脸图像,得到的分类器也不能保证可以检测到所有的人脸。而且,本系统需要的是一个正脸分类器,这样就要求训练集中所有正样本为正面人脸,负样本需要包含非正脸的所有情况。通过测试发现,如果训练样本选取不当,系统检测算法就会严重失效,导致误检的情况,例如,在复杂背景下将“非人脸”检测为“人脸”的情况:将偏转角度较大的人脸误检为正面人脸的情况。这些误检情况会对后续的人脸识别产生很大的影响,从而也影响了系统最终结果的准确性。所以,针对本系统的应用需求,需要对该检测方法进行改进。
双眼是人面部的重要的特征,特别是对于正面人脸,双眼的位置以及距离能够很好地描述该人脸的大小,同时能够帮助定位人脸的其他特征。因此,通过对“人脸”图像进行双眼的定位,可有效地截取正面人脸区域,从而也对后续人脸识别的准确率的提高
10有着积极的作用。本系统在传统的人脸检测算法基础上加入了双眼定位算法,对检测到的“人脸”进行二次筛选,获取系统识别模块所需的“正脸”。
双眼定位检测算法,只针对由人脸检测得到的“人脸”图像区域进行检测。该算法主要是基于AdaBoost的思想,通过加载双眼分类器\"haarcascadeeseye.xml\",对“人脸”图像再次进行双眼检测。如果不存在双眼特征,则函数返回集合为空,此时认为该“人脸”图片为误检,并将其舍弃;如果存在双眼特征,则函数返回定位到的双眼坐标。然后根据检测得到的双眼坐标,按既定的检测方法判断其是否符合人脸双眼特征的基本准则。这些基本准则主要包括:双眼坐标是否处于“人脸”区域的上方;双眼宽度是否小于“人脸”区域宽度的0.4倍等等。如果符合这些基本准则,则判断该“人脸”为“正脸”,如果不符合,则认为检测得到的并不是人的双眼,即该图像不是人脸,并将其舍弃。经过该算法处理后,能够过滤掉很多侧面人脸以及非人脸图像,提高了“正脸”检测的准确率。3.5
双重检测算法的实现
支持矢量机(SupportVectorMachines)是由V.Vapnik与其领导的贝尔实验室的小SVM的理论基础来自于Vapnik等提出的统组一起开发出来的一种新的机器学习技术。
计学习理论,它的基本思想是,对于一个给定的具有有限数量训练样本的学习任务,如何在准确性(对于给定训练集)和机器容量(机器可无错误地学习任意训练集的能力)进行折中,以得到最佳的推广性能。
与传统统计学相比,统计学习理论(StatisticalLearningTheory或SLT)是一种专门研究小样本情况下机器学习规律的理论。该理论针对小样本统计问题建立了一套新的理论体系,在这种体系下的统计推理规则不仅考虑了对渐近性能的要求,而且追求在现有有限信息的条件下得到最优结果。Vapnik等人从六、七十年代开始致力于此方面研究,到九十年代中期,随着其理论的不断发展和成熟,也由于神经网络等学习方法在理论上缺乏实质性进展,统计学习理论开始受到越来越广泛的重视。
目前将该理论已经得到了一些应用,比如在光学字符识别等方面,并且获得了比较好的效果,不过由于建立完整的理论体系时间不长,该方法用于人脸检测的很少,尽管SVM算法的性能在许多实际问题的应用中得到了验证,但是该算法在计算上存在着一
11Osuna些问题,包括训练算法速度慢、算法复杂而难以实现以及检测阶段运算量大等等。等人介绍了一种具体的算法并对人脸识别问题进行了实验。他将样本集分为两个集合B和N,集合B作为子问题工作样本集进行SVM训练,并给出了两阶多项式分类器在人脸识别问题中的应用结果。试验结果表明该方法比Sung等提出的基于分布特征的学习方法的检测率有所提高,同时计算复杂度下降,提高了检测速度。
12第4章
4.1
设计思想
人脸识别算法与实现
程序设计的总体思想是通过VS2010编写一个基于OpenCV视觉库的Windows应用程序。首先基于AdaBoost算法的思想,采用windows命令训练多个相近的弱分类器级联成理想的强分类器。然后以OpenCV视觉库的Haartraining函数结构为基础,编写使用训练好的级联分类器进行人脸检测的程序,编写的程序具有读入待检测图片,待检测图片预处理,加载分类器,利用分类器检测人脸,输出检测结果的功能。4.2
程序设计流程
分类器的训练过程是通过windows命令来完成的,可分为两个阶段:
a.样本集建立:根据人脸数据库样本的属性,设定相应的Windows命令行参数,建立正样本集和负样本集及其相应的样本集说明文件。
b.分类器训练:
利用OpenCV视觉库包含的opencv_createsamples.exe程序建立训练集的VEC文件,在根据训练集的具体数据设定Windows命令行参数,进行人脸检测分类器训练。
根据人脸检测的功能,检测程序的设计流程可详细分为:
a.读取待检测图像:使用OpenDlg.GetPathName()函数找到指定的待检测图像,并判断待检测图像的格式是否符合程序检测的要求,拒绝可能引起程序崩溃的错误文件格式。
b.待检测图像预处理:利用OpenCV视觉库中所包含的功能函数,对格式符合要求的待检测图像进行预处理,对原图像进行灰度化处理和直方图均衡化,使图像中可能存在的人脸特征突出,降低图像噪声。
c.加载分类器:在本地找到并加载指定的分类器文件。
d.人脸检测:使用cvHaarDetectObjects()函数,快速确定图像中的haar特征,并利用成功加载的分类器对经过预处理的待检测图像进行准确并高效的人脸检测和定位。
OpenCV中已经包含有训练好的分类器文件,我们只需要配置好环境,使用它即可。
134.34.3.1
代码编写载入图片阶段
penDlg()载入待检测的数字图像源文件,使用MFC编程函数。通过图像文件格式设定语句:JPGfileformat,可以设定所载入的图像为JPG或BMP或二者皆可的文件。4.3.2
图片预处理阶段
为保证检测的效率和准确性,要预先将载入的图像转化为灰度图像在进行处理,这里使用。penCV库的。vCreateImage()创建首地址并分配存储空间函数再进行处理。
Ipllmage*Gray_Img二cvCreateImage(cvSize(img->width,img->height),8,
1);
对图片做过灰度化处理以后,还需要考虑所有待检测图像间的差异,为确保检测结果的准确,特别是面对一些明显偏暗或偏亮的图片时,如果不对待检测图片做出调整图像的局部特征会直接影响检测的结果,因此需要对待检测的图像在预处理阶段做出对比度调整或直方图调整。
由于待检测的图像一般在尺寸,色彩,分辨率等方面不同于训练集中所用到的图像,这些图像的来源不同,背景不同,光照情况导致的亮度也有明显的差异,因此即使对这些待检测图像做对比度调整也不能够得到像调整训练集图像那样统一化的结果,因此待检测图像的预处理不适合做对比度调整,但对这些图像做灰度直方图均衡却能得到理想的效果,灰度直方图均衡化能够让过亮或过暗的图像灰度分布更加均匀,能够更好的突出图像中的人脸。
这一部分的预处理操作使用OpenCV视觉库自带的。vEqualizeHist()函数来完成。4.3.3
加载分类器并进行检测
将训练好的分类器放在程序跟目录下,并使用下列语句指定分类器名称:constchar*cascadename二\"Harr-AdBoost-Facedetection.xml\";
在编写程序代码时,可以简单便捷地利用人脸的Haar特征分类器,实现方式也非常简单,运用函数cvHaarDetectObjects()即可,该函数来自OpenCV视觉库,是一种非
14常经典的函数,常用于检测某些特定图像目标。4.3.4
打印检测结果
当程序检测到图片中存在的人脸之后并确定位置之后,会在原图片中按人脸的所占比例以圆形标记在原图片中标出。
15参考文献
[1]周德华,毛敏峰,徐浩.一种多人脸跟踪算法的研究与实现[J],电视技术,2005,275(5):88~90.[2]王伟;张佑生;方芳;人脸检测与识别技术综述[J].2006,5[3]高建坡,王煜坚,杨浩等.一种基于KL变换的椭圆模型肤色检测方法[J].电子与信息学报.2007,V01.29,No.7.[4]李刚,高政、人脸自动识别方法综述、计算机应用研究、2003,Vol8:4-9[5]高建坡,王煜坚,杨浩等.一种基于KL变换的椭圆模型肤色检测方法[J].电子与信息学报.2007,V01.29,No.7.[6]高建坡.视频序列中的人脸检测与跟踪算法研究.东南大学博士学位论文.2007,3.[7]基于五官特征定位的人脸识别技术在防盗门中的应用[D]中国海洋大学:2006[8]HuangFJ,ChenT.Trackingofmultiplefacesforhuman—computerinterfacesandvirtualenvironments[C].IEEEIntl.Conf.onMultimediaandExpo.NewYork,July2000.[9]张翠平,苏光大人脸识别技术综述中国图像图形学报[J]2000年11期[10]ViolaP,JonesM.Rapidobjectdetectionusingaboostedcascadeofsimplefeature[c].In:ProceedingsofIEEEConferenceonComputerVisionandPatternRecognition,Kauai,Hawaii,USA,2001,1:I-51l-518[11]ViolaP.,JonesM.J.、RobustReal-TimeFaceDetection、InternationalJournalofComputerVision57(2),137-154,2004[12]张宏林.visualC++数字图像模式识别技术及工程实践.北京:人民邮电出版社,2003年4月16附录一人脸检测源程序
#include\"cv.h\"#include\"highgui.h\"#include 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务