配色: 字号:
无人机人脸特征识别技术
2018-04-16 | 阅:  转:  |  分享 
  
摘要:目前,无人机特征识别技术主要利用人体自身具有的特征,包括生理特征和行为特征来进行来对人的身份进行认证和识别,而生理特征(指纹、虹膜以及
人脸)普遍被使用。在对人的身份的识别过程中,生物特征技术将信息技术与人的生理特征进行有效的结合,已经慢慢取代传统的身份认证方法。相
较于指纹和虹膜,人脸识别是一种非接触性的识别技术,通过整体面部特征识别,具有更高的自然性、可接受性以及唯一性。并且人脸是最普遍的交
流模式,在人与人的交往中具有十分重要的意义,使其成为生物特征识别技术的热点研究领域。为了能够在视频中检测出人脸。关键选用对采集图
像进行人脸检测和人脸识别两大步骤。在本分中,分别利用Viola-Jones和SURF算法完成上诉任务。为了便于使用算法进行系统的实
现,本文选择VS2010和OpenCV开发环境进行系统的搭建。OpenCV是一个开源的可以跨平台运行的计算机视觉库,包含了许多图像
处理和计算机视觉方面的通用算法。其中的源代码都是开源免费的代码,因此可以用于科研人员的研究领域,也可以用于商业领域。整个OpenC
V包含五百多个函数,其中涉及到计算机视觉的各个领域,包括人机互动、物体识别以及机器视觉等等。本文在对两种算法进行深入研究的基础上,
分析了人脸识别实验平台的需求。针对这些需求和OpenCV中人脸识别相关的库函数,本文归纳了实现这些功能将使用的CvMat矩阵
类、IplImage图像指针、Algorithm算法类以及SURF特征匹配别类,介绍了这些类的功能和成员。利用这些库类和函数,
本文详细描述了实现人脸识别实验平台功能的过程和效果。最后在实现的人脸识别实验平台上,在北京市顺义区成人教育学校及实验室采集人脸数据
库上进行实验,通过实验结果展示了本文实现的实时无人机人脸识别身份验证系统的功能。关键词:无人机;人脸识别系统;特征算法目录第一章
Viola-Jones人脸检测算法原理11.1人脸检测概述11.2人脸的检测和定位21.2.1基于统计的人脸检测方法21.2.2
基于知识建模的人脸检测方法31.3人脸的特征提取与识别41.3.1基于几何特征的无人机人脸识别41.3.2基于子空间分析(特
征脸)的无人机人脸识别5第二章基于SURF特征匹配在无人机人脸识别的算法6第三章基于无人机的人脸识别系统93.1开发环境搭建
93.1.1VS2010及OpenCV及简介93.1.2配置OpenCV103.2系统设计123.3系统实现143.3.
1视频图像采集的实现143.3.2人脸检测的实现15结论17第一章Viola-Jones人脸检测算法原理1.1人脸检测概述
人脸检测(FaceDetection)技术是一种图像处理技术,其目的是利用计算机在图像中找到人脸目标。人脸检测问题最初来源于无人
机人脸识别(FaceRecognition),在后来发展的过程中,由于人脸的应用越来越广泛,大大超越了无人机人脸识别系统的范畴,
因此人脸检测被单独提出,发展成为了一个独立的方向。经过多年的发展,人脸检测技术有了很大的提高,有相当多种方法都卓有成效,甚至已经开
发出多种产品被应用到各个领域。比如在人脸表情识别系统,基于内容的检索,视频会议,三维人脸模型等方面都已广泛应用。同时,人脸检测的技
术也发展迅速,产生了丰富多彩的检测算法。主要可分为三大类,分别为基于几何特征的方法、基于肤色模型的方法和基于统计理论的方法[23]
。1)基于几何特征的人脸检测方法该方法是利用是人类面部器官在几何上体现的特征。根据五官的分布及各自的形状特性来进行无人机人脸识别。
这种方法又主要可分为基于先验知识的方法,基于特征不变性的方法和基于模板的方法[23]。其中基于先验知识的方法的实现方案是以人脸面部
器官的相对位置关系为主要检测依据。该方法主要考虑人脸面部的对称性,人脸图像灰度梯度差异性,人脸灰度区域分布特征等,根据这些先验知识
,制定一些列准则,任何利用树状分类器进行分类。当图像通过树状分类器的每个节点检测后,则被确定为人脸。基于特征不变性的方法的思路是充
分利用人脸中已有特征,将检测人脸任务分解为检测面部的其它不变特征,例如眼睛、嘴巴、鼻子等。该方法与基于先验知识方法的最大区别在于该
方法是自底而上的。即对于输入图像,先找到上诉特征区域,然后综合找到的这些不变特征来确定待检测区域是否是人脸。而基于模板的方法可以分
为两类:预定模板和变形模板。预定模板是指利用预先制定好的标注模板对图像进行搜索检测,计算模板区域内的特征向量,当特征向量与标准模板
下的特征值距离相近时可认为检测到人脸;变形模板不是一个固定的模板,其参数(模板大小和各像素值)在检测的时候实时变化,针对于不同的图
像,对参数做不同修改直至收敛,从而检测出人脸位置,这种方法比变形模板自适应能力更好。2)基于肤色模型的人脸检测方法该方法比较容易理
解,即在彩色空间中,人脸的颜色是用于区别人脸与其他物体的一个重要特征。因此利用人脸的颜色信息去检测人脸是一个很自然的想法。在这方面
的研究主要集中在用什么样的颜色空间来描述人脸才能更具分类能力,前人对常用的RGB、HIS、YCrCb、UCS等多种颜色空间都做了仔
细研究和对比分析,发现并没有哪一种颜色空间可以应用于任何场合。基于肤色模型的方法受图像质量,光线影响太大,因此该方法一般不单独使用
,而是与其他算法联合使用,作为一种补充方案。3)基于统计理论的人脸检测方法基于统计理论的人脸检测是利用统计分析与机器学习的方法来寻
找出人脸样本与非脸样本各自的统计特征,再使用各自的特征构建分类器。使用分类器完成人脸检测[24]。基于统计特征的人脸方法主要有:子
空间方法,神经网络方法,支持向量机方法,隐马尔可夫模型方法以及Boosting方法。近年来,通过大量的研究,学者们逐渐把研究中心
放在了这一类方法上,尤其是Boosting方法的出现,使得人脸检测的水平上升了一个档次。Boosting方法是最近人脸检测的研究热
点,AdaBoost方法提供了优异的检测速度,完全符合实时系统的要求。Viola和Jones根据AdaBoost方法改进设计了一种
算法,拥有很高的人脸检测精度,同时算法速度快,能够满足大多数实时系统的要求,是当下最为优秀的人脸检测算法之一。本文即利用该算法实现
本系统的人脸检测部分。后文对该算法详细描述。1.2人脸的检测和定位人脸检测的基本思想是用知识或统计的方法对人脸建模,比较待检测区
域与人脸模型的匹配度,然后得到可能存在人脸区域。其方法大体上可以分为基于统计和基于知识两类。基于统计是将人脸图像视为一个高维向
量,从而将人脸检测问题转化为高维空间中分布信号的检测问题;基于知识是利用人的知识建立若干规则,从而将人脸检测问题转化为假设/验证问
题。1.2.1基于统计的人脸检测方法①事例学习。将人脸检测看做是区分非人脸样本与人脸样本的问题,通过对人脸样本集和非人脸样本采
集进行学习以产生分类器.目前国际上普遍采用人工神经网络的检测方法。②子空间方法。Pentland等将KL变换引入了人脸检
测,在无人机人脸识别中利用主元子空间(特征验),而人脸检测利用的是次元子空间(特征脸空间的补空间)。用待检测区域在次元子空间上
的投影能量,即待检测区域到特征脸子空间的距离做为检测统计量,距离越小,表明越像人脸。子空间方法简便易行,但由于没有利用反例样本信息
,在辨别与人脸类似的物体方面还需要改进。③空间匹配滤波器方法。包括各种模板匹配方法、合成辨别函数方法等。1.2.2基于知识建模
的人脸检测方法①器官分布规则:虽然人脸各不相同,但遵循一些几乎是普遍适用的规则(如五官的空间位置分布大致符合‘三停五眼’等),
检测图像中是否有人脸即是测试该图像中是否存在满足这些规则的图像块。这种方法一般有两种思路:一种是“从上到下”,其中最为简单有效的是
Yang等人提出的Mosaic方法。它给出了基于人脸区域灰度分布的规则,依据这些规则对图像从低分辨率到高分辨率进行筛选,若样本满
足这些规则的程度较高,则可成功完成检测。另一种思路则是从下至上,先直接检测几个器官可能分布的位置,然后将这些位置点分别组合,用器官
分布的几何关系准则进行筛选,找到可能存在的人脸,这种方法和前一种方法相类似。②轮廓规则:人脸的轮廓可以简单地近似成一个椭圆,而
人脸检测可以通过椭圆检测来完成。Goyindaraju提出认知模型方法,将人脸建模为两条直线(左右两侧面颊)和上下两个弧(头
部和下巴),通过修正Hough变换来检测直线和弧。近期Tankus利用凸检测的方法进行人脸检测。③颜色、纹理规则:同民族
人的面部肤色在颜色空间中的分布相对比较集中,在一定程度上可以将人脸同大部分背景区分开来。Lee等设计了肤色模型来表征人脸颜色,利
用感光模型进行复杂背景下人脸及器官的检测与分割。Dai利用了SGLD(空间灰度共生矩阵)纹理图信息做为特征进行低分辨率的人脸检
测。Saber等则将颜色、形状等结合在一起来进行人脸检测。④运动规则:通常人相对于总是运动的,利用运动信息可以简单有效的将人
从任意复杂背景中分割出来。其中包括利用瞬眼、说话等方法的活体人脸检测方法。⑤对称性:人脸具有高度的轴对称性,五官也具有一定的对
称性。Zabrodshky提出连续对称性检测方法,用检测一个圆形区域的对称性的方式来确定是否为人脸;Riesfield提出广义
对称变换方法检测局部对称性强的点来进行人脸器官定位。我们则定义为方向对称变换:分别在不同方向上检测对称性,不仅能够用来寻找强对称点
,还可描述有强对称性物体的形状信息,在进行人脸器官定位时更为有效。由于人脸模式的多样性和图像获取过程中的不确定性,人脸在图像空间
中的分布非常复杂,建立人脸在高维图像空间中的精确分布模型非常困难。建立一个统计可靠的估计需要大量的正例样本和足够多数量的有效反例样
本。目前的研究焦点是反例样本的产生和利用问题,这也是最终提高人脸检测正确率的重点问题。根据具体应用的需要,对检测环境进行合理的假
设(比如运动、颜色等),从而简化问题,提高系统实用性能也是一条切实可行的途径。由此可见,知识与统计方法的综合应用,是解决实际问题的
必经之路。1.3人脸的特征提取与识别早在20世纪60年代,无人机人脸识别就成为了广大研究者瞩目的焦点,上个世纪90年代以来
,社会对无人机人脸识别系统的需求越来越迫切,再次引发了无人机人脸识别研究的热潮。目前世界上几乎每个国家都有许多机构都在从事这方面的
研究,并得到军方、警方以及许多大公司的高度重视和资助。关于无人机人脸识别的研究主要有以下几个方面:人脸表示、人脸检测、人脸辨认、表
情分析和分类。目前常见的无人机人脸识别基本算法可分为以下几类:基于几何特征的无人机人脸识别、基于子空间分析的无人机人脸识别、基于弹
性图匹配的无人机人脸识别、基于神经网络的无人机人脸识别、基于隐马尔可夫模型的无人机人脸识别和基于模板匹配的无人机人脸识别等。1.3
.1基于几何特征的无人机人脸识别在众多的无人机人脸识别方法中,基于几何特征的方法是最早被用于无人机人脸识别的。其基本原理是:人脸
的几何特征由五官特征、脸型特征和五官在脸上的分布位置特征组成,人脸由眼睛、鼻子、嘴巴、下巴等部件构成,这些部件的形状、大小和结构千
差万别,使得世界上每张人脸各不相同,因此对这些部件的形状和结构关系的几何描述,可以作为无人机人脸识别的重要特征。这种方法将人脸用几
何特征矢量表示,但时间、光照等影响是不可避免的,所以要求选取的几何特征矢量要有独特性,该方法稳定性不高,识别效果差。典型的算法有活
动轮廓模型和可变形模板模型等。但该方法同时又有三个优点:①和人类识别人脸的方式一致,便于理解。②光照变化对其影响很小。③每幅图像只
需要一个特征矢量表示,存储量比较小。1.3.2基于子空间分析(特征脸)的无人机人脸识别特征脸方法是无人机人脸识别技术中的一种典型
方法,又称为主成分分析法(PCA)。SIROVICH和KIRBY首先采用PCA算法来表示人脸。它根据一组人脸训练样本构造主
特征向量空间,即特征子空间(特征脸),这些特征向量是由图像的生成矩阵的主特征值所对应的特征向量组成,这些主特征向量所占的能量约为总
能量的90%以上,其余的小能量向量被忽略。生成矩阵可以是图像的协方差矩阵、总类内离散度矩阵等等。这个子空间是降维的,维数比原数据空
间要小得多,任何一幅待识别人脸图像都可以向此特征空间投影并获得一组坐标系数,这组系数表明了该图像在子空间中的位置,从而可以作为无人
机人脸识别的依据。任何一幅人脸图像都可以表示为这组特征向量的线性组合,其加权系数(图像向空间投影得到的系数)称为该图像的代数特征。
识别的时候,将待识别的图像投影到这个特征子空间,将得到的投影系数与各个已知人脸图像的系数进行比较,通过一定的准则,例如k-近邻法,
取未知样本的k个近邻,看这k个近邻中多数属于哪一类,就把待识别的图像归入哪一类。特征脸方法比较简单易懂,得到了广泛的使用,但单
独使用的计算量较大,所以PCA经常与其它方法配合使用,例如小波变换与PCA的结合,使PCA的降维效果得到改善。本文最终实现的
是基于小波变换的加权特征脸识别,充分发挥了小波变换在降维上的优越性以及PCA在无人机人脸识别上的准确、高效。K.L变换的降维能力在
无人机人脸识别中运用广泛。但是在特征脸的识别中,K.L变换不能满足效率高识别率也高的要求,好的人脸表达能力并不代表会有很好的无人机
人脸识别能力。同时在实验中发现该方法的抗干扰能力非常差,尺寸、光照、表情等的变化都会对识别率产生严重干扰,其中,相对来说前两者是比
较容易克服的问题,在识别前可以用一定的图像预处理解决。因此我们的研究主要针对难以克服的表情变化进行,从而提出了一种新的特征脸方法一
基于小波交换的加权特征脸方法。该方法利用了小波变换的特性,不但可以降低算法的复杂程度,还可以容忍人脸一定程度的表情变化。训练阶段:
将每个已知的人脸图像映射到由特征脸张成的子空间上,得到m维向量其中为已知人数。距离阈值为识别阶段:先将待识别的人脸图像R映射到由
特征脸张成的子空间上,得到向量与每个人脸集的距离定义为在具体识别时,有可能输入的图像不是人脸图像,为了排除这种干扰,还需要计算原
始图像R与其在特征空间中重建的图像之间的距离最后用最小距离法对人脸图像进行分类:①若,则输入图像不是人脸图像;②若,则输入的图像
包含未知人脸。③若,则输入的图像为库中的第k个人脸。第二章基于SURF特征匹配无人机人脸识别算法SURF的全称是Speed-Up
RobustFeatures(加速健壮特征),SURF算法是SIFT(Scale-InvariantFeatureTran
sformation,尺度不变特征变换)算法的加速版,SURF算法可以在适中的条件下完成两幅图像中物体的匹配基本实现了实时处理。S
URF算法本质上也是一种特征匹配算法,它是由SIFT(尺度不变特征)算法发展而来,这两种算法之间有着非常密切的联系,在算法的核心思
想上,二者几乎相差无几,只是SURF算法在对SIFT有所改进,使得其在处理速度上具有3倍的优势。因此学习SURF就不得不对SIFT
算法有所了解。下面简单的介绍一下SIFT算法并简单介绍一下两个算法之间的区别。总体来看,SIFT算法特征匹配的过程由三大步骤:需要
有引用,否则你需要写详细的SIFT原理。1、建立尺度空间并提取特征点;2、提取特征点的特征描述算子(特征向量);3、根据特征向量进
行特征点的匹配。其中算法的核心应为第一步,也是算法最为精妙的地方。根据图像的匹配方法,两幅图像要做到完全套合,一般需要经历旋转、缩
放、平移三个步骤;若只需要大小相同及方向相同,不需要绝对位置一致,则可以省去平移操作。而在图像识别过程中,一般不需要两幅图像绝对位
置完全一致,因此计算机若能自动给出两幅图像的旋转和缩放参数,就能略去人工寻找参考点的工作。基于这个想法,SIFT在创立之时就把核心
工作致力于解决图像的尺度不变性和旋转不变性。并在算法中分别提出了“尺度空间”和“特征点方向”两个概念去解决这两个问题。“尺度空间”
是指一幅图像的多种不同“尺度”图像的集合。由于拍摄角度问题,一个物体在图像中会呈现不一样的“大小”即“尺度”,利用传统的匹配手段,
会认为这是两个不同的物体。如果事先准备好同一个物体多种不同大小的图像,并对这个图像集合进行特征点的提取,那么得到的特征点将能够代表
这个图像集合的公共性质,这个性质必然是与“尺度”无关的。那么利用这个具备这个性质的“特征点”进行匹配操作,就能够避免“尺度”导致的
误匹配。解决了“尺度”的问题后,第二个问题是旋转。由于拍摄角度的问题,同一物体在不同图像中往往呈现不同的角度。如果不加以处理,计算
机也很难认为二者是同以个物体。因此若是在描述特征点时同时提供这个点的“方向”信息,那么计算机处理时,就能够先进行选择,然后再进行匹
配。因此SIFT在提取得到特征点后,就利用统计的方法,找到特征点的主方向。从而给出了物体的角度信息,使得SIFT算法对选择具有一定
的不变性。这两个思想的引入,使得SIFT算法非常成功,能够很好的解决尺度不变性和旋转不变性问题。成为特征匹配算法中最为典型的代表。
在实际应用中,只需要结合很简单的匹配器(例如最近临法)就可以得到很好匹配,误匹配数少。但是由于复杂的特征提取算法,SIFT的处理速
度较慢,一般来说,一副较高分辨率(720P)的图像进行SIFT求特征点时,一般需要近1s的时间。针对这个问题,SURF对其进行了修
改,使得其理论速度提高了三倍。SURF在算法核心思想和流程上与SIFT基本一致,只是每一个步骤的处理手段上,SURF尽可能的用近似
取去替代,从而在保证准确度损失较小的情况下,最大限度的提高速度。表2-1是SURF与SIFT的处理手段的差异之处。下面将详细介绍S
URF算法的每个步骤细节。表2-1SIFT和SURF算法的区别比较内容SIFTSURF尺度空间建立DOG与不同尺度的图片卷积不
同尺度的boxfilters与图片卷积特征点检测先进行非极大值抑制,在去除低对比度的点。再通过Hessian矩阵去除边缘的点先利
用Hessian矩阵确定候选点,然后进行非极大值抑制方向在正方形区域内统计梯度的幅值得直方图,找max对应的方向。可以有多个方向在
圆形区域内,计算各个扇形范围内x,y方向的haar小波响应,找模最大的扇形方向特征描述算子1616的采样点划分为44的区域,计
算每个区域的采样点的梯度方向和幅值,统计成8bin直方图,一共448=128维2020的区域划分为44的子区域,每个区域找
55个采样点,计算haar小波响应,记录一共444=64维。高斯模糊是一种图像滤波器,它使用正态分布(高斯函数)计算模糊模板
,并使用该模板与原图像做卷积运算,达到模糊图像的目的。根据数学定义,二维高斯函数概念如下:(2-1)上式中,参数是高斯正态分布的
标准差。这个函数的图像生成的曲面的等高线是从中心开始呈正态分布的同心圆,如图2-1所示:图2-1二维高斯函数图像从图2-2像上可
以看出,函数值在中央处取得最大,里中央位置越远,函数值越小,且距离中心点单位以上的位置处的函数值非常小,小于0.01,该函数在方向
和方向上具有对称性。若用该函数与图像做卷积运算,可得到一个含有参数的新图像,即:(2-2)上式中,表示图像的像素位置,称为图像的
尺度空间因子,它的值表示了该图像被平滑的程度,尺度空间因子的值越小,则代表越少的平滑程度和越少的尺度。大尺度表示图像的整体特征,小
尺度则相应的表示图像的细微特征,表示图像的尺度空间。第三章基于OpenCV的基于无人机的人脸识别系统3.1开发环境搭建3.1.
1VS2010及OpenCV及简介VisualStudio是微软公司推出的开发环境,是目前最流行的Windows平台应用程序开
发环境。VisualStudio2010版本于2010年4月12日上市,其集成开发环境(IDE)的界面被重新设计和组织,变得更
加简单明了。VisualStudio2010同时带来了NETFramework4.0、MicrosoftVisual
Studio2010CTP(CommunityTechnologyPreview--CTP),并且支持开发面向Windo
ws7的应用程序。除了MicrosoftSQLServer,它还支持IBMDB2和Oracle数据库。OpenCV(Op
enSourceComputerVisionLibrary),是一个开源的可以跨平台运行的计算机视觉库,可以运行在多个操作
系统上,包括Windows、Linux以及MacOS操作系统上。整个库是由C函数和C++类构成的,包含了许多图像处
理和计算机视觉方面的通用算法。OpenCV的设计理念是所包含的函数能以最快的速度进行编译,之所以使用C代码进行编写,就是希望能
够利用多核处理器的优势达到最快的运行速度。它构建了一个方便开发人员使用的、简单易懂的计算机视觉框架,在这个基础上,开发人员能都更方
便的设计出更复杂的计算机视觉相关程序。OpenCV是由Intel发起的项目,其中的源代码都是开源免费的代码,因此可以用于科
研人员的研究领域,也可以用于商业领域。研究人员可以将代码嵌入到自己的应用程序中,研究人员能将自己的代码进行共享也是OpenCV
希望的。整个OpenCV包含五百多个函数,其中涉及到计算机视觉的各个领域,包括人机互动、物体识别以及机器视觉等等,而本文中主
要讨论的无人机人脸识别也包含在其中。OpenCV中还包含很多机器学习库,可以用于模式识别和聚类,因此还能用于其他的机器学习领域中。
因此OpenCV包含以下特点:1)整个函数库是开源的,基于C/C++语言的,主要应用于图像处理领域。2)使用时可移
植,并且十分便利友好。3)函数库中的所有代码均经过优化,在进行图像处理时均能实时进行。4)由于该函数库主要用于图像处理,因
此对于图像和视频均能快速载入并且加入了图像采集和保存的基本功能。5)具有两种API接口:低级和高级。6)在使用过程中,
为了提高程序的性能,OpenCV中加入了面向IntelIPP的高效多媒体函数接口,能够优化程序本身的IntelCPU
代码。3.1.2配置OpenCVOpenCV中包含很多图像处理的算法,因此学会正确使用OpenCV也是无人机人脸识别研
究的一项重要工作。在VS2010中应用OpenCV,需要进行手动配置,下面给出在VS2010中配置OpenCV的详细步
骤。1、下载、安装OpenCV4.0与VS2010的软件。2、配置OpenCV环境变量计算机->(右键)属性->
高级系统设置->高级(标签)->环境变量->(双击)path(用户,系统里面的path任选其一)->在变量值里面添加“%ope
ncv%\build\x86\vc9\bin”和“%opencv%\build\common\tbb\ia32\vc9”(里面的%
opencv%请换成自己的opencv路径。例如:E:\opencv\build\x86\vc9\bin;E:\opencv\
build\common\tbb\ia32\vc9)。3、配置工程的opencv依赖1)工具->选项->项目和解决方案->
VC++目录:需要配置“包含文件”和“库文件”两项。2)配置“包含文件”项:添加行“%opencv%\build\include
”即可。但在运行别人的opencv项目时,可能别人直接引用了上述目录的子目录路径,如果出现include错误,
则再添加“%opencv%\build\include\opencv”和(或)“%opencv%\build\
include\opencv2”,即可解决问题。3)配置“库文件”项:添加行“%opencv%\build\x86\vc9\lib
”即可。4)配置链接器:项目(菜单项)->属性->配置属性->链接器->输入->附加依赖项,在此要注意每次新建工程都要重新配置此项
。针对debug配置添加以下库:opencv_calib3d240d.libopencv_contrib240d.lib
opencv_core240d.libopencv_features2d240d.libopencv_flann240d.l
ibopencv_gpu240d.libopencv_highgui240d.libopencv_imgproc240d.l
ibopencv_legacy240d.libopencv_ml240d.libopencv_objdetect240d.l
ibopencv_ts240d.libopencv_video240d.lib如果是release配置,在“附加依赖库”中
添加以下内容:opencv_calib3d240.libopencv_contrib240.libopencv_core24
0.libopencv_features2d240.libopencv_flann240.libopencv_gpu240.
libopencv_highgui240.libopencv_imgproc240.libopencv_legacy240.
libopencv_ml240.libopencv_objdetect240.libopencv_ts240.libope
ncv_video240.lib3.2系统设计本系统将实现实时采集视频图像,并对图像中出现的人脸进行检测操作,将检测得到的人脸与
库中人脸进行比对。若不在人脸库中,则给出警告提示。根据以上功能描述系统的总体流程图如下:图4-1系统总体流程图根据以上流程图描述
,可主要将本系统主要分为以下几个部分:1、视频采集模块该模块主要负责调用硬件设备摄像头,对摄像头进行采集参数的设定,主要包括采集格
式和采集视频分辨率的设定。设定完成后,则开始获取摄像头数据,截取一帧画面,将画面进行直方图均衡化处理,以提高图像质量,便于后续模块
进一步操作。2、人脸检测模块该模块主要功能为在视频图像中找到人脸区域。人脸检测的方法为利用Adaboost人脸检测算法。首先加载储
存于硬盘上的已经训练完成的人脸检测分类器数据,利用该数据建立一个人脸检测器。检测器将利用窗口对图像进行搜索,窗口的尺寸从小到大(编
程设定),直到完成对整幅图像的搜索。若搜索得到人脸区域,则对该区域图像进行裁剪,并重采样为标准尺寸;否则系统给出提示未搜索到人脸。
3、无人机人脸识别模块该模块主要功能为在将上一步生成的人脸区域图像与人脸库中图像进行比对,并识别出人脸的所属身份或者鉴别出人脸不存
在于库中。无人机人脸识别主要利用的是SURF算法。由于需要将待匹配人脸的特征描述算子与库中人脸一一比对,因此需要提取得到人脸库中图
像的SURF特征描述算子,而实时提取将耗费大量时间,且存在大量重复工作。因此人脸库中的SURF特征描述算子事先提取完成,并以文件形
式储存在硬盘上。无人机人脸识别模块工作时,首先加载人脸库的特征数据,然后利用SURF匹配算法循环匹配待识别人脸与人脸库中每一个特征
。若可以匹配到,系统则给出身份信息;若无法匹配成功,系统则给出报警提示。4、人脸库训练根据流程图可看出,该系统可以很方便的向人脸库
中添加新的人脸数据。而每次添加新的人脸图片后,必须重新生成人脸库的特征描述算子文件。因为系统在无人机人脸识别阶段,未直接使用人脸图
像数据,而是加载特征描述算子文件,该文件所包含的内容应和图像数据匹配。本系统采用文件形式管理数据,因此添加新人脸的时候,只需要将人
脸图像存放至指定目录,并点击系统上的“训练”按钮,就完成了向人类库中加入新身份的操作。3.3系统实现3.3.1视频图像采集的实
现该模块是本系统最为基本的部分,用于调用摄像头硬件设备,捕获图像数据。在OpenCV2中,提供了一个VideoCapture类来实
现视频的采集。VideoCapture既可以从文件读取视频也可以直接从摄像头设备读取。其构造函数有两种形式,分别为:VideoCa
pture::VideoCapture(conststring&filename);和VideoCapture::VideoC
apture(intdevice);前者构造时需要填写文件名(包括文件路径)参数,后者构造对象时,需要填写设备号(编号从0开始)
。视频对象建立完成后,由于算法均对单帧图像进行处理,因此要循环将视频帧截取出来保存为图像,从而便于系统后续操作。OpenCV提供了
多种描述图像的数据类型,常见的有cvMat和IplImage类。cvMat是OpenCV早期的基础数据结构,主要用于存储多维矩阵。
由于OpenCV中没有向量结构,因此CvMat除了可以存储多维矩阵之外,还可以存储向量。而且CvMat存储的数据也不会
限制其数据类型,在OpenCV中非常的实用。例如一个简单的二维矩阵可以用以下形式来创建:cvMatcvCreateMat(
introws,intcols,inttype);CvMat的结构也非常简单,包括行、列、数据类型以及行数据长
度等等,可以通过CvMat定义的指针来访问。在创建CvMat矩阵的时候最常用的方法就是使用例4.1所用到的方法,它由多个
函数组成,例如cvCreateMatHeader和cvCreateData函数。cvCreateMatHeader函数负
责创建CvMat的结构,而cvCreateData函数负责分配数据空间。还有一种方法是使用cvloneMat(CvMat
)来创建矩阵,它主要依据一个现有矩阵来创建新的矩阵。CvMat也有自己的构造函数cvMat,但创建的同时不分配内存空间。在创
建了CvMat矩阵之后,可以进行一系列的操作,如表4.1所示:lpllmage类是针对计算机视觉方面的处理,主要利用l
pllmage结构进行具体的定义。lpllmage数据结构是CvMat对象,是由CvMat派生而来的,它还包括一些其他
的成员变量用来描述图像的属性。主要的数据类型包括大小、像素的位深度、图像原点位置以及图像的像素等等。depth和nChanne
ls是新添加的参数,在普通的矩阵中,通常这两个参数都被同时表示,但是在图像处理中被分尅处理,这也是OpenCV对图像处理的一
个优化。而另一个优化是OpenCV可以让用户自己定义原点位置,这也是其他计算机视觉处理不具有的属性。常用的函数见表4.2所
示:由于两种类的数据侧重点不同,因此要结合所需要的操作选择适当的类型。在数据采集时,为了便于后续预处理,因此选择lpllmage类
作为储存图像的数据结构。3.3.2人脸检测的实现在OpenCV中关于人类检测的工具有很多,本文使用与Viola-Jones算法相
对应的工具CvSeqcvHaarDetectObjects()函数。该函数原型如下:CvSeqcvHaarDetectOb
jects(constCvArrimage,CvHaarClassifierCascadecascade,CvMe
mStoragestorage,doublescale_factorCV_DEFAULT(1.1),intmin_n
eighborsCV_DEFAULT(3),intflagsCV_DEFAULT(0),CvSizemin_size
CV_DEFAULT(cvSize(0,0)),CvSizemax_sizeCV_DEFAULT(cvSize(0,0))
);CvArrimage是一个灰度图像,如果对它设置了感兴趣区域(ROI),那么函数将只处理这个区域。因此,一个提高无人机人脸识
别速度的方法是使用ROI裁剪图像边界。分类器cascade是通过cvLoad()加载的Haar特征级联文件。参数storage是这
个算法的工作缓存。它由cvCreatMenStroage(0)来分配,由cvClearMenStorage()释放。函数cvHaa
rDetectObjects()以不同的窗口扫描输入图像寻找人脸。设置scale_factor参数可以决定每两个不同大小的窗口之间
有多大的跳跃;这个值设置的越大,则意味着计算会变快,但如果窗口错过了某个大小的人脸,则可能丢失物体。参数min_neighbors
控制着误检率。现实图像中的脸会多次被检测到,因为周围的像素和不同的大小的窗口也会检测到同一个人脸。在人脸检测代码中设置这个参数的默
认值表明只有至少3次重复检测,才认为确实检测到人脸。参数flag有4个可选的参数值,他们可以结合使用。第一个是CV_HAAR_DO
_CANNY_PRUNING,此参数值表示分类器不检测平滑区域。第二个是CV_HAAR_SCALE_IMAGE,这个表示分类器不对
分类器进行变换,而是缩放图像(这样可以节省内存空间,并且提高算法处理速度,从而提高检测性能)。第三个参数值是CV_HAAR_FIN
D_BIGGEST_OBJECTS,该参数值表示只返回尺寸最大的人脸图像(这样返回的物体数量只可能是1个或者0个)。最后是CV_H
AAR_DO_ROUGH_SEARCH,它只可以和CV_HAAR_FIND_BIGGEST_OBJECTS一起使用,因为这个标志告
诉分类器在任何窗口,只要第一个候选者被发现则结束寻找(这种做法可以减少分类器的搜寻量,从而提高速度)。参数min_size指示寻找
人脸的最小区域。这个参数设置过大,就会降低计算量,但是同时也会因此丢失面积较小的目标。利用该函数对人脸进行检测,下面为人脸检测的核
心代码。constcharcascade_name=".\\haarcascades\\facebest.xml";c
ascade=(CvHaarClassifierCascade)cvLoad(cascade_name,0,0,0);
storage=cvCreateMemStorage(0);cvEqualizeHist(small_img,small_im
g);cvClearMemStorage(storage);CvSeqobjects=cvHaarDetectObjects(s
mall_img,cascade,storage,2,2,CV_HAAR_DO_CANNY_PRUNING,cvSize(70,
70),cvSize(400,400));if(objects->total!=0){CvRectr=(CvRect)c
vGetSeqElem(objects,0);cvRectangle(img,cvPoint(r->xscale,r->ys
cale),cvPoint((r->x+r->width)scale,(r->y+r->height)scale),col
ors[0%8]);cvShowImage("result",img);…………}结论本文利用OpenCV的实验平
台实现了一个基于视频的实时无人机人脸识别系统。系统主要完成视频采集,人脸检测和无人机人脸识别任务。其中人脸检测利用Adaboost
算法而无人机人脸识别使用了SURF特征匹配算法。本文将两种算法相结合,实现了实时的人脸检测,且拥有较高的正确率。本文首先介绍了无人
机人脸识别技术的研究意义与典型应用;介绍了无人机人脸识别技术对比其他的生物特征识别技术拥有其自身的优势与不足;简单介绍了什么是O
penCV,主要针对哪些算法以及OpenCV的特点;对VisualC++2010进行了简单的介绍,对于如何在Visua
lC++2010下对OpenCV进行配置给出了详细的步骤。接着在对两个算法进行深入研究的基础上,分析了无人机人脸识别实验
平台的需求,包括对人脸实验图像的批量导入、人脸特征提取和识别以及无人机人脸识别算法评价指标的计算等。针对这些需求和OpenCV
中无人机人脸识别相关的库函数,本文归纳了实现这些功能需要的OpenCV库类和成员函数,描述了通过这些库类实现无人机人脸识别实验
平台功能的过程和效果。最后在实现的无人机人脸识别实验平台上,对北京市顺义区成人教育学校人脸数据库上进行实验。通过无人机人脸识别,验
证了实现的无人机人脸识别实验平台的有效性和算法的效果。本文实现的无人机人脸识别实验平台能够对人脸图像库进行批量的无人机人脸识别实
验,并通过评价指标的计算验证无人机人脸识别算法有效性,但任有以下不足之处留待下一步工作解决:1、进一步提高无人机人脸识别的准确率。
从实验结果可以看出,本系统目前虽然拥有较高的人脸检测正确率,但是无人机人脸识别正确率还较低。尤其是对于多角度的图像识别时,效果较差
。因此下一步将结合其他的特征算法对系统进行改进,提高系统处理多角度图像的能力。另外,光线的明暗变化也会对本系统造成较大影响。因此,
需要结合其他算法解决系统对光线问题敏感的问题。2、进一步提高无人机人脸识别的速度。在试验调试中发现,人脸检测速度较快,平均每张只需
要30ms的时间,但平均处理每张图像的总时间为685ms,因此无人机人脸识别部分大约用时655ms。可见系统大部分时间都用在了无人
机人脸识别过程中。下一步考虑降低尺度空间的规模,减少建立尺度空间的用时。同时在匹配算法的选择上,下一步考虑选择更为简单的匹配算法,从而节省匹配时间。参考文献:孙宁.人脸检测综述[J].电路与系统学报,2006,11(6):101-107焦方飞.Adaboost算法及其在新生儿面部检测中的应用研究[D],南京:南京邮电大学,2008RobustReal-timeObjectDetection.PaulViola,MichaelJones.IJCV2004.PapageorgiouCP,OrenM,PoggioT.Ageneralframeworkforobjectdetection[C]//Computervision.Sixthinternationalconferenceon.IEEE,1998:555-562.金龙.基于集成半监督学习的标签噪声研究[D].西安:西安电子科技大学,2013李航.统计学习方法[M].北京:清华大学出版社,2012.3康战波.灾难现场的人体检测技术研究[D].哈尔滨:哈尔滨工程大学,2011左登宇.基于Adaboost算法的人脸检测研究[D].合肥:中国科学技术大学,2009PaulViola,M.Jones.Rapidobjectdetectionusingaboostedcascadeofsimple[M],CVPR,2001.PaulViola,M.Jones.Fastandrobustclassificationusingasymmetric,NIPS,2001.杨晓敏.图像特征点提取及匹配技术[J].光学精密工程,2009(6):45-51YuanxinYe,LiangmingLiu,LiwenLin,QianFan.“AnAutomaticPrecisionRegistrationMethodBasedonSIFTandHarrisFeatureforMulti-SourceRemoteSensingImages”[C].(ISDE6).2009DavidG.Lowe,“Objectrecognitionfromlocalscaleinvariantfeatures”[A].In:ProceedingsofInternationalConferenceonComputerVision[C],Corfu,Greece,1999:1150-11573
献花(0)
+1
(本文系HQY3377首藏)