吴 博 王 彬* 翁政魁,2 熊 新 刘 辉
1(昆明理工大学信息工程与自动化学院 云南 昆明 650500) 2(上海大学通信与信息工程学院 上海 200072)
计算机技术的迅速发展使人类与计算机的关系愈加密切,其中人机交互技术是高效使用计算机的关键,而鼠标作为重要的人机交互设备之一,成为计算机使用过程中最为便利的工具。然而对于存在上肢运动障碍的人群来说,由于手指活动受限,难以使用鼠标操控计算机。因此亟需为这类人群提供合适的功能代偿类辅具。鉴于人的面部具有直接性、自然性和双向性等其他信息所无法具备的特点,使用面部特征点进行鼠标的控制是近年来研究的热点。面部特征点跟踪属于一种非侵入式跟踪方法[1-3],它可以使用普通摄像头而不需要配备额外的辅助装置,成本低且方便,用户可以随时随地使用。
目前关于鼠标控制系统的研究大都集中在基于视线和眼部生理特征的特征点选取和定位跟踪算法。秦华标等[4]采用若干个红外光源,利用反射光斑的相对距离对瞳孔角膜反射向量进行标准化,通过精确定位瞳孔位置来达到视线跟踪的目的。吴广发等[5]提取人眼图像中瞳孔-角膜反射向量作为视线方向计算模型所需的视觉信息,通过搭建红外光源设备提取瞳孔-角膜反射向量构建基于瞳孔-角膜反射技术的视线跟踪系统。徐岩柏等[6]提出了一种改进的Condensation人脸特征点跟踪算法,利用增量主元分析的方法对特征观测模型进行分析,更新面部特征点的特征基和样本均值。金欢等[7]提出一种基于虹膜识别的视线跟踪方法,通过调用用户第一次标定时的眼部数据结合当前的眼部偏转角和偏移量得到当前标定参数,解决了视线跟踪过程中需反复进行标定的问题。梁洋洋等[8]提出了一种基于深度自编码器网络的人脸特征点定位方法,以整张人脸图像为输入,通过对人脸轮廓的分析,得到三部分特征点并进行定位预测。朱麒文、祝宝龙等对基于视线跟踪技术的眼部特征点控制鼠标系统进行了具体的设计和实现[9-10]。
上述视线定位跟踪算法在理想状态下多具有较好的效果,但是在实际应用中对环境的光线照射及角度变化有较高的要求,并且对用户的眼部生理特征有严格的使用要求,例如因佩戴眼镜等产生的特征点遮挡问题而导致跟踪效果不好。因此使用此类算法所实现的实际鼠标控制系统在特征点定位的鲁棒性、目标跟踪的准确性和快速性,以及人机交互的便利性和适用性等方面还需更多的改进。
本文针对以上研究现状及存在的问题,以鼠标控制系统的快速性、抗干扰性和鲁棒性的实际应用需求为目标,以鼻子作为面部特征点,给出了一种带预测机制的改进Viola-Jones框架定位与跟踪算法。并在此基础上采用开源计算机视觉库OpenCV和C++实现了基于机器视觉的鼠标实时控制系统。通过对该鼠标系统的移动精度、响应速度、控制连续性、系统鲁棒性和中央处理器CPU占有率等实验结果表明,基于改进Viola-Jones框架的面部特征点鼠标指针控制系统移动快速、可控范围广,控制平滑准确,系统资源占用率低,对使用环境要求低,具有良好的实际应用价值。
基于特征点定位与跟踪的鼠标控制系统的重要基础是面部局部特征点的选择是否合理,本文选取鼻子作为局部特征点,其依据如下:
1) 从面部特征点鼠标控制系统的研究现状来看,采用视线作为局部特征点对于环境及使用者要求过高,严重降低了鼠标使用过程中的实时性和适用性。
2) 鼻尖位于人脸的中间位置,并且相对于眼睛等,鼻子在面部背景中具有唯一性,能够清晰地代表整个脸部的运动轨迹,可以保证有效的可跟踪性。
3) 在跟踪过程中,无论是使用者或姿态的变换,还是面部产生运动,鼻子作为被跟踪的局部特征点,其特征变化很小,能够有效地保证鼠标系统的适用性和鲁棒性。
综上所述可以看出,相对于眼睛等特征点,鼻子具有更好的可跟踪性和易定位性。因此我们将鼻子作为面部特征点,并根据鼻尖的实际运动行为和趋势进行跟踪,进而控制鼠标的动作。
Viola-Jones是Paul viola 和 Michael J Jones共同提出的一种人脸检测框架[11],利用积分图来提取目标特征,级联AdaBoost分类器进行特征筛选和监测,使得算法在保证准确度的同时减少了检测时的运算复杂度。
其算法基本原理如下:
实时采集自然光照下含有人脸的视频流S=[S1,S2,…,Si]并以帧为单位依次读入系统。首先进行单帧图像预处理,包括灰度化及直方图均衡化,接着使用Viola-Jones框架遍历经过预处理的单帧图像Si,执行以下两个步骤:
1) 使用Harr-like特征表示Si中人脸特征,在大量特征的基础上使用积分图加快特征值计算速度。
2) 使用AdaBoost算法对人脸特征进行分类,通过多个弱分类器级联得到一个更加准确的强分类器,最初平均分配所有训练样本的权值,对于第T次迭代,根据T-1次迭代中重新分配的权值来训练分类器hT(S)。根据这个分类器的分类成功率改变第T+1次迭代中样本的权重,从而得到新的分类器hT+1(S)。最后把每次迭代中得到的分类器级联起来,如图1所示,作为最终的决策分类器。
图1 级联分类器结构
式(1)为级联分类器的计算公式,式中:S为待检测样本;αT为组合系数。
(1)
尽管传统Viola-Jones框架能准确检测出特征点位置,但在检测过程中需要遍历整幅图像,计算量很大,所用时间较长,难以满足特征点定位的实时性要求。本文引入Kalman滤波器[12-14],用当前特征点的定位数据作为依据预测下一时刻鼻尖可能出现的位置。这样,在使用Viola-Jones算法检测特征点时无需再次遍历整幅图像,将全局运算优化为局部运算,只需要在预测得到的区域内进行检测就可以完成特征点的定位,大大缩短了检测所需的时间。
根据本文系统特点定义Kalman滤波的状态方程和观测方程分别为:
状态方程:
xt=A·xt-1+wt
(2)
观测方程:
zt=H·xt+vt
(3)
式中:A分别为状态转移矩阵和测量矩阵;wt、vt是两个随机变量,为互不相关的零均值白噪声序列;状态向量xt是一个四维向量(px,py,vx,vy),分别对应运动模中的目标位置(px,py)和速度(vx,vy)。在研究中我们假设特征点的运动是匀速的,那么可以定义状态转移矩阵A为:
(4)
进一步得到观测矩阵H:
(5)
跟踪过程中,设定(vx,vy)分量的初始值为零。检测当前窗口中心位置(px,py),估计当前鼻尖特征点的位置xt,再根据Kalman滤波算法预测下一时刻特征点的质心位置xt+1,用于预先确定下一时刻搜索窗口的中心位置。这样可以减少特征点的定位检测时间,从而可以在保证鼠标控制系统准确性的同时有效提高系统的实时性,满足用户要求。
本文所述系统硬件均基于ThinkPad系列笔记本电脑,其配置为:3 GB DDR3内存Intel T6670 2.2 GHz处理器,显卡显存为256 MB,使用电脑集成130万像素摄像头,单帧图像分辨率为640×480 DPI。
OpenCV是一个基于C++(开源)发行的跨平台计算机视觉库,可运行在Linux、Windows和MacOS等操作系统上。OpenCV提供了针对各种图像格式的视频源文件的标准图像处理算法,并且高效准确。图2给出了OpenCV视觉函数库与当前其他主流视觉库的性能比较,可以看出OpenCV在算法运算速度上有明显的优越性[15]。因此,本系统使用C++和OpenCV2.4.4在VS2012(Visual Studio 2012,可视化开发工具包)平台下进行开发。
图2 OpenCV与当前其他主流视觉函数库的性能比较
基于机器视觉的面部特征点鼠标控制系统必须完整实现传统鼠标的基本功能,即控制鼠标光标移动以及鼠标的单/双击功能。以第1节所给出的融合Kalman滤波的改进Viola-Jones框架主要实现鼠标指针的定位、跟踪及移动功能,加入鼠标按键动作控制模块,可以得到以鼻尖特征点实现的面部特征点鼠标控制系统,其组成框架如图3所示。
图3 鼠标控制系统框架
使用人脸特征点的变化来控制鼠标按键动作是研究者普遍采用的方案,虽然人脸有很多明显的动作特征如眨眼、张嘴等,但这一些人为表情特征存在一定的不可控性和不稳定性,使用这些特征容易使系统产生误操作,从而影响鼠标的用户体验。为了保证鼠标控制系统的可靠性,本文采用一种简洁的鼠标按键动作模块代替人脸特征点控制按键动作的常规做法。该模块的功能界面如图4所示,分为左键单击、左键双击、右键单击、右键双击四种鼠标动作。因为鼠标控制系统设定为卡机即进入特征点捕捉模式,因此用户可以通过鼻尖控制鼠标指针并选择所需的鼠标按键动作,当前设计的系统主要保证完成常规鼠标的常用简单功能。
图4 鼠标按键动作控制功能界面
也可以根据实际应用需要添加“中键单击”、“鼠标拖曳”等更多功能。按键动作控制流程图如图5所示,图中Key1、Key2、Key3、Key4分别对应于“左键单击”、“左键双击”、“右键单击”、“右键双击”,Key为最终的判断结果,Delay为延时参数。首先获取光标的位置,为了避免操作过程的误动作,设置一个2 000 ms的延时程序,当鼠标指针位于该功能区域超过2 000 ms时,才选中该按键功能。最后将该按键值赋给Key,Key值用于对鼠标事件参数赋值,以保证将光标移动到需要执行按键动作的区域后执行相应动作。
图5 鼠标按键动作判断控制图
以第1节中所述算法为基础,以鼻尖为局部特征点,构建以鼻尖面部特征点跟踪技术为基础的鼠标指针控制系统(见图6)如下:
1) 通过摄像头采集图像数据并进行预处理。
2) 使用Viola-Jones框架对经过预处理的第n帧图像数据进行鼻尖特征点的检测,分为两种情况:
(1) 如果检测到鼻尖特征点,则对鼻尖特征点的位置进行定位并记录第m个鼻尖特征点在整个图像中的位置(x,y);接着执行步骤3)。
(2) 如没有检测到鼻尖特征点,则返回步骤1)。
3) 通过采集第n+1帧图像数据并使用Kalman滤波算法对鼻尖特征点在第n+1帧中可能出现的位置进行跟踪。
4) 以步骤3)中得到的窗口图像为基础,并利用Viola-Jones框架在该范围内对鼻尖特征点进行检测:如果检测到鼻尖特征点,则对鼻尖特征点的位置进行定位并更新第m+1个鼻尖特征点在整个图像中的位置(x+dx,y+dy);接着执行步骤5);如果没有检测到鼻尖特征点,则返回步骤1)。
5) 根据检测到的第m个鼻尖特征点的位置(x,y)和第m+1个鼻尖特征点的位置(x+dx,y+dy)控制鼠标指针依据位移矢量进行移动;其中(dx,dy)为前后两帧中鼻尖特征点的位移量。
图6 鼠标指针定位、跟踪及移动功能实现
为了验证本文算法及以该算法为基础的鼠标控制系统的实际性能,本文在自然光照下实验室环境中分别对该鼠标系统的实际操控性能指标进行了三组仿真对比实验。实验环境与2.1节所述系统开发环境一致。
实验人员端坐于电脑前,通过选择鼠标按键动作功能即可进一步对鼠标指针进行控制。
1) 对鼻子的定位效果进行分析:以系统能够检测到鼻子特征点的位置为目标,鼻尖的移动范围可以达到260×240个像素,对于1 280×800的屏幕来说,鼠标的移动精度可以达到4.9×3.3 DPI,能够满足鼠标的正常使用要求。2) 对于非正常情况下的面部位置变换进行测试:最大限度地观察该鼠标系统对人脸特征点的跟踪情况。改进的算法框架继承了传统Viola-Jones算法检测精度高的特点,实验结果如图7所示,在左转、右转,以及最大限度的抬头、低头等各个姿态均有良好的跟踪表现。
分别采用传统Viola-Jones算法、文献[16-18]中的Mean-Shift算法和本文算法的实际鼠标跟踪效果进行对比,实验结果如图8所示。传统Viola-Jones算法在对特征定位上有良好的效果,但由于算法是单帧检测,前后没有相应的延续性,因此在60帧目标有遮挡时无法检测到特征点位置,这个缺陷会导致帧间特征丢失,从而产生抖动,影响鼠标指针移动的平滑性。在80帧时视频中人脸进行了前后的移动,因而鼻尖特征点在尺度上有很大变化,而文献 [16-18]Mean-Shift算法由于核函数带宽固定,当跟踪目标变大时,不能很好地描述目标特征。采用融合Klaman滤波的Viola-Jones框架不但能够保证和延续了传统Viola-Jones算法进行单帧检测时的准确性,又利用Kalman滤波的预测机制将帧与帧串联起来,大大降低了跟踪的丢帧率,因此可以使鼠标指针的平滑移动,保证了用户的良好操作体验。为进一步验证本文算法的适用性,在计算机屏幕上人为标定十二个目标点,使用基于上述传统Viola-Jones算法和本文算法的鼠标指针控制系统依次通过目标点并记录指针轨迹,如图9所示。传统Viola-Jones算法因存在较高的丢帧率而导致鼠标指针抖动严重,无法准确到达目标所在位置。文献[16-18]算法轨迹中由于鼠标指针受到跟踪算法精度的影响,难以准确指向实验目标点。本文算法因嵌入Kalman滤波在保证跟踪准确的同时降低了丢帧率,得到的鼠标指针轨迹稳定、平滑。
图8 三种算法跟踪效果对比
图9 不同算法下的鼠标指针移动轨迹对比
为了对比算法在实际使用过程中的效果,分别对传统Viola-Jones算法、Mean-Shift算法[16-18]和本文系统采用的算法对鼠标控制系统的效率和能耗进行了对比,结果如表1所示。
表1 各种算法效率对比 实时处理速度 帧/s
从表1可以看出,在实时处理速度这个方面,本文算法比Mean-Shift算法提高了28%,比传统Viola-Jones算法提高了69%。这是因为传统Viola-Jones算法在每一帧检测时都需遍历整幅图像,运算量很大,而本文算法在帧间嵌入Kalman滤波算法,利用预测机制将全局运算优化为局部运算,大大提高了算法的运算效率。
最后,与市面上同类鼠标控制产品[19]在使用时的系统CPU使用率对比,如图10所示,可以看出本文所开发的鼠标控制系统CPU使用率明显低于同类产品,节约了功耗。
图10 本文系统与同类产品CPU使用率对比
现有的基于视线和眼部生理特征的机器视觉鼠标系统对于使用环境和条件具有较高的要求,不利于面部特征点鼠标系统的实际开发和应用要求。本文针对这种现状选用鼻子作为面部的局部特征点,保证了定位目标的唯一性,因此使系统具有更好的可识别性和可跟踪性。在帧间检测的过程中引入基于Kalman滤波的预测机制,给出了一种改进的Viola-Jones框架,使帧间检测相关联,并利用预测机制将全局运算优化为局部运算,剔除了大部分跟踪过程中与目标无关的噪点,从而在保证跟踪质量的同时。在保证特征点跟踪准确度的同时降低了算法的运算量,大大提高了算法的运算速度,并且增强了系统的鲁棒性。在该算法基础上,采用VS2012和OpenCV实现了面部特征点鼠标指针控制系统,实际运行结果表明,该鼠标控制系统指针移动稳定、平滑,系统资源占用率低。为手部动作受限人群使用鼠标提供了良好的解决方案。
尽管本文算法已经提高了系统的实时性,达到了良好的用户体验,但为了更好地接近传统鼠标的功能,还有两个问题值得我们深入研究:(1) 如何进一步提高算法的处理速度从而更好地降低跟踪的丢帧率;(2) 如何保证在较小区域内光标的连续运动跟踪从而更好地实现鼠标的复杂按键动作。
[1] Botero F,Hasmatuchi V,Roth S,et al.Non-intrusive detection of rotating stall in pump-turbines[J].Mechanical Systems & Signal Processing,2014,48(1):162-173.
[2] Ding L,Martinez M.Features versus context:An approach for precise and detailed detection and delineation of faces and facial features[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2010,32(11):2022-2038.
[3] Cerrolaza J,Villanueva A,Cabeza R.Study of Polynomial Mapping Functions in Video-Oculography Eye Trackers[J].ACM Transactions on Computer Human Interaction,2012,19(2):602-615.
[4] 秦华标,严伟洪,王信亮,等.一种可克服头动影响的视线跟踪系统[J].电子学报,2013,(12):2403-2408.
[5] 吴广发,宋鸿陟,黄生辉,等.基于瞳孔-角膜反射技术的视线跟踪方法[J].现代计算机(普及版),2014,14(5):67-71.
[6] 徐岩柏.一种改进的Condensation人脸特征点跟踪算法[J].计算机应用与软件,2015,32(12):154-159,213.
[7] 金欢,姚鹏,周足红,等.视线跟踪中基于虹膜识别的一次标定方法[J].计算机辅助设计与图形学学报,2013,25(7):1052-1059.
[8] 梁洋洋,陈宇,杨健.基于深度自编码器网络的人脸特征点定位方法[J].计算机应用与软件,2016,33(9):139-142.
[9] 朱麒文,闫隆鑫,张若兰,等.基于视线追踪的眼控鼠标设计[J].电子器件,2016,39(2):235-241.
[10] 祝宝龙.基于视觉跟踪技术的眼控鼠标研究[D].哈尔滨工业大学,2015.
[11] Viola P,Jones M.Robust real-time face detection[J].International Journal of Computer Vision,2004,57(2):137-154.
[12] Zha F,Xu J,Li J,et al.Neural network modeling for FOG temperature drift[J].System engineering and electronic technology (English version),2013(5):838-844.
[13] 王华剑,景占荣,郑文泉,等.迭代容积卡尔曼粒子滤波算法[J].东南大学学报(自然科学版),2013,43(s1):85-88.
[14] 翁政魁,王彬,王坤,等.一种基于预测的实时人脸特征点定位跟踪算法[J].计算机工程与应用,2015,51(12):198-202.
[15] Bradski G,Kaehler A.Learning OpenCV:Computer Vision in C++ with the OpenCV Library[M].O’Reilly Media,Inc.2013.
[16] 彭宁嵩,杨杰,刘志,等.Mean-Shift跟踪算法中核函数窗宽的自动选取[J].软件学报,2005,16(9):1542-1550.
[17] 倪琦,贺明,张国进,等.基于多特征融合的Mean Shift跟踪算法[J].强激光与粒子束,2014,26(10):101022-1-101022-5.
[18] 杨一帆,田雁,杨帆,等.基于改进Mean-Shift算法的红外小目标跟踪[J].红外与激光工程,2014,43(7):2164-2169.
[19] Control Mouse by Eyes(Enable Via Cam)v1.7.2[DB/OL].(2015)http://www.bkill.com/download/31966.html.