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.


本文标签: 图像图片识别人脸