安徽工业大工商学院 毕业学士论文 基于OpenCV的人脸识别算法 姓名:*** 申请学位级别:学士 专业:测控技术与仪器 指导教师:***
摘要
人脸在社会交往中扮演着十分重要的角色,是人类在确定一个人身份时所采用的最普通的生物特征,研究人脸跟踪识别及其相关技术具有十分重要的理论价值和应用价值。彩色图像序列的人脸检测、跟踪与识别技术是随着计算机技术的高速发展和视频监控等应用的需要在近几年才逐渐成为一个研究热点。本文着重构建一套人脸跟踪识别系统,致力于精确实时地对彩色视频中的人脸图像检测跟踪,并可以将跟踪到的人脸图片传输到识别端进行身份识别。系统分为客户端和服务器两部分。针对传统Camshifl跟踪算法进行形态学处理、分配多个跟踪器等改进后的算法应用于客户端进行多人脸的跟踪。服务器端首先将人脸图像按其主要特征进行分块,再对分块图执行Eigenface算法实现人脸身份的识别。这套系统完成了对多人脸的跟踪效果,可广泛的应用于各种安防系统之中如:ATM机监控系统,门禁系统等。
Abstract
Human face is 0111\"primary focus of attention in social intercourse playingamajor rolei conveying dentity
and emotion.Researchonthe face tracking,recognition technology has great theoreticaland practical value.This paper focusesOilbuildingasetofhumanface recognition and trackingsystem tocommitted
toaccurate
and
real-timecolorvideoimages
,
andcalltransmit the tracked human face image to the recognition part to identify the person’S status.Thesystem is divided into client and server parts.Thetracking algorithm whichcarrieson morphology processing after traditional track algorithm Camshifl and assignments severaltrackingdevices is applied to the client for duplex facetracking.Theserver—side first divides the person face image into blocksaccording to its chief feature,then the blocksuses the Eigenfacealgorithm separately to realize the person’S status recognition.The system implementation for multiple face trackingcallbe widelyused among the various security systems,suchas:ATM machine monitoring system,accesscontrol system. Keywords:Face DetectionFace TrackingFace Recognition Eigenface Camshift
第一章绪论
本章论述了本文选题的背景、研究的意义、课题研究现状及国际发展动态,并对相关理论和应用领域做了详细论述,最后给出了本文的主要研究工作。
1.1选题背景
1. 视觉是人类从大自然中获取信息的主要手段。据统计,在人类获取的信息中,
视觉信息约占60%,听觉信息约占20%,其它的如味觉信息、触觉信息等加起来约占20%。由此可见视觉信息对人类的重要性,而人类获取视觉信息的主要途径来自于对图像的处理。人类的面部提供了大量视觉信息,知输入通道。
2. 口型识别、表情识别等,都建立在人脸的基础上。随着信息技术的发展以及
应用需求的剧增,人脸检i9l!}【l-21(Face Detection)作为人脸信息处理中的一项关键技术,日益成为一个热门的研究课题。人脸检测的目的是自动确定输入图像中是否存在人脸,并给出人脸的个数、位置、大小等参数。人脸跟踪f3叫(Face Tracking)则是要在图像序列中确定出各帧间人脸的对应关系,并在后续序列帧中跟踪出已定位人脸的运动轨迹。人脸识别【5】(Face Recognition)是在人脸检测的基础上分析人脸的图像特征,进而确定人脸的身份特征。人脸是一类具有相当复杂的细节变化的自然结构目标,人脸器官的形状、尺寸、纹理、表情等变化复杂,难以用统一的模式加以描述,而人脸检测的实应用环境也十分复杂,不同的成像条件、不确定的饰物及复杂的背景等均向人脸检测算法提出了苛刻的要求。同时,序列图像中运动场景的快速分割、人脸面部的非刚性运动、人脸自遮挡和目标之间互遮挡的处理等也为人脸的跟踪带来了一定的挑战,人脸的检测与跟踪技术涉及到模式识别、图像处理、计算机视觉、人工智能等学科知识。并且目前大多系统都要求使用者固定在摄像机前的某一位置。然而人总是处于运动中的,尤其在信息交互过程中,对使用者的这种要求局限了系统的应用性。所以,如果能找到上述问题的解决方法,成功构造出实时高效的人脸跟踪与识别系统,将为
解决其它类似的复杂模式的跟踪与识别提供重要的启示。因此,人脸跟踪与识别作为相关研究领域的关键技术,近年来已成为机视觉方面的一个重要研究课题及备受关注的前沿方向。 2基于OpenCV的人脸跟踪识别系统研究 1.2人脸跟踪识别国内外研究进展
近些年来,随着计算机硬件性能的不断发展,基于图像传感器的视频监控系 统获得了迅猛发展,各种面向复杂应用背景的视频监控系统也随之大量涌现。也就是说,随着信息技术的不断发展,视频监控系统在商业、国防安全和军事应用领域中的需求将日益增加。由于视频监控系统具有如此大的应用前景,它引起了许多国家的高度重视,一些国家投入大量资金和科技人员进行了广泛研究,已开发了如CMU的VASM、W4、Pfinder以及Smart Kiosk系统。同时它也成为众多国内外学术会议和专题讨论的主题:如IEEE PAMI2000年8月期上就有一个关于视觉监控的专题;2001年10月IEEE举行了第3代视觉监控国际专题讨论会;中国科学院自动化所分别在2002年与2003年主办了全国智能视觉监控学术会议。在1996年至1999年间,美国国防高级研究署(DARPA)设立了以卡内基梅隆大学为首联合美国十几所高等院校和研究机构参加的视频监控项目VSAM(Video Surveillance and Monitoring)。该项目的主要目标是利用视频
理解、网络通信、多种传感器融合等技术实现对未来城市、战场等进行自动监控。DARPA在2000年又资助了重大项目HID计划(HumanIdentification ataDistance),研究开发多模式的监控技术以实现远距离情况下人的检测、分类和识别,以增强国防、民用等场合的保护能力,使其免受恐怖袭击。在欧洲,欧盟EULTR(EuropeanUnion LongTermResearch)资助比利时Katholieke大学的电子工程系、法国国家计算机科学和控制研究院INRIA等欧洲著名的大学和研究机构联合研究为警察、法庭等司法机关提供基于图像处理的监控系统。该研究的目标是提供图像视频处理、理解技术,让司法机关能从现有的监控系统的录像资料中获取更多有用的犯罪证据。另外,欧盟IST(InformationSociety Technologies)的Frameworks程序委员会也在1999年设立重大项目ADVISOR(AnnotatedDigital Video or Surveillance and Optimized Retrieval),旨在开发一个系统来有效地管理公共交通系统(如地铁),从而缓解城市交通压力,它覆盖了人群和个人的行为模式分析、人机交互等研究。日本也开展了用于共区域及智能小区的图像监控的CDVP(TheCooperative Distributed VisionProject)计划等。在国内,已有许多高等院校和研究机构在智能视频监控领域投入了相当的研究精力,例如,上海交通大学、清华大学【6。7l、华中科技大学和中国科学院自动化研究所【8】等。其中,中国科学院自动化研究所模式识别实验室对该领域做了大量研究,他们在人体运动分析、交通行为事件分析、交通场景视频监控和智能轮椅视觉导航等领域取得了许多科研成果。为了促进国内智能视频监控的发展,中国科学院自动化研究所在2002年和2003年分别举办了第一届和第二届全国智能视觉监控会议。《自动化学报》在2003年5月出版了一期视觉监控专刊。《计算机学报》、《软件学报》和《控制与决策》等一些杂志也对智能监控系统中一些关键技术进行刊载。当前的研究主要集中在多摄像机融合、摄像机标定、目标检测、目标跟踪、行为识别与描述等关键技术方面。其中,运动目标的跟踪识别是其中的
核心技术之一,它是后续的各种高级处理,如目标行为分析、行为识别等的础, 也是视频监控技术自动化和实时应用的关键。目标跟踪识别的实质是通过对图像传感器拍摄到的视频序列进行分析,计算出目标在每帧图像中的位置、大小和运动速度并识别其身份。其难点在于图像是从三维空间N-维平面的投影,本身存在信息损失,而且运动目标本身并不是一个确定不变的信号,它在跟踪识别过程会发生旋转、缩放、位移等各种复杂的变化。除此之外,图像信息往往会受到各类噪声、遮挡、光照等因素的影响。因此,开发出能够从容应对复杂环境的各种变化,精确、快速和稳定地跟踪识别运动目标的算法仍然是当前急需解决的课题。
1.3相关理论基础与应用领域
由以上章节可知当前人脸方面的研究已经呈现一片欣欣向荣之势,对人脸的 研究涵盖了模式识别、图像处理、计算机视觉以及人工智能等各方面的知识内容。
人脸跟踪与识别技术的应用领域也十分广泛,主要包括视频会议、智能监控、图
像与视频检索、人机交互、门禁控制以及家庭娱乐等。
下面分别介绍人脸处理中的各种理论基础和人脸研究成果的各类应用。 1.3.1理论基础 1、模式识别
模式识别,是通过计算机用数学方法来研究模式的自动处理。在人脸识别中, 如果是个体识别,则每个人是一个模式,预先存在数据库里的图像就是样本;如果是性别识别、种族识别和年龄识别,则不同的性别、种族或年龄分别构成一个模式:如果把图像中的每个子图都看作一个模式,则面部检测也是一个模式识别的问题,要求正确地把每个子图模式归入到人脸区域类或非人脸区域类。 模式识别一般分为如下几类:统计模式识别:如果模式类是几何可分的,则用几何分类法按照某种距离度量进行分类;若是几何不可分的,则用概率分类法,如贝叶斯决策理论。结构模式识别:利用语法的递归性,用小而简单的基元和语法规则来描述大而复杂的模式。模糊模式识别:将模糊技术引入到模式识别中,对特征和分类结果模糊化,
4基于OpenCV的人脸跟踪识别系统研究使得识别过程更能反映事物的本质。 聚类分析:当没有样本来训练分类器时,要求分类器能根据样本间的相似程 度自动分类。
模式识别在人脸检测算法中有着很重要的作用,有很多算法是基于模式分类 的技术来检测人脸的,同时在其它检测技术中,肤色模型、人脸区域验证等检测环节也需要模式识别的相关技术。 2、图像处理
这是一门用计算机对图像数据进行加工处理的学科,它主要有以下几方面的 内容:图像的数字化、图像分割、图像描述、图像增强、图像复原、图像的压缩编码以及运动图像的处理f9】等。数字图像的各项内容渗透在人脸检测与跟踪识别的诸多环节中。 3、计算机视觉
视觉是人类获取信息的主要来源,也是适应复杂环境的感知基础。使计算机 具有与人类相似的视觉处理能力,从而能更好的协助以至代替人的工作,这是人类长期追求的梦想。人类的视觉系统利用投影到视网膜上的二维的像对物体进行三维的理解。为此,计算机需要具有处理、分析和理解图像的能力。计算机视觉【9】
是一门用计算机来实现人的视觉功能,实现客观三维世界的识别的学科。 4、人工智能
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推
理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑 智能的计算机,使计算机能实现更高层次的应用。人工智能将涉及到计算机科学、
心理学、哲学和语言学等学科。可以说几乎是自然科学和社会科学的所有学科, 其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。 1.3.2应用领域
1、视频会议:视频会议【1o】是利用通信网以及电视实况方式召开的会议。通过视频会议系统,位于各地的与会者在开会时既可听到对方的声音,又可看到对方的影像、会议室的场景以及会议中展示的图片、表格等。这样可以大大节省会议差旅费,提高办事效率,节省时间。另外,视频会议系统在远程教学、远程医疗等领域中也有着广泛的应用。人脸的跟踪识别是视频会议中的关键技术之一。
2、智能监控:针对敏感场所(如银行、商店、停车场、自动提款机)开发的
智能监控…q2J系统,能够每天连续24小时的实时监视,并自动分析摄相机捕捉的图像数据,当抢劫、盗窃发生或发现具有异常行为的人时,系统能向保卫人员准确及时地发出警报,从而避免犯罪的发生。同时,人脸检测与跟踪技术在自动售货机、ATM机、交通管理、公共场所、行人的拥挤状态分析及商店中消费者流量统计等监控方面也有着相应的应用。
3、图像与视频检索:在CBIR(ContentBased ImageRetrieval,基于内容的图 像检索)系统中,图像中的人脸可以作为图像检索的条件,所以许多CBIR系统都将人脸检测作为系统中的一个重要组成部分。例如芝加哥大学开发的用于在万维网上搜索图像的影像搜索引擎Webseer,就使用了基于神经网络的人脸检测作为搜索引擎的一部分。因特网上广泛使用的数字图书馆中包含了大量的视频及音频信息,许多数字图书馆将人脸检测作为系统搜索引擎的一个重要的组成部分。
4、人机交互:人机交互【13.141是研究人、计算机以及他们之间相互交叉的技术。传统的人机交互是通过计算机鼠标和键盘进行的。然而人们期望计算机智能化,能够以自然的方式与人进行交流。人机交互研究的最终目的在于如何使所设计的计算机能帮助人们更安全、更有效地完成所需任务。实现人机交互这一目标的可能方式之一是使计算机具有识别和理解人的姿势、动作、手势等能力,跟踪识别
是完成这些任务的关键一步。
5、门禁控制:门禁控制【15】是为了有效地控制人员的出入,并且记录所有进出的详细情况,实现对出入口的安全管理。人脸门禁系统是一种基于人脸识别技术的新型访问控制系统,将具有访问权限的访问者的人脸信息存放在人脸数据库中,对人脸信息进行学习训练。通过摄像机动态捕获人脸,将人脸信息同数据库中的人脸信息进行检索对比,只有图像信息符合的人才可以进入,否则拒绝进入,并对强行进入者发出报警。人脸的检测跟踪也是门禁控制系统中的一个重要的技术。
6、家庭娱乐:家庭娱乐是指能够识别主人身份的智能玩具,家政机器人,具 有真实面像的虚拟游戏玩家等。随着电子技术水平的提高,家庭娱乐会得到广泛的应用,其中关键技术之一也是人脸的检测跟踪。
1.4本文研究工作概述
本文旨在构建一个基于OpenCV库的彩色视频人脸跟踪识别系统框架,使用 OpenCV库中的一些函数用于编程,使之可以应用于安防监控系统。本文的目标是实现对视频进行实时的检测并对检测到的人脸目标进行跟踪,将跟踪到的人脸目标所在视频帧通过Socket传到服务器端,对其进行人脸识别,达到获取人脸目标身份的目的。因此本文的研究工作分为客户端与服务器两部分,客户端和服务器的划分是按照Socket通信来划分的。客户端有摄像机,负责对进入摄像机视野范的目标进行人脸检测,如果有人脸目标出现则对其进行实时跟踪;在这个过程
第二章人脸检测识别方法
人脸检测问题最初来源于人脸识别。人脸识别是生物识别领域最热门的一个 方向,它涵盖了计算机视觉,图像处理和模式识别等前沿技术,在人机交互,安防系统和身份认证等方面有着广阔的应用价值。人脸检测是指采用一定的方法对给定的图片或视频进行搜索,判断其中是否存在人脸,如果存在则定位每个人脸的位置以及大小。人脸识别的研究可以追溯到20世纪60、70年代,经过几十年的发展已渐趋成熟,人脸检测是人脸识别系统中的一个关键环节,但是早期的人脸识别研究主要针对简单背景和人脸位置相对固定的情况,因此人脸检测问题并未受到重视。但随着开发实际系统需求的日渐提高,人们要求在复杂背景下实时地进行人脸检测,这种假设下的研究不再能满足需求,由此所面临的一系列问题使得人脸检测开始作为一个独立的课题受到研究者的重视。本章着重介绍当前人脸检测和人脸识别的主要方法。 2.1人脸检测方法概述
人脸检测【16Ir7】的目的是要在--N图像上快速准确地将人脸部分分割定位出 来。人脸检测的基本思想是用知识分析或统计的方法对人脸进行建模,比较所有可能的待检测区域和人脸模型的匹配度,得到可能存在的人脸。
人脸检测问题包含的内容十分广泛,从不同的角度有不同的分类方法。从图 像所包含的色彩信息来分类,可以分为灰度图像和彩色图像的人脸检测。在灰度图像中由于只包含256级灰度,一般可以使用边缘检测和轮廓提取的方法来检测人脸,而彩色图像中包含了肤色、唇色等色彩信息,所以可以使用基于肤色的方法进行检测。根据图像背景的复杂程度来分,可以分为简单背景下的人脸检测和复杂背景下的人脸检测。简单背景即背景比较单一,和人脸的相似程度较小比较容易区分。而复杂背景是指背景并不确定,并且背景中可能包含了和人脸相似的特征,正是由于这点在复杂背景下做人脸检测往往会导致误检。按照图像的类型来分,可分为静态图像的人脸检测和视频序列的人脸检测。对于静态图像中的人脸检测研究者们侧重于解决当多个人脸同时出现在一副静态图像中时,如何能够都检测出来,降低漏检率。而对于视频序列中的人脸检测,研究者们更侧重于检测速度的提高,以适应实时的要求。我们可以采用如何利用上述各种特征信息的方式,将人脸检测分为两类。第一类是基于特征分析的方法,这类方法直接利用现有的人脸信息,在提取一些低层次特征的基础上再对图像进行基于知识的分析以进行人脸检测,人脸的一些明显的信息,如肤色和面部器官的几何分布在系统的不同层次被利用起来。第二类是指基于整体的方法。它主要采用了模式识别领域的一些进展,将人脸区域看作是一类模式,即模板特征,使用大量的人脸与非人脸样本训练构造分类器,通过判别图像中所有可能区域属于哪类模式的方法实现人脸的检测,实际上人脸检测问题被转化为统计模式识别的二分类问题。基于特征分析和统计方法这两大类别,对人脸检测的主要方法进行介绍:
2.1.1基于特征分析的人脸检测方法
基于特征分析的方法中主要有基于轮廓对称性的人脸检测方法、基于局部特 征的人脸检测方法、肤色区域分割与人脸验证结合法和基于模板匹配的人脸检测方法,下面对这几种方法进行概要介绍。 1、基于轮廓对称性的人脸检测方法
这种方法是利用人脸轮廓的对称性【18】特征来进行人脸检测的,主要思想是
首先对人脸轮廓或人脸各个器官轮廓进行检测,然后验证它们之间是否满足对称性关系。在这类算法中Zabrodsky提出了连续对称性检测方法,检测一个圆形区域的对称性,从而确定是否为人脸。为了描述物体的点对称性,有学者提出了广义对称变换方法,用检测局部对称性强的点来进行人脸器官定位。它只考察人眼中心点的强对称性和脸部特征的几何分布,对人脸偏转、表情变化、光照变化等条件不敏感,因而具有较好的鲁棒性。但计算量很大,而且只利用了各点的对称性,易产生大量的候选点,使定位精度受到影响。 2、基于局部特征的人脸检测方法
该方法注重检测人脸的五官轮廓特征以及它们之间的位置关系。例如人的两 个眼睛总是对称的分布在人脸的上半部分,鼻子和嘴唇中心点的连线基本与两眼之间的连线垂直等。于是可以利用一组描述人脸的局部特征分布的规则来进行人脸检测。这些规则可以表述为人脸局部特征ll9J之间的相对距离和位置关系,当满足这些规则的图像区域找到后,则认为一幅人脸已经被检测出来,然后可以对候选的人脸区域进行进一步验证,以确定候选区域是否包含人脸。该方法所面临的问题是,由于图像噪声等因素的影响,造成人脸局部特征不明显,使得根据局部特征组合来判断人脸的算法失效,从而产生误检和漏检。 3、肤色区域分割与人脸验证结合法
对于彩色图像的人脸检测,首先可以建立一个合适的肤色模型20‘21】进行肤色检测。在检测出区域后,需要进一步的合并筛选,这可根据它们在色度上的相似性和空间上的相关性合并筛选出可能的面部区域,同时利用区域的几何特征或灰度特征验证候选区域是否为人脸,以排除其它色彩类似肤色的物体。区域分割与验证在很多方法中是密切结合、统一考虑的。 在通常情况下,仅根据肤色像素的聚积特性就可完成区域的连通分割。Yoo等利用肤色像素的连通性分割出区域,使用椭圆拟合各个区域,根据椭圆长短轴的比率判断其是否为人脸。Cai等根据肤色模型提供的像素的似然度,采用从局部最大值处逐渐扩展的方法得到肤色区域,然后使用灰度平均脸模板匹配的方法验证区域内是否有人脸。 4、基于模板匹配的人脸检测方法
模板匹配方法的思想是计算测试样本与参考模板之间的相似度,以其是否大 于阈值来判断测试样本是否为人脸。模板分固定模板田1和可变模板瞄。24j两种。固定模板实现简单,但由于人脸特征变化大,难以较好的反映人脸的共性,检测精度低,适应性不强,目前已很少使用,不过有些方法仍用作人脸的预处理和粗检。可变模板是在模版中包含一些非确定的因素,根据测试样本的具体条件,自适应地调整匹配模板,以提高模板的适应性和检测精度。下面分别介绍固定模板和可变模板。固定模板,这种方法是将人脸用一组独立的器官模板表示,如眼睛模板、嘴巴模板、鼻子模板、眉毛模板以及下巴模板等,通过检测这些器官模板来定位人脸。有研究者利用基于模版的方法来定位眼睛的位置,把标准的眼睛模板调整为5个不同的尺寸,然后再输入图像中寻找眼睛。这种固定的模板匹配的方法比较容易实现,但也存在着一些缺点,比如传统的边缘描述往往很难获得较高可靠度的连续边缘,尤其是眼睛和嘴巴与周围皮肤的对比度较低,有些地方甚至连边缘都检测不到,即使获得了可靠度高的边缘,也很难从中提取出所需的特征量。另外,人脸的特征受表情、姿势、旋转等因素影响很大,对于每一个模式类,选择一个好的模板和确定一个恰当的匹配准则是困难的。很难设计一种通用的模板方法来表征人脸的共性。早期的系统采用这种方法,目前己不多见。
可变形模板是为了改进固定模板匹配方法的缺点而提出的。该方法首先制定 出模板参数并且定义一个能量函数,然后根据检测区域的数据对参数进行修改直至收敛,此时的能量函数为最小化的能量函数,而此时的模板参数将被作为器官的几何特征。能量函数要根据图像的灰度信息,被检测物体轮廓等先验知识来设计。当用可变形模板进行人脸检测时,首先,可变形模板在待检测图像中移动,并动态地调整其参数,计算能量函数。当能量函数达到最小值时,根据其位置和参数决定的可变形模板形状应该达到与人脸的最佳拟合,这样就检测到~幅人脸。利用变形模板进行人脸检测的优点在于:由于模板可调,能够检测不同大小,具有不同旋转角度的物体。但其缺点也相当明显,就是检测前必须根据待检测物体的形状来设计弹性模板的轮廓,否则会影响收敛的结果。当图像进行全局搜索时,由于要动态地调整参数和计算能量函数,计算时间会很长。
2.1.2基于统计的人脸检测方法
基于统计的人脸检测方法有基于概率模型的人脸检测方法、基于神经网络的 人脸检测方法和基于支持向量机的人脸检测方法,对这几种方法也做以下概述。 1、基于概率模型的人脸检测方法
基于概率模型的方法是计算输入图像区域属于人脸模式的后验概率,根据此 概率对所有可能的图像窗口进行判别。Schneiderman等提出一种基于后验概率估计的人脸检测方法,该方法利用贝叶斯原理将后验概率估计转化为一个似然度求解问题,将难以估计的先验概率和后验概率用一个比率参数代替,作为调节检测器敏感度的参量。Schneiderman等采用64*64像素的模式区域,将其分为16个子区域,通过子区域独立性等假设降低“人脸”与“非人脸”模式分布表达式的复杂性,最后转化为稀疏编码的直方图,通过计算训练样本的频度求得两种模式的概率分布。Schneiderman等还将概率估计的方法用于检测正面旋转人脸和侧面人
脸,同时使用多分辨率信息复用和由粗到精搜索的策略提高检测的速度。属于这一类的还有Webert25J等提出的视点不变性学习(Viewpoint-Invariant Learning)的方法等。另一种概率模型是用于描述信号统计特性的隐马尔可夫模型(Hidden MarkovModels.HMM),目前也被应用于人脸检测和识别。Nefianl261等根据正面人脸由上到下各个区域(头发、额头、双眼、鼻子、嘴)具有自然不变的顺序这一事实,使用一个包含五个状态的一维连续HMM加以表示。将头部图像按照这五个区域划分为互有重叠的条块,对各块进行K-L变换,选取前若干个变换系数作为观测向量训练。Nefian等还提出了基于嵌入式HMM的人脸检测算法,该方法同时考虑到人脸由左到右各个特征的自然顺序,使用了二维HMM并且采用二维DCT变换的系数作为观察向量。此外还有Meng[2‘7】等使用HMM描述人脸的小波特征中不同级间的相关性等方法。基于HMM的方法一般只使用人脸样本进行训练,主要针对人脸识别的头肩部图像。 2、基于神经网络的人脸检测方法
神经网络128】具有记忆功能,当训练样本比较全面时,神经网络可以处理比较 复杂的检测问题,所以许多检测算法采用神经网络方法。人脸模式、眼睛模式和嘴巴模式等都具有较明显的特点,因此可以采用神经网络的识别方法。 神经网络方法能够适应较为复杂的人脸检测,准确性也较高,所以使用神经 网络进行人脸检测的算法比较多。但是,由于人脸属于高维矢量,导致网络中训练节点众多,算法往往需要大量的训练样本,因此,神经网络方法的研究着
重于系统的优化训练。
3、基于支持向量机的人脸检测方法
支持向量机(SupportVectorMachine,SVM)是Vapnik等人提出的基于结构风 险最小化原理的统计学理论。SVM常用于回归和分类问题。它比基于经验风险最小化的人工神经网络方法具有更好的泛化能力。Osuna等将SVM方法用于人脸检测,取得了较好的效果。SVM的训练样本包括有限“人脸\"样本和用“自举\"方法收集的“非人脸”样本。SVM分类器经训练后,得到最优分类超平面,可用于图像中的人脸检测。长期以来,SVM训练需要求解计算复杂度极高的二次规划问题,从而限制了该方法的应用。Platt提出的SMO(Sequential Minimal Optimization)算法可以解决SVM训练困难的问题。
2.1.3本文采用的人脸检测方法一Adaboost
基于特征分析的方法中人脸检测时只是用到了人脸中的某个或某几个特征的 组合来匹配地进行人脸的检测,这类方法容易引起漏检和误检,相较而言基于统计的人脸检测方法在检测率方面的效果较好,但是考虑到计算的复杂性和速度问题本文选用Adaboost方法用于跟踪与识别前的人脸检测定位。下面对Adaboost方法进行论述。
Adaboost是常被应用的人脸检测算法。按照前面人脸检测的分类,Adaboost算法属于基于图像的人脸检测方法中的统计方法。在Adaboost方法中,每个训练样本都被赋予了一个权值,表明它能否被当前弱分类器(简单而分类性能相对差的分类器,例如简单的感知机就可以作为一个弱分类器)正确分类。Adaboost方法通过不断地加入弱分类器,最终达到某个预定的足够小的错误率。
在加入某个新的弱分类器的某次迭代中,如果一个训练样本已经被正确分类,其权值就被下调,否则,其权值就要被调高,以便使下一轮的弱分类器专注于这些被错误分类的样本。最终得到的分类器则是训练得到的所有弱分类器的一个线性组合。依据这一基本思想,Freund和Schapire[30J首先给出了Adaboost算法的具体形式。而针对人脸检测这个具体的应用问题,Ⅵola等人提出了一个修改的Adaboost算法,Viola的算法将弱分类器与弱特征(大量可选特征中的某一个特征)等价起来,每个弱分类器仅通过一个特征实现分类,并通过Adaboost算法组合弱分类器,从而同时实现了弱特征的选择与组合。针对人脸检测问题,Viola等人定义了大量矩形特征(简化的Harr特征,可以从20*20的图像中提取数十万的特征供挑选和组合)。Viola提出的这个AdaBoost算法已经成为人脸检测领域的经典成果得到了更多的
基于几何特征的识别方法,基于代数特征的识别方法,基于连接机制的识别方法。其算法各有优缺点:基于几何特征的识别其困难在于没有形成一个特征提取标准,不过由于各种优秀的特征提取算法(如:弹性图匹配)的提出,使得人脸的几何特征描述越来越充分;基于代数特征的识别法由于代数矢量具有一定的稳定性,识别系统对不同人之间的倾斜度、表情有一定的鲁棒性,但对表情的描述不够充分,难以用于表情分析;基于连接机制的识别法采用了神经网络,在编码压缩与信息处理方式等方面具有一定优势,但神经元数目多,训练时间很长,完全基于神经网络的识别法在现有的计算机系统上也有其内在的局限性。因此近些年来很多研究学者采取将多分类器结合的方法来提取较稳定、受人脸姿态变化和光照条件等因素影响小的识别特征,取得了良好的识别效果。人脸识别技术作为模式识别领域的一个研究热点,每年都有许多相应的研究成果发表,并且涌现出各种各样的识别方法,可以说信息处理领域的各种新方法的研究和算法的改进都在人脸识别中得到应用。人脸识别方法的分类,根据研究 角度的不同,可以有不同的分类方法,这是研究人脸识别方法首先遇到的问题。 根据图像来源的不同,人脸识别技术可分为两大类:静态人脸识别和动态人 脸识别。静态人脸识别,即人脸为稳定的二维图像,如照片。如果人脸的来源是一段视频图像,则人脸识别就属于动态人脸识别。在头部运动和表情变化状态下的人脸识别都可以看作动态人脸识别,如视频监视中的人脸识别。动态人脸识别具有更大的难度。首先,视频输出的图像质量较差;其次,背景较复杂,目前对动态人脸识别的研究还局限于简单背景,较少人物的情况,对静态人脸识别的研究比较多。本文研究的人脸识别也是基于静止图像的。根据图像中人脸的角度,又可将人脸识别技术分为基于正面、侧面、倾斜人脸图像的识别,由于实际情况的要求,对人脸正面模式的研究最多,这也是本文的研究重点。下面介绍一下目前常用的人脸识别方法: 2.2.1几种常用识别方法
目前人脸识别的方法有很多种,本节介绍四种常用的人脸识别方法,并对其 稍作论述。
1、基于几何特征识别
弹性图匹配(EGM)方法可采用属性拓扑图来表达人脸,其拓扑图的任一顶点均 包含一特征矢量,它记录了人脸在该顶点位置的分布信息,最初的拓扑图是矩形的,并没有注重节点的位置。后来,Wiskott[32】提出~种基于关键点的图匹配算法,称为弹性束图(elastic bunchgraph),其节点一般定位在如眼球、眼角等灰度变化剧烈,信息丰富的地方。特征点先是手工定位,经过一段学习以后,即可达到自动定位。如此几十个节点,其分离能力是不同的,并且前向、半侧、侧面人脸分离能力较好的节点分布范围也不一样,g_,-ugert33】深入研究了这一问题,他给每个节点不同的权重,与该节点的分离能力成正比。统计表明,眼在前向和半侧的人脸中是最重要的分离特征,而鼻尖是侧面人脸最重要的分离特征。Wurtz【34】研究了多分辨的情况,他假定在两幅人脸图中只有一部分节点有较好的对应,一些节点根本没有对应节点,它们将干扰识别。因此在匹配的过程中只保留对应良好的节点,并且将背景(包括头发区域)去掉。由于弹性匹配对每个存储的人脸需计算其模型图,计算量大,存储量大,Lee【35】等提出了一种基于弹性图动态链接模型的方法,既取得较高的识别速度,也获得了较理想的识别率,在一定程度上克服了以往方法总是在速度与识别率之间进行折中的缺点。
2、基于代数特征识别
主分量分析(Principal.ComponentAnalysis,PCA)是一种常用的方法。它根据图像的统计特性进行的正交变换(K.L变换),以消除原有向量各个分量间的相关性。变换得到对应特征值依次递减的特征向量,即特征脸1361。Turk和Pentland[37】进一步提出了“特征脸”方法,该方法以训练样本集的总体散布矩阵为产生矩阵得到的一组特征矢量,称作“特征脸”,这样就可产生了一个由“特征脸”矢量组成的子空间,每一幅人脸图像其投影都可以获得一组坐标系数,这组坐标系数表明了人脸在子空间的位置,实验表明该方法具有较强的稳定性,可以作为人脸识别的依据。特征脸方法使用由各个特征脸扩展的空间来表示人脸,虽然可以有效地表示人脸信息,但是并不能有效地鉴别和区分人脸。Swets和Wen9138】提出PCA的基础上使用LDA(Lillear Discriminant Analysis,线性鉴别矢量),也称Fisher脸方法【39】。它选择以类内散布正交的矢量作为特征脸空间,从而能压制图像之间与识别信息无关的差异,对光照及人脸表情变化都不太敏感。Moghaddamt40】等提出了贝叶斯人脸识别方法。他们提出了一种基于概率的图像相似度度量方法,将人脸图像之间的差异分为两类类间差异(即不同人的人脸图像之间的差异)和类内差异(即同一个人的不同人脸图像之间的差异)。他们提出了类间差异和类内差异度量的概率模型和计算方法。由于贝叶斯相似度的计算涉及复杂的非线性的快速计算方法。这种人脸识别方法在1996年美国DAPAR组织的FERET人脸测试中是效果最好的方法之一。 Yang[4l】等人考虑高阶统计量,从而提出了核特征脸(Kernel Eigenface)应用 KernelPCA将人脸对应的向量映射到高维空间中,然后应用PCA。这种做法避免了高维统计量计算中的组合爆炸问题,同时,还考虑了高维相关性。由于PCA为基础的传统特征脸方法没有利用人脸的几何拓扑特征,为此Albertt421等将PCA与人脸拓扑关系结合起来提出TRCA(topologicalprincipal componentanalysis)方法,使识别率较单一的PCA类方法有所提高。 3、隐马尔科夫模型(HMM)
隐马尔科夫模霎j.t431(Hidden MarkovModel,HMM)是用于描述信号统计特性的一组统计模型。HMM使用马尔科夫链来模拟信号统计特性的变化,而这种变化又是间接地通过观察序列来描述的,因此,隐马尔科夫过程是一个双重的随机过程。用采集的脸像构造观察向量,观察向量和人脸的五官特征之间的关系可以用一个一维的隐Markov模型(Hidden Markov Model,HMM)来表示,该模型的参数能较好地表征具体的人脸模型,在人脸识别领域已取得到了初步成效州。这种方法至少有两个问题,一个是直接采用灰度值作为观察值矢量会受到噪声、光线等很多随机因素的影响,另外一个是计算量很大,学习和识别速度都比较慢。伪二维HMM(P2.DHMM)模型是一维HMM模型的一种推广。P2.DHMM由一组主状态组成,每一个主状态又包括了一个一维HMM。相当于将一组一维HMM模型嵌入另外一组HMM模型中,因为这种结构并不是真正的二维HMM模型,因此取名为二维HMM模型。可以看出这种结构利用了图像的二维特征,更适合于图识别,因此采用了这种HMM结构用于人脸识别。 4、支持向量机法(SVM)
支持向量机(SupportVectorMachines,SVM)是Vapnik等提出的基于结构风险 最小化原理(Structural Ri.sk Minimization Principle,SRM)统计学习理论ml,用于分类与回归问题。SRM使vc(vapnik Cherovnenkis)维数的上限最小化。 与其他
2.4本章小结
本章首先介绍了当前人脸检测与人脸识别的主流方法,并对其优缺点进行了 论述,在比较其优缺点后引入了本文所采用的Adaboost人脸检测与Eigenface人脸
识别方法,详细介绍了这两种算法的理论基础,算法原理以及实现步骤。对于 Adaboost人脸检测算法给出了检测效果图如图2.1中所示的7幅图像,从不同侧面
证实了这种算法的检测能力,可以很清楚的表明选取这种检测算法的正确性。 Eigenface人脸识别方法,主要采用了PCA降维技术,可以减少计算量,提高识别
速度,在本章2.2.2小节中给出了相关的理论也给出了流程框图,并将每一步的结
果用图片的形式详细展现出来,其识别效果在第四章中会与本文新提出的人脸主
特征块采用PCA的方法进行比较说明,新提出的方法主要是在不影响识别率的情
况下进一步提高识别速度。
第三 章基于OpenCV的人脸跟踪识别系统的实现
在前面章节中详细介绍了本系统采用的跟踪与识别方法。
本文设计的人脸跟踪识别系统采用了OpenCV函数库中的一些函数比如图像函数Ipllmage,矩形坐标函数evReet等,因此先概要对OpcnCV函数库进行介绍,再对其在本系统中的使用方法进行介绍,因为本系统采用C++Builder环境进行编程实现,所以要能够在C++Builder中灵活使用OpenCV函数库。 OpenCV是Intel开源计算机视觉库。它由一系列C函数和少量C抖类构成, 实现了图像处理和计算机视觉方面的很多通用算法,可以在商业和研究领域免费使用。1999年在俄罗斯设立的软件开发中心“Software Development Center’’开发。OpenCV是在IPL基础上发展起来的,主要用于图像处理、计算机视觉、模式识别、物体识别以及运动跟踪方面。在IPL支持下,可轻松实现物体轮廓跟踪、图像的几何处理、形态学处理、图像特征提取、背景分离、金字塔算法、种子填充算法、光流算法、主动轮廓算法、相机的校正、姿势的识别等很多操作。OpenCV的设计简单易用,其中大部分类及库函数的设计都有其特定在实际应用中的背景,因此整个库的体系结构非常简单明了提供了一些诸如MATLAB、VC、C++Builder等其它语言或环境的接口,最大的特点是具有开放性。它拥有包括300
多个C函数的夸平台的中、高层API。不依赖于其它外部库,但也可以使用某些外部库。OpenCV具有以下特点: (1).开放源码;
(2).基于Intel处理器指令集开发的优化代码; (3).统一的结构和功能定义;
(4).强大的图像和矩阵运算能力; (5).方便灵活的用户接口;
(6).支持MS.Windows和Linux操作系统。
由于有了以上特点,OpenCV函数库强大的功能,以及简单易用,移植方便, 成为广大学生和科研人员进行数字图像处理方面学习和研究的好工具。
要在C++Builder中使用OpenCV函数库,首先要将OpenCV安装文件下的lib 文件夹中的八个library文件转换为C++Builder可以使用的library文件,可以使用
CH Builder安装文件下的coff20mf.exe进行转换。当建立一个想要使用OpenCV 函数库的工程时,在memu中选择Project下的Addto project,添加新转换的library
文件;然后Project下的Options,在里面找到Directories/Conditionals这个标签,
在Include path加入下面五个路径:
CAProgram Files\OpenCV\cv、dnclude CAProgram Files\OpenCV\cxcore\include CAPmgram Files\OpenCV\onlerlibs\highgui C:kProgram Files\OpenCV\cVaux\include
C:WrogramFiles\0penCⅥotllerlibs\cVc锄\hlclude
最后在.cpp文件头部加上头文件#include“CV.h”和#include”highgui.h¨。
因篇幅问题不能全部显示,请点此查看更多更全内容