基于OPENCV的人脸识别1.Opencv的基本简介2.Opencv的应用方面3.人脸识别概要4.用opencv做人脸识别的原理及步骤1.Opencv基本简介(OpenSourceComputerVisionLibrary)由Intel公司在背后提供支持。它包含了超过500个函数来实现用于图形处理和计算机视觉方面的通用算法。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了JAVA、Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV2.Opencv的应用•人机互动•物体识别•图像分割•人脸识别•动作识别•运动跟踪•机器人3.人脸识别概要人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫做人像识别、面部识别。人脸识别系统主要包括四个组成部分,分别为:人脸图像采集及检测、人脸图像预处理、人脸图像特征提取以及匹配与识别。4.步骤1.人脸采集:提取人脸并保存2.OpenCV检测原理:OpenCV中有检测人脸的函数(该函数还可以检测一些其他物体),甚至还包含一些预先训练好的物体识别文件。主要步骤为:1)加载分类器:用cvLoad函数读入xml格式的文件。文件在OpenCV安装目录下的“data/haarcascades/”路径下,使用haarcascade_frontalface_atl.xmlhaarcascade_frontalface_atl2.xml2)读入待检测图像。读入图片或者视频3)检测人脸3.人脸预处理:在一个人脸识别系统中,应用多种预处理技术对将要识别的图片进行标准化处理是极其重要的。多数人脸识别算法对光照条件十分敏感,所以假如在暗室训练,在明亮的房间就可能不会被识别出来等等。这个问题可归于“luminationdependent”,并且还有其它很多例子,比如脸部也应当在图片的一个十分固定的位置(比如眼睛位置为相同的像素坐标),固定的大小,旋转角度,头发和装饰,表情(笑,怒等),光照方向(向左或向上等),这就是在进行人脸识别前,使用好的图片预处理过滤器。4.训练图片:创建一个人脸识别数据库,就是训练一个列出图片文件和每个文件代表的人的文本文件,形成一个facedata.xml“文件。比如,你可以把这些输入一个名为”trainingphoto.txt”的文本文件:joke1.jpgjoke2.jpgjoke3.jpgjoke4.jpglily1.jpglily2.jpglily3.jpglily4.jpg它告诉这个程序,第一个人的名字叫“joke,而joke有四张预处理后的脸部图像,第二个人的名字叫”lily”,有她的四张图片。这个程序可以使用”loadFaceImgArray()”函数把这些图片加载到一个图片数组中。为了从这些加载好的图片中创建一个数据库,你可以使用OpenCV的”cvCalcEigenObjects()”和”cvEigenDecomposite()”函数。5.人脸图像特征提取:Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。在确定了特征形式后Harr-like特征的数量就取决于训练样本图像矩阵的大小,特征模板在子窗口内任意放置,一种形态称为一种特征,找出所有子窗口的特征是进行弱分类训练的基础。6.识别过程:1)读取用于测试的图片。2)平均人脸,特征脸和特征值(比率)使用函数“loadTrainingData()”从人脸识别数据库文件(thefacerecognitiondatabasefil)“facedata.xml”载入。3)使用OpenCV的函数“cvEigenDecomposite()”,每张输入的图片都被投影到PCA子空间,来观察哪些特征脸的比率最适合于代表这张图片。4)现在有了特征值(特征脸图片的比率)代表这张输入图片,程序需要查找原始的训练图片,找出拥有最相似比率的图片。这些用数学的方法在“findNearestNeighbor()”函数中执行,采用的是“欧几里得距离(EuclideanDistance)”。5.)在输入图片与最相似图片之间的距离用于确定可信度(confidence),作为是否识别出某人的指导。1.0的可信度意味着完全相同,0.0或者负的可信度意味着非常不相似。5.人脸识别的长处与不足•人脸识别的长处相比较其他生物识别技术而言)非接触的,用户不需要和设备直接接触;非强制性,被识别的人脸图像信息可以主动获取;并发性,即实际应用场景下可以进行多个人脸的分拣、判断及识别;•人脸识别的不足对周围的光线环境敏感,可能影响识别的准确性;人体面部的头发、饰物等遮挡物,人脸变老等因素,需要进行人工智能补偿;(如可通过识别人脸的部分关键特性做修正)。•参考文献:•[1]“人脸检测研究综述”,梁路宏等,计算机学报,Vol25,No5,May2002;•[2]“人脸检测与检索”,艾海舟等,自然科学基金项目60273005;•[3]“基于连续adaboost算法的多视角人脸检测”,武勃等,计算机研究与发展,2005;•[4]“ComparativeTestingofFaceDetectionAlgorithms”,NDegtyarevetal.,ImageandSignalProcessing,2010;•[5]“Rapidobjectdetectionusingaboostedcascadeofsimplefeatures.”PaulViolaandMichaelJones,AcceptedConferenceonComputerVisionandPatternRecognition2001;•[6]•[7]•[8]\OpenCV\apps\HaarTraining\doc\haartraining.doc•[9]=1&t=4264#p15258•[10]=3880