摘 要:计算机人脸识别技术是利用计算机对人脸图像进行分析和理解的技术,Open CV是用于图像处理软件,具有很好的效率,文章主要基于Open CV结合隐马尔科夫模型研究用于人脸识别的模型,并提出一般研究步骤,经过大量室内试验证明基于Open CV的研究在人脸识别中具有高效性。
关键词:Open CV;隐马尔科夫模型;人脸识别
人们对于图片人脸识别的研究可以追溯到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;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.
作者简介:吕晶晶(1983,6-),女,汉族,江苏江都人,高校讲师,学士学位,研究方向:电子信息。
摘 要:计算机人脸识别技术是利用计算机对人脸图像进行分析和理解的技术,Open CV是用于图像处理软件,具有很好的效率,文章主要基于Open CV结合隐马尔科夫模型研究用于人脸识别的模型,并提出一般研究步骤,经过大量室内试验证明基于Open CV的研究在人脸识别中具有高效性。
关键词:Open CV;隐马尔科夫模型;人脸识别
人们对于图片人脸识别的研究可以追溯到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;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.
作者简介:吕晶晶(1983,6-),女,汉族,江苏江都人,高校讲师,学士学位,研究方向:电子信息。
摘 要:计算机人脸识别技术是利用计算机对人脸图像进行分析和理解的技术,Open CV是用于图像处理软件,具有很好的效率,文章主要基于Open CV结合隐马尔科夫模型研究用于人脸识别的模型,并提出一般研究步骤,经过大量室内试验证明基于Open CV的研究在人脸识别中具有高效性。
关键词:Open CV;隐马尔科夫模型;人脸识别
人们对于图片人脸识别的研究可以追溯到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;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.
作者简介:吕晶晶(1983,6-),女,汉族,江苏江都人,高校讲师,学士学位,研究方向:电子信息。