关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于OpenCV的人脸识别设计方案

基于OpenCV的人脸识别设计方案

作者:时间:2012-07-17来源:网络收藏

3.2 图像预处理

由于大部分的脸部检测算法对光照,脸部大小,位置表情等非常敏感, 当检测到脸部后需利用cvCvtcolor()转化为灰度图像,利用cvEqualizeHist()进行直方图归一化处理。

3.3 脸部检测方法

采用一种叫做Haar cascade classifier 的检测器,他利用保存在XML 文件中的数据来确定每一个局部搜索图像的位置,先用cvLoad()从文件中加载CvHaarClassifierCascade 变量, 然后利用cvHaarDetectObjects()来进行检测,函数使用针对某目标物体训练的级联分类器在图像中找到包含目标物体的矩形区域,并且将这些区域作为一序列的矩形框返回,最终检测结果保存在cvRect 变量中。

3.4 脸部方法

步骤及所需函数如图2 所示。


图2 步骤(visio)

PCA 方法(即特征脸方法)是M.Turk 和A.Pentland在文献中提出的,该方法的基本思想是将图像向量经过K-L 变换后由高维向量转换为低维向量,并形成低维线性向量空间,即特征子空间,然后将投影到该低维空间,用所得到的投影系数作为识别的特征向量。识别时,只需将待识别样本的投影系数与数据库中目标样本集的投影系数进行比对,以确定与哪一类最近。

PCA 算法分为两步:核心脸数据库生成阶段,即训练阶段以及识别阶段。

3.4.1 训练阶段

主要需要经过如下的几步:

(1) 需要一个训练人脸照片集。

(2) 在训练人脸照片集上计算特征脸,即计算特征值,保存最大特征值所对应的的M 张图片。这M 张图片定义了“特征脸空间”(原空间的一个子空间)。当有新的人脸添加进来时,这个特征脸可以进行更新和重新计算得到。

(3) 在“特征脸空间”上,将要识别的各个个体图片投影到各个轴(特征脸)上,计算得到一个M 维的权重向量。简单而言,就是计算得到各个个体所对应于M 维权重空间的坐标值。

实现为:先用cvLoadImage()载入图片并利用cvCvtcolor()转换为灰度图片,建立自定义的迭代标准CvTermCriteria,调用cvCalcEigenObjects()进行PCA 操作,计算出的Eigenface 都存放在向量组成的数组中,利用cvEigenDecomposite()将每一个训练图片投影在PCA 子空间(eigenspace)上,结果保存在矩阵数组中,用cvWrite《datatype》()将训练结果保存至XML文件中。下面图3 为训练得到的部分特征脸图像。


图3 特征脸图像

c++相关文章:c++教程


cvt相关文章:cvt原理


全息投影相关文章:全息投影原理


评论


相关推荐

技术专区

关闭