您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > 基于OpenCV的人脸识别系统
龙源期刊网的人脸识别系统作者:魏娅敏来源:《中小企业管理与科技·上旬刊》2015年第02期摘要:本文针对课题要求,将VisualC++作为开发工具,在开源计算机视觉平台OpenCV上进行大量的研究和测试,所涉及的内容有:视频图像的采集、人脸图像的预处理、数学形态学图像处理、人脸定位和经典的AdaBoosting算法等。进而为研究人脸识别技术提供参考依据。关键词:识别系统视频识别OpenCV1研究背景近年来,在安全入口控制、金融贸易等方面,随着应用需求的增长,生物统计识别技术受到社会的普遍关注。目前,微电子和视觉系统有了新的进展,在一定程度上使得高性能自动识别技术的实现代价不断降低。而人脸检测是所有的生物识别方法中应用最广泛的技术之一,人脸检测最初来源于人脸识别。人脸检测的目的是检测一张图像是否有人脸,如果有人脸,就把它从图像背景中分离出来,然后对特征进行人脸识别。而在视频中的人脸检测在信息处理中,已经成为一项相当难突破的技术,越来越受到计算机视觉界的广泛关注,作为一个有价值课题,已经渗透到各不同领域中。2视频识别功能详细设计2.1本系统的人脸检测算法2.1.1基于Haar特征的人脸检测算法。本系统开发过程中使用的人脸检测算法为基于Haar特征的人脸检测算法,Haar特征定义:HAAR算法是一种基于特征(feature)的算法,而不是基于像素的算法。利用Haar特征分类器实现人脸识别,其特点主要表现为检测速度快,性能好,实现流程如图1所示:对于每个特定分类器来说,通常情况下用形状、感兴趣区域中的位置以及比例系数来定义其特征。在浏览了几种经典的人脸检测算法后,回到本系统中使用的人脸检测算法上。基于Haar特征的人脸检测算法是最近几年被引用较多,较典型的人脸检测算法。2.1.2积分图像。积分图是Haar分类器能够实时检测人脸的保证。积分图像是数字图像的一种表示方法,对(x,y)点处的像素值,代表所有左上角像素的总和。龙源期刊网(i,j)是原始的图像,i(x,y)是积分图像。(x,y)点的数值等于左上角灰色区域的所有像素总和。2.1.3Adaboost算法。本系统中所涉及到的Haar分类器方法,包含了Adaboost算法,从本质上说,我们对Haar分类器进行探讨,实际上应用Boosting算法,在Haar分类器中,用到了AdaBoost算法,在底层的特征提取中采用了高效率的矩形特征和积分图方法。虽然,haar分类器采用了Boosting的算法,但是,在OpenCV中,Haar分类器与Boosting采用的底层数据结构不是同一套,Haar分类器,它建立了boost筛选式级联分类器。第一步是将待检测图像转换成灰度图像。第二步是通过灰度图像得到积分图像。第三步在不同尺度上对积分图像进行检测。第四步将不同尺度下的检测结果合并后输出。2.2MFC设置在对运动目标进行检测的过程中,通常情况对实时性要求比较高。一般的视频采集多为20-30f/s(帧/秒)的速度。所以在创建MFC控件时在图片控件中基于给定的矩形设置图像的ROI(regionofinteresting)。2.3图像的采集与处理在很多应用程序中,我们想在输出的视频流中记录输入视频流或者捕获的图像序列,在这种情况下,OpenCV提供了一个简洁的方法。该方法就像创建一个捕获设备,以便从视频流中提取相应的帧,同样,我们可以创建一个写入设备,进一步将视频流写入视频文件。对于OpenCV来说,其中的HighGUI模块,为我们提供了一种简单的方式来处理这种情况。处理视频时,我们最先要了解的就是CvCapture。CvCapture结构包含从摄像头或视频文件中读取帧所需的信息。当我们需要处理摄像头图像序列时我们只需要简单的从摄像头获取图像,像视频文件一样的处理。为了便于开发工作,大多实时处理的程序同样会有视频文件读入模式,CvCapture结构的通用性使得这非常容易。创建一个有效的CvCapture结构之后,一旦进入while(1)循环,便可以读视频帧,我们采用的方法是使用cvGrabFrame(),该函数以CvCapture*指针为参数,返回一个整数,当读取帧成功时返回1,否则返回0。因为获取的视频帧数据是未经过处理的,cvGrabFrame()被设计为用于快速将视频帧读入内存。在CvGrabFrame()以后,可以调用cvRetrieveFrame()来处理cvGrabFrame()读入的数据。这个函数会对读入帧做所有必须的处理(包括图像解码操作),并且返回一个IplImage*指针,该指针指向另一块内部内存空间。所以我们先将图像复制出来,因为这个指针所指向的结构空间由OpenCV管理,所以不可释放。2.4图像预处理2.4.1图像灰度化处理。通过增强图像中的有用信息,对图像中的视觉效果进行改善,同时结合应用图像的实际情况,进而在一定程度上有目的地对图像的整体或局部特性进行强化,龙源期刊网进一步使原来不清晰的图像变得清晰,扩大图像中不同物体特征之间的差别,对于不感兴趣的特征进行抑制,不断改善图像的质量、丰富图像的信息量,强化图像判读、识别效果,不断满足图像分析的需要。本系统中采用IplImage结构体,并构建灰度图。2.4.2直方图均衡化。对于图像来说,直方图作为最基本的统计特征,通常情况下能够对图像灰度值的分布情况进行反映。同时图像的明暗分布规律可以通过直方图来反映,并且可以通过变换图像对直方图进行调整,进而在一定程度上获得较好的视觉效果。在每个灰度级上,直方图均衡化都具有相同的象素点数,目的是使图像在整个灰度值动态变化范围内分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。本文针对课题要求,将VisualC++作为开发工具,在开源计算机视觉平台OpenCV上进行大量的研究和测试,所涉及的内容有:视频图像的采集、人脸图像的预处理、数学形态学图像处理、人脸定位和经典的AdaBoosting算法等。在目前环境下,尽管人们对人脸识别系统进行深入的研究,并且取得巨大的进步,同时提出了许多算法,还有不少软件投入了商用。但是,人脸识别机理尚属未知,在这种情况下,对人脸识别技术的研究还有很长的路要走。参考文献:[1]山世光,面部特征检测与识别的研究与实现[D].哈尔滨工业大学,1999.[2]蒋遂平.人脸识别技术及应用简介[M].中国计算机世界出版社,2003年12月.[3]于仕琪,刘瑞帧.学习OpenCV(中文版)[M].清华科学出版社,2009.10-145.[4]林维训,潘纲,吴朝晖.面部特征定位方法[J].中国图像图形学报,2003:849-859.[5]何军,戚飞虎.一种基于肤色和主元分析的人脸检测方法[J].计算机工程,2003.6:98.[6]胡晓燕.基于肤色的人脸检测算法的研究[D].四川大学,2004.[7]于威威,滕晓龙,等.复杂背景下人眼定位及人脸检测,计算机仿真,2004:21.[8]卢春雨,张长水,闻芳,阎平凡.基于区域特征的快速人脸检测法[J].清华大学学报(自然科学版),1999(1):39.[9]周长发.精通visualc++图像处理编程[M].北京:电子工业出版社,2004年10月.[10]张宏林.visualc++数字图像模式识别技术及工程实践[M].北京:人民邮电出版社,2003年4月.[11]苏剑波,徐波.应用模式识别技术导论:人脸识别与语音识别[M].2001.5:47.龙源期刊网[12]何斌,王运坚,等.VisualC++数字图像处理[M].(第二版).北京:人民邮电出版社,2002.
本文标题:基于OpenCV的人脸识别系统
链接地址:https://www.777doc.com/doc-7874760 .html