基于OpenCV的人脸识别算法研究(共7页)_第1页
基于OpenCV的人脸识别算法研究(共7页)_第2页
基于OpenCV的人脸识别算法研究(共7页)_第3页
基于OpenCV的人脸识别算法研究(共7页)_第4页
基于OpenCV的人脸识别算法研究(共7页)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于(jy)OpenCV的人脸识别算法研究摘要(zhiyo):通过对基于Adaboost人脸检测算法的研究,利用该算法与计算机视觉类库openCV进行(jnxng)人脸检测系统的设计,实现了对出现在视频或图像中的人脸检测。 此外,在VC+6.0环境下实现了对一个简单的人脸检测系统软件的界面开发,该系统对人脸检测的速度较快,检测结果较为准确,可以作为其他人脸检测或人脸模式识别的系统的开发基础。关键词: 人脸检测;openCV;Adaboost; 系统Face detection system design based on openCVAbstract: According to the res

2、earch of Adaboost algorithm of Face Detection,people made use of the algorithms and computer vision class library openCV for the design of face detection system and achieved the target of detecting faces showing up in videos and pictures. Whats more,in the environment of VC+6.0,it achieved the devel

3、opment of simple Face Detection. The speed of Face Detection is very fast and the test results are accurate. It can be used as the development foundation of other face detection or face pattern recognition system.Key words: face detection;openCV;Adaboost;system1.引言随着计算机与数字信号处理技术的高速发展,人脸检测技术在众多领域得到广泛

4、应用。人脸检测技术是指在视频或图像中检测出现人脸位置、大小的过程。 作为人脸信息处理中的一项关键技术,人脸检测技术已经超出了其它人脸识别模式的应用范畴,在视频处理、图像处理、身份验证、安全监测等方面有着重要的应用价值。随着计算机语言算法的发展,近年来出现了大量的人脸检测的算法,其中能够较好的解决人脸的检测速度与检测效果的算法,是在2001年由Paul Viola和Michael Jones首先提出的 Adaboost算法。openCV是由Intel 提供的一系列包括C与C+的提供计算机视觉和图像处理的开源软件包,它为视频或图像处理搭建了很好的软件平台。 本系统就是基于openCV利用 Adab

5、oost算法设计的一个简单的人脸检测系统#该系统能够快速&准确的检测到图像或视频中的人脸。2.AdaBoost人脸检测算法对人脸检测的研究最初可以追溯到20世纪70年代,早期的研究方向与现在的研究方向与方法不同。目前在实际中应用的人脸检测方法较为普遍的是基于Adaboost算法的方法。Viola的人脸检测方法是一种基于积分图、级联分类检测器和Adaboost算法的方法,方法框架可以分为以下3大步骤:使用Haar-like特征表示人脸 ,使用 “积分图”实现特征数值的快速计算;使用Adaboost算法挑选出一些最能代表人脸的矩形特征(弱分类器),按照加权投票的方式将弱分类器构造为一个强分类器;将

6、得到的若干强分类器串联组成一个级联结构的层叠分类器,训练得到的强级联结构能有效地提高分类器的检测速度。2.1 Haar-like特征(tzhng)haar特征是基于灰度图,首先通过大量的具有比较明显(mngxin)的haar特征(矩形)的物体图像用模式识别的方法训练出分类器,分类器是个级联的,每级都以大概相同的识别率保留进入下一级的具有物体特征的候选物体,而每一级的子分类器则由许多haar特征构成(由积分图像计算得到,并保存下位置),有水平的、竖直的、倾斜的,并且每个特征带一个阈值和两个分支值,每级子分类器带一个总的阈值。识别物体的时候,同样计算积分图像为后面计算haar特征做准备,然后采用与

7、训练的时候有物体的窗口同样大小的窗口遍历整幅图像,后逐渐放大窗口,同样做遍历搜索物体;每当窗口移动到一个位置,即计算该窗口内的haar特征,加权后与分类器中haar特征的阈值比较从而选择左或者右分支值,累加一个级的分支值与相应级的阈值比较,大于该阈值才可以通过进入下一轮筛选。 当通过分类器所有分类级的时候说明这个物体以大概率被识别。常用的Haar-like特征有线性特征,边缘特征,中心特征。图1 Harr-like特征(tzhng)2.2积分图由于训练样本通常有近万个,并且矩形特征的数量非常庞大, 如果每次计算特征值都要统计矩形内所以像素之和,将会大大降低训练和检测的速度。因此引入了一种新的图

8、像表示方法积分图像特征的特征值计算法,该方法只与此特征矩形的端点的积分图有关,所以不管此特征矩形的尺度变换如何,特征值的计算所消耗的时间都是常量。这样只要遍历图像一次,就可以求得所有子窗口的特征值。 积分图2定义为:其中I(x,y)为图像在点(x,y)处的像素值。 为了节约时间,减少重复计算,则图像I的积分图可按如下递推公式计算:这样就可以进行任意矩形区域内像素积分运算。 由图像的积分图可快速地计算图像中任意矩形内所有像素灰度积分。如图2所示,点1的积分图像的值为(其中Sum为求和):图2特征(tzhng)和计算同理,点2、点3、点4的积分图像(t xin)分别为:矩形区域(qy)D内的所有像

9、素灰度积分可由矩形端点的积分图像值得到:2.3 Adaboost算法基本原理Adaboost是一种迭代算法, 其核心思想是针对同一个训练集训练不同的分类器弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。使用Adaboost分类器可以排除一些不必要的训练数据特征,并将关键放在关键的训练数据上面。Adaboost算法中不同的训练集是

10、通过调整每个样本对应的权重来实现的。 开始时,每个样本对应的权重是相同的,即其中n为样本个数,在此样本分布下训练出一弱分类器。 对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分类错的样本就被突出出来,从而得到一个新的样本分布。在新的样本分布下,再次对弱分类器进行训练,得到弱分类器。依次类推,经过T次循环,得到T个弱分类器,把这T个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。Adaboost的具体算法如下:设输入的n个训练样本为:(x1,y1),(x2,y2).(xn,yn),其中xi是输入训练样本,yi0,1分别表示正样本和负样本,其中正样

11、本数为l,负样本数为m。n=l+m,具体步骤如下:初始化每个样本的权重;对每个t=1,.,T(T为弱分类器的个数)把权重(qun zhn)归一化为一个概率分布:如此(rc)使得t为一个(y )概率分布。对每个特征f,训练一个弱分类器hj,计算对应所有特征的弱分类器的加权错误率选取最佳的弱分类器ht(拥有最小错误率):t按照这个最佳弱分类器,调整权重:其中i=0表示被正确的分类,ei=1表示被错误的分类,当错误分类时:最后的强分类器为:其中2.4级联分类器级联分类器是由多个强分类器级联而成的,其中,每一层均有Abadoost算法训练得到的强分类器构成,第一层分类器得到疑似人脸的正确结果后,触发第

12、二层进行分类,当第二层分类器得到疑似人脸的正确结果后,触发第三层进行分类,依次类推,最后确定疑似人脸的图像就确认为人脸。反之,当触发到某一层时,分类器得到的结果是非人脸时,就立即停止对图像的检测。 级联分类器的结构类似于金字塔, 如图3所示,通过级联分类器,可以很对人脸做出检测。 由于本系统较为简单, 所以只用到了4级强分类器构成级联分类器 。3人脸检测的软件实现(shxin)方法简介3.1.1系统(xtng)流程该系统可分为两个模块,静态图像人脸检测和视频图像中的人脸检测。基于静态图像的人脸检测流程大致可分为4个过程(如图5所示):1)加载已经训练好的分类器;2)将其转化为计算机可以识别(s

13、hbi)的内部格式;3)加载该图片以进行检测 ;4)显示检测结果到检测区。基于视频图像的人脸检测主要流程为:1)摄像头提取图像;2)加载已训练好的级联分器并将图像其转化为内部各式;3)判断检测标志位,若为真,首先捕获当前一帧并创建该帧图像,然后载入当前一帧图像,并对图像的人脸区域进行检测,反之,结束检测;4)将检测到的结果显示到检测区。3.1.2 openCV人脸检测主要函数openCV软件包中提供了丰富的基于图像和视频处理的视觉类库4,该系统主要用到的函数有:cascade =(CvHaarClassifierCascade*)cvLoad(cascade_name,0,0,0); 该函数主

14、要功能为载入级联分类器,其中,cascade_name为级联分类器的路径。CvMemStorage*storage=cvCreateMemStorage(0);该函数创建(chungjin)一个默认大小为64 kB的内存块并返回指向块首的指针。CvSeq*faces =cvHaarDetectObjects(small_img,cascade,storage,1.1,1,0,cvSize(40,40);该函数的功能是使用训练好的级联分类器在图像中找到包含人脸目标的矩形(jxng)区域,并将这个区域作为一个矩形框返回。cvRectangle(img,LeftPoint,RightPoint,co

15、lor,2,7,0);该函数实现(shxin)对检测到的人脸区域用方框标记出来。获得被检测到的人脸后,要对图像进行包括图像色彩转换、图像大小变换和直方图均衡化等相关处理,方可把检测到的人脸显示在检测区中 。 相关的函数包括 :cvCvtColor(img,gray,CV_BGR2GRAY); 该函数是对图像进行色彩转换。cvResize(gray,small_img,CV_INTER_LINEAR);该函数是对图像的大小进行变换 。cvEqualizeHist(small_img,small_img);该函数的作用是对灰度图像直方图的均衡化。对于视频图像的人脸检测来说,还需要从电脑上的摄像头读

16、取视频 ,openCV提供好的实时视频采集 ,cvCapure*cvCaptureFromCAM(int 1); 该函数的功能是对摄像头(个为1)打开进行定义。3.2制作级联分类器制作分类器6需要制作正样本文件和负样本文件。 负样本可以来自于任意的图片, 这些图片不能包含目标特征。负样本由背景描述文件来描述。 背景描述文件是一个文本文件,每一行包含了一个负样本图片的文件名(基于描述文件的相对路径),该文件创建方法如下 : 采用Dos命令生成样本描述文件。4测试结果在个人用的笔记本电脑上进行视频图像中的人脸检测和图片中的人脸检测的测试, 得程序测试图如图6和图7所示. 结果表明,基于openCV

17、的简单的人脸检测系统,可以快速的从视频或静态图像中检测到人脸,并在检测区将人脸用椭圆标记。图6基于摄像头视频的单人脸检测结果图7基于摄像头视频的多人脸检测结果5结束语本文中简要阐述了在Adaboost人脸检测算法的基础上,采用级联分类器的方法检测动态视频和静态图像中人脸,在检测区对人脸进行标记,并对结果进行了分析。 分析结果显示,采用计算机视觉类库openCV实现基于Adaboost算法的人脸检测,具有检测速度快,检测结果准确,实时性强等优点,且实现的方法简单实用。 文中所阐述的基于openCV的简单人脸检测系统可用于其他人脸识别与实时监控的软件系统开发。本文由于时间有限,只用了简单人脸识别进

18、行人脸检测,实用性上有限制也存在很多不足,希望(xwng)在今后的学习研究中,能够结合更多的人脸特征,做出更精确的判断,为人脸识别的发展做出贡献。最后,感谢汪老师本学期的对我们(w men)的精心指导!参考文献:1梁峰.连续视频流中人脸检测和识别(shbi)的研究D.成都:电子科技大学,2010 2尹俊超,刘直芳.基于 OpenCV 的运动目标检测与跟踪J.计算机工程与设计.2011(08):224-2263Gray Bradski.&Adrian Kaehler.Learning OpenCVM,北京:人民邮电出版社,2009 4贾小军.基于开源计算机视觉库 OpenCV 的图像处理J.计算

19、机应用与软件,2008(04):29-31 5秦小文,温志芳,乔维维.基于 OpenCV 的图像处理J.电子测试.2011(07): 152-155 6刘文达.基于 OpenCV 人脸检测识别跟踪的研究D,武汉:武汉理工大学,2009 7 Ary Bradski,Adrian Kaebler.学习OpenCVM.北京 :清华大学出版社,2009.8黄文杰,陈斌.一种快速图像处理的积分方法J.计算机应用,2005,25(1):266-268.HUANG Wen-jie,CHEN Bin. A fast image process of inte-grationmethodJ.Computer A

20、pplications,2005,25(1):266-268.9崔晓青.基于AdaBoost算法的人脸检测人系统的研究与实现D.长春:吉林大学计算机科与技术学院,2008.10郭磊,王秋光. Adaboost人脸检测算法研究及OpenCV实现J.哈尔滨理工大学学报,2009,14(5):123-126.GUO Lei,WANG Qiu-guang. Research of face detection based on Adaboost algorithm and openCV implementationJ.Journal of Harbin University of cience and Technology,2009,14(5):123-126.11陈胜勇,刘胜.基于OpenCV的计算机视觉技术实现M.北京:科学出版社,2008.12唐徙文,曾义.人脸检测级联分类器快速训练算法J.计算机仿真,2007,24(12):324-327TANG Xi-wen,ZENG Yi. An improved algorithm for constru-cting cascade classifier

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论