admin管理员组文章数量:1536379
2024年5月31日发(作者:)
OpenCV人脸识别论文
摘 要:文章先简单介绍了该研究的系统组成和开发环境,重点
讲述以OpenCV图像处理软件为中心,设计人脸识别系统。本文设计
的人脸识别系统具有很好的实用性可识别能力、准确性和可移植性,
减小了识别误差,但是还存在很多方面的不足,如若是主机上控制多
个控制端,就会占用很大的内存,识别准确率和种类还有待提高,这
些还需要更多的人去努力。
人们对于图片人脸识别的研究可以追溯到20世纪60年代,到目前
为止发展以逐渐成熟,通常构建人脸识别系统需要使用人脸图像采
集、人脸识别预处理以及身份查找等,人脸识别在很多方面都有很大
的应用价值,Open CV是一种基于开源计算机视觉库的软件,通常应
用于人脸识别中、图像分割以及人机互动等中,文章主要研究基于
Open CV的人脸识别。
1 系统组成和开发环境
文章利用Open CV的人脸识别系统是在Linux操作系统下开发出
的图形界面,使用OpenCV处理库中提供的相关功能进行图像数据的
采集,调用Harry分类器对采集的图像进行人脸检测,检测得出的结
果再利用PCA算法进行省份识别,利用Camshift和Lucas-Kanade算
法进行人脸表情识别。图片来自于Basler acA640-100gc相机,此相
机操作系统为Fedora 10,在编译OpenCV之前为了处理图像还需要
编译FFmpeg。
2 基于OpenCV人脸识别研究
人脸识别在当前人工智能中是一个重要的课题,很多学者提出了
多种算法,但是在动态图像的人脸识别中研究不是太多。文章主要采
用OpenCv软件研究人脸识别,保存了需要的重要信息,提高配识别
率。
应用系统开发设计主要流程为图1所示。图像的采集主要通过
cvCaptureFormCam相机得到,并利用相关文件对返回的结构进行设
置(部分):
IplImage*ffame;
CvCapture*camera=0:
cvSetCaptureProperty(camera,
cvSetCaptureProperty(camera,
CV_CAP_PROP_-FRAME_WIDTH,320);
利用函数开启定时器,每个固定的时间发送槽函数,并将槽函数
放入缓存中,在从内部缓存中使用cvGrabFramea将图像读取数据,
在qt中显出并转化为QPixmap类型。现根据图像大小分配到缓冲区
绿,再把缓冲区指针拷贝到Qimage的指针中,在进一步循环把图像
的数据拷贝到缓冲区内,程序如下(部分):
for(int Y=0;Yheight;++y){
QlmagePtr[O]_iplImagePtr[O];
QlmagePtr[21_ipllmagePtr[2];
QlmagePtr[3]=0;
iplImagePtr+=3;}进而再利用setPixmap函数进行显示。
在图像的预处理环节中,由于目前大多数的脸部检测算法对于人
脸图像的大小以及位置等都比较敏感,因此需要对检测部位进行灰度
处理。人脸检测器利用XML中的数据来搜索图像的位置,OpenCV即
是采用这种人脸检测器进行检测,最终监测的数据结果保存到cvRect
中,识别基本步骤为先读入训练图像,再创造PVA子空间,把数据投
影到子空间,再训练结果,把结果进行保存进行图像识别。特征检测
方法的思想为图像向量经过K-L变换后转变为低维向量,进而形成特
征子空间,把图像投影到低维空间中。在识别人脸时,仅仅需要对比
数据库中的目标样本集合投影系数,就可以确定人脸图片属于哪一
类。在使用PCA算法时需要经历生成阶段和识别阶段。
在训练阶段先在训练脸照片集上计算特征脸,把随对应的图片最
大特征值,这些图片定义为元空间的一个子空间,若是需要添加新的
图像,这个子集可以进行更新和重新计算。在这个子集中图片数据投
影到特征脸上,进而计算权重向量,也即是各个图片数据的坐标值。
OpenCV先使用cvLoadImage函数将图片转化为灰度图片,在进行PCA
操作,计算出向量的数组,利用函数将图片的投影到PCA子空间上,
把结果保存到矩阵数组中,把结果保存到XML文件中。在识别新的人
脸图片是先给予前面得到的特征脸,将采集到的图片投影到特征脸
中,计算权重向量,判断图片是否属于人脸图像,若是判断结果为是,
就需要根据前面的极端的权重向量规划到最初计算的个体中或是规
划为新的个体图片。简单而言就是根据权重向量来判断图片的性质。
进一步更新特征脸,如实一个未知的人脸图像没有什么记录,但是又
出现了很多次,此时就需要把他的特征向量添加到新的个体中。
OpenCV实现点用函数采集如片映射到PCA子空间上。如图2是得到的
部分特征脸图像。
针对脸部表情识别而言,主要是采用Camshift函数进行计算,
这种计算方法能够利用目标的颜色直方图模拟将图像转换为颜色概
率分布图,把搜索窗的位置和大小进行初始化,得出结果,并根据所
得的结果自适应调整搜索窗口的位置和大小,从而定位中心位置,
Camshift具有解决目标图像变形的优势,这个函数本身对于系统资
源的要求度比较低,时间都复杂度也不高,因此在简单背景下具有很
强的跟踪效果。具体而言OpenCV来实现脸部表情的识别需要分为以
下几步,首先OpenCV充分调动cvCvtColor()函数,将色彩空间的
数据转化到HSI空间,接着在调用vCreateHist()函数来计算ID
直方图,在调用vCamShift()函数计算图片的位置和面积。这种光
流算法能够准确的得出不同图像间的的细微变化,Lucas-Kanade光
流算法能够计算两帧在一定时间段内的每个像素点位置的移动。在利
用这种光流算法时需要注意先使用shi-Tomasi算法来提取图像的特
征点,也就是找到图片中感兴趣的需要跟踪的点集,并定义为第一帧
的数目,找到特征值,接下来是使用函数实现光溜计算的系数迭代版
本。输出函数主要包括图像本身的特征数值点,通过这些点来确定局
部区域的特征,如眼部以及嘴巴等,如下图3是追踪眼睛眨动图像眼
睛通过比较数值的变化,来对比脸部的一些简单表情。
3 结束语
综上所述,文章先简单介绍了该研究的系统组成和开发环境,重
点讲述以OpenCV图像处理软件为中心,设计人脸识别系统。本文设
计的人脸识别系统具有很好的实用性可识别能力、准确性和可移植
性,减小了识别误差,但是还存在很多方面的不足,如若是主机上控
制多个控制端,就会占用很大的内存,识别准确率和种类还有待提高,
这些还需要更多的人去努力。
参考文献
[1]刘静.基于OpenCV机器视觉库的人脸图像预处理方法研究与
实现[J].电子设计工程,2012,20(16):186-187,190.
[2]梁路宏,艾海舟,徐光聿,等.人脸检测研究综述[J].计算机
学报,2002,25(05):449-458.
[3]李英,赖剑煌,黄琼燕,等.非均匀光照下的人脸表情多状态
检测与分类[J].中山大学学报,2006,45(05):17-21.
[4]聂伟乐,瞿建荣.基于OpenCV的运动目标光流算法[J]仿真应
用光学,2008,29(6):867-869.
[5]余九华,王敬东,李鹏.基于Camshifl的人脸跟踪算法计算
机技术与发展[J].白动画学报,2008,18(9):12-15.
[6]刘青山,卢汉清,马颂德.综述人脸识别中的子空问方法[J].
白动化学报,2003,29(6):900-911.
[7]沈永增,刘小磊.眼部疲劳状态检测算法的研究与实现[J].
计算机应用与软件,2011,18(03):106-109.
[8]伍文峰,王虎帮.基于模板匹配的目标识别算法的设计与实用
[J].计算机应用,2006,6(21:133-134.
[9]李英,赖剑煌,黄琼燕,等.非均匀光照下的人脸表情多状态
检测与分类[J].中山大学学报,2006,45(05):17-21.
版权声明:本文标题:OpenCV人脸识别论文 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/shuma/1717103579a534647.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论