王 震,吴 方,路良刚,陈敏英,陈娜佳
(北京理工大学珠海学院,广东 珠海 519085)
基于视线控制模拟小车系统研究
王 震,吴 方,路良刚,陈敏英,陈娜佳
(北京理工大学珠海学院,广东 珠海 519085)
视线控制技术是通过捕捉并分析眼睛瞳孔的移动,从而达到控制交互界面的技术。该技术可以帮助残疾人士远程控制智能设备,如智能机器小车等,以扩展人们的行动和控制能力。通过对眼球追踪与控制技术的理论和技术的系统研究,设计了一个基于实现控制的模拟小车系统。该系统能够通过摄像头捕捉进行人脸识别并进一步捕捉到眼球运动行为,并对眼球的运动进行分析和数字化,从而控制模拟小车的前后左右运动。该系统主要包括人脸检测模块、眼睛检测模块、瞳孔定位模块、眼眶定位模块、位置计算模块和小车控制模块等几个模块。实验结果表明,该系统经过训练能够准确识别目标人脸的眼球运动轨迹和运动情况,并根据眼球运动能够精确控制模拟小车的运动。
眼睛检测;瞳孔定位;视线控制;MFC;OpenCV
全球近五分之一的人口有残疾,残疾人存在信息通信等障碍。而人们获取外界信息的80%~90%来源于眼睛,同时视线所在方向和人类意识相关,即视线能准确代表人类的想法,且视觉自然、直接、双向的特性使得视线追踪技术在人机交互的研究中具有重要意义。通过使用视线追踪技术的辅助设备可以大大提高残疾人的生活[1]。因此有关视线控制的研究、开发和应用具有极大的发展前景。
视线追踪技术已经相对成熟,在各个领域都开始崭露头角。2012年丹麦The EyeTribe公司推出了一款低成本的视线追踪软件,使用低成本摄像头和红外LED就可以使用眼睛控制电脑;2011年Tobbi Technology公司展示了与联想共同开发的载有眼部追踪控制的电脑[2]。美国达特茅斯学院研究的眼菜单,主要目的是为了让残疾人无障碍地使用手机。由此看出,视线控制技术的发展应用将会越来越普及,给人们(特别是残疾人)带来更多便利。
文中系统主要研究图像处理中的脸眼检测、眼球移动定位、眼球控制小车计算等三部分,判断出眼球的移动方向,控制模拟小车的移动。
硬件环境包括普通的CMOS摄像头和电脑,软件环境为VS2008、OpenCV[3]。系统主要分为图像采集、视线追踪和小车运动控制。其中图像采集是最根本的组成,通过摄像头对受试者脸部进行图像采集,视线追踪部分完成人脸检测、眼睛检测、瞳孔定位、眼眶定位功能,目的是找到瞳孔和眼眶的相对位置。最后是控制小车部分,根据眼球相对位移来显示小车的位置变化。为此,将该系统分为五大模块,分别为图像采集模块、检测模块、定位模块、控制模块和图像显示模块。
1.1图像采集及检测
程序从摄像头获取图像。考虑实时性,每隔150 ms获取并处理图像一次。在150 ms中完成图像检测、定位、运动轨迹计算。然后从摄像头获取下一张图片。如在150 ms中检测不到,程序会自动跳过检测下一张图片。
在眼睛检测中,通常的做法是尽可能找出具体的感兴趣区域(ROI),原始图片是先检测出人脸,然后在人脸区域中检测眼睛。相关检测算法包括模板匹配算法[4]、ANN算法[5]、SVM算法[6]、AdaBoost算法等。其中AdaBoost算法的综合性能最高[7],因此该课题选用AdaBoost算法。AdaBoost是Boosting的算法之一,Boosting算法是将弱学习算法通过大量数据的集成提升为强学习算法的算法。AdaBoost是级联分类器,若干个弱分类器级联成一个强分类器,每个强分类器能够快速检测到负样本,当检测到一个负样本后就不再进行下一个强分类器的检测了,所以使用AdaBoost算法可以快速地检测到正样本特征。其实现是使用输入图像的矩形特征,也叫Haar特征。检测人脸或眼睛等每一种特征时,检测器得有特定算法选定的合适的矩形特征组合成强分类器[8-10]。
1.2定位模块
眼睛定位利用人脸特征区域的灰度信息的基于灰度积分图方法、基于边缘提取及Hough变换等[11-13]。根据眼睛灰度对比强烈的边缘特征区分出眼睛的瞳孔和眼眶轮廓。眼睛的视线是跟着瞳孔走的,相对于瞳孔来说,眼眶是静止不动的,以眼眶为参照物,可以判断出瞳孔的移动方向,从而判断出眼睛视线的移动方向。实验中通过轮廓检测得到眼睛图中的瞳孔和眼眶轮廓,拟合瞳孔圆得到瞳孔位置,拟合眼眶矩形得到眼眶位置。
1.3控制模块
由定位模块可以得到瞳孔的圆心和眼眶的起始位置,眼睛向右移动控制程序界面中的小车向右运动,眼睛向左、上、下移动,小车也相应向左、上、下运动。当程序运行过程中有未检测到新的眼球移动方向的话,小车则一直按最后一次保留的方向运动,直到小车运动到了区域边上为止。
1.4图像显示
当摄像头捕获图像经过处理后,在界面中显示出来,能实时反映检测到人脸和眼睛位置。如图像处理时未检测到人脸,则显示原图,并保存显示的图片。
2.1眼睛检测
眼睛检测中,目的是为了将包含眼睛部分的图片截取下来以供定位使用。该课题使用AdaBoost中Haar特征的检测算法来完成人脸检测和眼睛检测。检测开始时,通过人脸/眼睛检测器,检测出人脸,将检测到并截取下来的人脸通过人脸/眼睛检测器检测出眼睛,并区分眼睛的左右。其流程如图1所示。
图1 眼睛检测流程图
(1)图像预处理。
Haar特征分类器检测算法检测的是灰度图像,所以检测时要将图像进行灰度处理,检测图片的大小会影响检测的速度和精度,因此原图要缩小一定程度。然后经过直方图均衡化处理,以突出图像中人脸或眼睛的特征细节[14-15]。
(2)人脸/眼睛检测器。
人脸及眼睛检测器的功能是根据要求快速且精确检测到人脸/眼睛的结果。为了快速检测到目标,使用了约束时间检测方法,以约束检测最长时间;为了精确检测到目标,使用了从小图片到大图片的检测方法,以约束最大的图片缩小倍数。
采用Haar特征分类器检测算法,其检测时间与精度和图像的大小、窗口大小、图片质量等因素相关。为提高检测速度,尽可能缩小原图大小。但图片不能过小,否则导致不能检测到人脸或眼睛特征。
测试时,摄像头拍摄的图片为640×480,所拍摄到的图片中人脸占整张图片的比例不尽相同,人脸眼睛检测的速度和精度与受试者与摄像头的距离相关。实验时测试距离为40 cm左右,所拍摄到的原图的人脸(230×230)占据整张图片的比例为20%左右。实验中使用减小图像规模大小的方法,在100 ms内可以检测出人脸,即将原图缩小4倍可以检测到人脸。
眼睛占图片比例更小,检测时原图缩小倍数参考表1。
表1 眼睛检测中的图片规模、测试时间和结果
根据表1,选择眼睛检测原图缩小倍数从3.5开始,使用循环减小图像规模大小的方法。每进行一次人脸或眼睛检测时,缩小图像大小倍数减小0.1,直到检测到一个人脸个数或两个眼睛个数为止。为了防止检测时间过长,从而影响摄像头下一帧采集处理,将人脸最长检测时间规定在100 ms,眼睛最长的检测时间为50 ms。如果超过规定的检测时间,则读取下一张拍摄到的图片再次检测。
2.2眼睛定位
为了追踪视线,检测到左右眼后,还要计算眼睛的移动方向和位置。该课题采用计算瞳孔相对于眼眶的相对移动方向来判断眼睛视线的移动方向。这里称为眼睛定位,包括瞳孔定位及眼眶定位。经过眼睛检测器得到左、右眼睛的图像,通过预处理、轮廓检测、轮廓点集分析得到瞳孔圆和眼眶矩形作为判断的原数据,其流程图如图2所示。
图2 眼睛定位流程图
(1)图像预处理。
轮廓检测时检测的是二值图像,由于输入图像是在摄像头获取的原图中截取的眼睛的原图,是彩色图片,所以二值化处理之前要将图片灰度化。这里设置二值化阈值为30,这个阈值在眼睛图中相对稳定,只要能区分黑色的瞳孔和眼白即可。
(2)轮廓检测。
轮廓是按照区域的上下左右的顺序来判断并跟踪检测二值图像中的边缘点。为了在图像中检测到闭合边界的轮廓,首先从上到下,从左到右搜索,找到的第一个黑点即是左上方的边界点,记为A点,然后以A点开始在其右下方区域从右-右下-下-左下-左-左上的方向顺序找下一个边界点,然后又以刚找到的边界点为起始点按照相同的顺序找到下一个边界点,如果找到的边界点是A点,则表明轮廓找到了[16]。
(3)轮廓分析。
对轮廓检测到的图片进行分析,轮廓可以分为三种:一是图片的外围边框,开始点总是从(1,1)开始的;二是小圆点,一般由4~8个点组成,半径不超过4像素,这些小圆点可以组合成眼眶的矩形;三是大圆,在这里即可认为是瞳孔,一般由10个以上的点组成,直径超过8像素。轮廓分析时,使用X方向和Y方向的最大最小值的差值来判断其是点还是瞳孔。轮廓坐标集如图3所示。
图3 包含眼白的瞳孔轮廓分析
通过这种轮廓点集,分析X方向计算出的直径和Y方向计算的直径的差值,可以判断出这个瞳孔轮廓点集不只包含了瞳孔的轮廓。由于眼睛的特性,在Y方向计算出的直径就是瞳孔的直径,所以将Y方向的最大最小的差值作为瞳孔的直径。
OpenCV库中提供了一个拟合椭圆函数fitEllipse,根据轮廓的特点拟合成椭圆,椭圆的中心可以判断成瞳孔的圆心。椭圆的中心接近于瞳孔圆心。
2.3视线控制
根据瞳孔和眼眶的位置,可以计算出瞳孔相对于眼眶的位置,相对于眼球来说,眼眶是不动的,可以用来做参考物。瞳孔和眼眶的位置会有偏差,可经过多次实验统计出弥补参数。
眼睛向右移动,是想控制界面上的小车向右移动,然而图片上眼睛的向左向右与所看到的相反,只要将眼睛移动的左右方向作为图片上的左右方向即可。判断眼睛的移动方向是通过计算出本次和上次左眼和右眼相对于眼眶的x和y的位移差得到的。
//以靠鼻子边的眼睑作为标准
lx=l.x-l.xpre//正数为左移,负数为右移
ly=l.y-l.ypre//正数为向下,负数为向上
rx=r.x-r.xpre;//正数为左移,负数为右移
ry=r.y- r.ypre;//正数为向下,负数为向上
3.1眼睛检测功能测试
眼睛检测的目的是将眼睛图片从原图中截取下来以供眼睛定位使用。当摄像头获取的图像质量好,得到脸个数为1,眼个数为2时,表示检测通过。
3.2眼睛定位功能测试
眼睛定位的目的是拟合瞳孔圆和眼眶矩形,从而得知瞳孔和眼眶的位置。程序测试结果如图4所示。
图4 右眼和左眼的定位结果
从图4可以看出,拟合的瞳孔圆以及眼眶矩形的位置与所拍摄到的图片的实际位置吻合。通过多次实验测试的结果得知,图片质量决定定位的精确性。
3.3眼睛移动方向计算及控制的功能测试
眼睛移动方向计算是将上次定位的瞳孔和眼眶的位置和本次检测到的位置进行对比计算,从而得到眼球的移动方向,图5为上一次和本次的两次检测结果。
①②为上一次右眼、左眼图;③④为本次右眼、左眼图
由图5很容易看出,眼睛的移动方向以④的位移方向为准,程序将判断眼睛的移动方向为向右移动。
3.4模拟小车控制测试
该课题设计的目的是为了通过视线控制模拟小车实时移动,通过计算到的瞳孔移动方向控制模拟小车移动,结果从用户界面的小车移动方向指示器看到,指示器指向右,说明小车向右移动,结果如图6所示。
图6 模拟小车向右移动(左图)和模拟
综上可知,眼睛向右移动,用户界面上的模拟小车向右移动,模拟小车移动方向指示器指向右,达到了系统预计结果。如此类推,程序检测到眼睛向其他方向的移动同理。
该课题的定位技术中眼眶定位较为准确,但是瞳孔的定位不够精确(瞳孔较大幅度移动才可以检测到),主要原因是整个图像分辨率低,瞳孔部分像素点低。检测到的瞳孔轮廓会受周围眼白和眼眶的影响,不考虑处理速度在高分辨率情况下可以准确定位。最后在程序的控制运动上,瞳孔定位成为主要影响因素。眼球方向变化实现了小车控制,通过多次实验测试得到的结果基本符合当初的设计。
[1] Zheng Y,Liu F,Hsieh H P.U-Air:when urban air quality inference meets big data[C]//ACM SIGKDD international conference on knowledge discovery and data mining.New York,USA:ACM,2013:1436-1444.
[2] 李 栋.视线追踪控制技术,更优人机互动方式的新可能[EB/OL].2011.http://www.ifanr.com/44738.
[3] Hu S,Fang Z,Tang J,et al.Research of driver eye features detection algorithm based on OpenCV[C]//Proceedings of the 2010 second WRI global congress on intelligent systems.Washington DC,USA:IEEE,2010:348-351.
[4] 刘 源.基于模板匹配算法的人眼定位方法[J].火力与指挥控制,2014,39(5):124-126.
[5] 李 兵,戴尔晗.基于人工神经网络的视线跟踪系统[J].计算机技术与发展,2015,25(4):98-101.
[6] Shankar S.Assessment of the effect of variations in eye blinks on a face recognition algorithm[C]//Advance computing conference.[s.l.]:[s.n.],2015:78-85.
[7] Wu B,Ai H,Huang C,et al.Fast rotation invariant multi-view face detection based on real Adaboost[C]//IEEE international conference on automatic face and gesture recognition.Seoul,Korea:IEEE,2004:79-84.
[8] 李登辉,徐亚宁,王岩红.人脸识别中图像预处理方法的研究[J].大众科技,2011(4):65-66.
[9] 钟 威,刘智明,周激流.人脸检测中眼睛精确定位的研究[J].计算机工程与应用,2004,40(36):73-76.
[10] 刘慧英,王小波.基于OpenCV的车辆轮廓检测[J].科学技术与工程,2010,10(12):2987-2991.
[11] 杨 永.基于视线的眼动跟踪人机交互系统研究[J].信息技术,2009(5):12-14.
[12] 姚运萍,吴庆娟,高东波.一种低成本基于眼动跟踪人机交互系统的研发[J].新技术新工艺,2008(12):86-88.
[13] 王文成,常发亮.一种基于区域投影的人眼精确定位方法[J].光电子·激光,2011,22(4):618-622.
[14] 李红匣.基于OpenCV的人眼瞳孔定位算法[J].电子质量,2012(11):14-17.
[15] 张 超,卢韶芳,周付根.眼部特征自动检测定位方法[J].吉林大学学报:工学版,2015,45(5):1717-1723.
[16] 费俊琳,俞王新,王志中.一种改进的基于模板匹配眼睛特征点定位算法[J].计算机工程与应用,2007,43(32):207-209.
Research on Car Simulation System Based on Sight Control
WANG Zhen,WU Fang,LU Liang-gang,CHEN Min-ying,CHEN Na-jia
(Zhuhai Campus,Beijing Institute of Technology,Zhuhai 519085,China)
The sight control technology is to capture and analyze the movement of the eye pupil,so as to achieve the purpose of controlling the interaction interface.It can help people with disabilities to remotely control intelligent devices,such as smart cars and other devices,to expand people’s ability to operate and control.A simulation control system is designed based on the research of the theory and technology of eye tracking and controlling technology.It can conduct the face recognition by the camera and capture the eye movement,and with analysis and digitalization of the movement of the eyeball,can control the movement of the smart car.The system consists of several modules,such as face detection module,eye detection module,pupil positioning module,orbital positioning module,position calculation module and car control module.The experimental results show that it can accurately identify the eye movement trajectory and movement of the target,and precisely control the movement of the simulated car according to the eye movement.
eye detection;pupil location;eye control;MFC;OpenCV
2016-04-15
:2016-08-17 < class="emphasis_bold">网络出版时间
时间:2017-07-11
广东省教育科研2014年重点平台跃升计划及重大项目与成果培育计划特色创新项目(自然科学类)(2014KTSCX208)
王 震(1980-),男,博士,讲师,CCF会员(E200013418M),研究方向为物联网与智能交通。
http://kns.cnki.net/kcms/detail/61.1450.TP.20170711.1451.002.html
TP368
:A
:1673-629X(2017)09-0116-04
10.3969/j.issn.1673-629X.2017.09.025