基于深度信息的指尖追踪及手势识别
2015-04-11顾德,李吉
顾 德,李 吉
江南大学 轻工过程先进控制教育部重点实验室,江苏 无锡 214062
1 引言
使用手势进行交流是人机交互(HCI)研究方面的一个流行领域,一些研究者提出使用手部运动轨迹[1-3]或者数据手套与媒体播放器进行交互操作。基于视觉的手势识别系统也在文献[4-5]被提出,并且多数研究方法需要使用者佩戴额外设备[6-10]。基于数据手套的方法虽然可以获得较精确的手部或手指数据,但是使用者必须借助额外设备,这一显著缺点使得该类方法在将来必然要被淘汰。而基于视觉进行手势识别的方法易受光照变化及复杂背景影响,一直是一个未能落实的难点。为了解决这些问题,选择基于深度信息的检测方法,结构光技术采集的深度数据鲁棒性好,精度高,并且可以实现实时检测,是一个很有前景的研究方向。
近来,随着传感器技术的发展,基于深度信息的识别技术受到越来越多人的关注。TOF(飞行时间法)摄像机[11],结构光技术因为昂贵价格,使得该类深度技术一直未能被广泛利用,直到微软公司推出Kinect摄像机。Kinect使得在黑暗环境和复杂背景环境下进行廉价且稳定的手势识别成为可能,这些基于深度信息的传感器技术提供了相对稳定的深度信息。一些研究人员使用深度数据进行手势轨迹的跟踪研究,但是没有多少研究者使用其提供手指跟踪层次的人机交互方案。
Bergh等人[12]使用TOF摄像机增强识别,他们的系统可以识别6种手势。基于RGB信息的识别精度为99.54%,基于深度信息的识别精度为99.07%,整合后的识别精度为99.54%。Yang等人[1]使用Kinect提供的深度信息产生一个手部运动轨迹识别系统,并应用在一个媒体播放程序中。手掌轨迹由一个3D特征向量进行检测,手势采用隐马尔科夫模型进行识别。该系统论证了采用近红外摄像头进行非接触式手势识别的可行性,但是该系统不能侦测指尖数据。这使得它仅能用于跟踪挥手、向上伸、向下伸、前推、后拉等基本的手掌运动轨迹。Tuntakurn等人[13]使用Kinect自带的人体骨骼识别技术进行粗略的手掌位置判定,而后识别指尖并将手势应用于一个医疗软件。这样使得当摄像头不能完整识别一个人的上体骨骼时该算法便不能正常工作。
本文使用Kinect for Windows获取使用者的手势,将手势和预先定义的手势库进行比较,并呈现相应的匹配结果。这个系统显示了仅使用人手作为输入介质进行人机交互的前景。本方案使用C#在Microsoft Visual Studio 2010下开发完成,用单手进行手势信息的输入。采用近红外摄像头获取深度信息,因此光照条件、使用者的肤色和衣着,以及环境背景对于本系统几乎不产生任何影响。若将本系统整合到其他各种应用程序中,它的识别精度和鲁棒性必然可以在日常生活中大有作为。
2 方法
设备输出的深度图像分辨率为640像素×480像素,320像素×240像素,80像素×60像素3档,这里采用640像素×480像素分辨率。首先将Kinect放置于水平桌面,使用者的手离近红外摄像头距离约0.8 m,这样设备可以提供一个大小恰当的手部深度图像,也不会对手的运动空间有所约束。在整个系统运行前,需要用户正对摄像头张开五指提示设备开始手势检测,同时也获取了手掌的尺寸S(见2.2节)。
本文的算法假设使用者的手掌与摄像头的投射平面所成角度在正负30°内,在实践中,此约束很少会影响操作,因为使用者的手掌直接面向传感器操作是很正常的。
本文设计的系统包括3个主要组成部分:手部分割、特征提取、手势识别。
2.1 手部分割
第一步需要把手部图像从背景中分离出来,假定使用者用于做手势的手离摄像头最近,为了去除手腕和部分手臂的深度图像,需要对整个图像进行阈值分割。首先使用深度值z=z0+σz分段前景背景,其中z0是探测到的所有像素点中离摄像头最近的那一点的深度值,σz是一个和手掌尺寸S有关的阈值。
一个像素点的上、下、左、右4个相邻点都存在时该点为内点,反之为轮廓点。为了避免之后计算轮廓和掌心时反复检查矩阵,使用两个无关的数组分别存储轮廓点和内点。从左至右,从上到下,遍历获得的所有像素点的深度数据,直到获取第一个可用的像素点数据。以该点为初始点,区分出手掌的内点和轮廓点,获得轮廓数组。每当一个点添加到存储轮廓点的数组时便被标记为已访问,当完成了一个手的轮廓后,程序将通过剩下的轮廓点去寻找另一个手。使用的轮廓排序算法流程图如图1所示。
图1 轮廓排序算法流程图
2.2 提取掌心
获取手部轮廓后,先寻找手掌的中心点。本文定义手掌的最大内切圆的圆心为手掌中心,相比于选取整个手掌轮廓的形心,这样获取的手掌中心坐标较为稳定。因为它避免了手指伸展或闭合对掌心坐标的影响。掌心满足如下公式:
其中,Pb为轮廓点坐标,Pi为内点坐标,min{d(Pi,Pb)}为每一个内点与所有轮廓点之间距离的最小值,取其最大值的内点坐标为掌心坐标。手掌尺寸S定义为手掌中心点与距离最近的轮廓点之间的距离:
2.3 手指识别
图2中红点为检测到的指尖,黄点为非指尖点,绿点为指蹼,蓝点为用于计算指尖的一对轮廓点。首先,沿着手部轮廓,对每一个轮廓上的P(i)点,寻找对应的P(i-k)点和P(i+k)点。获取P(i-k)和P(i+k)之间的中点,并计算该中点与P(i)之间的距离。若距离大于一个阈值δ,则认为P(i)是一个潜在指尖点。在潜在指尖点中,需要舍去检测出的指蹼,以便获得真正的指尖点。例如,对于P(i)点首先计算P(i)点与掌心之间的距离,再计算P(i-k)和P(i)的中点与掌心之间的距离。如果前者大于后者,P(i)即为指尖,否则为指蹼。
图2 指尖算法示意图
图3 指尖标定示意图
图4 手势识别示意图
此外,通过P(i)点做P(i-k)和P(i+k)之间中点的垂线可以获得代表手指朝向的矢量。当P(i)点离掌心的距离大于阈值γ时,认为手指为伸展状态,否则为弯曲状态。γ为一个与手掌尺寸S成比例的标量。
2.4 手指标定
本文采用指尖点的三维坐标进行手指标定。首先使用者需要正对摄像头张开5指,当探测到5个指尖时系统开始手指标定(如图3)。
(1)第一步先确定大拇指。一般而言,此刻5个手指中离摄像头最近的为大拇指;也对系统进行人手外形训练辅助探测大拇指。本文同时采用以上两种方法检测大拇指以提高标定正确率。
(2)在彼此相邻的手指中,拇指和食指之间的距离最大。由此可以标定食指。
(3)在所有手指中,离大拇指最远的是小指。
(4)因为已经获取了食指坐标,离食指最近的为中指。
(5)剩下的便是无名指。
手指标定算法在输入数据改变时会持续更新标定结果,如果在后一帧图像中依旧可以检测到相同目标,已标定的手指将不进行更新。
2.5 手势识别
手指标定后便可以进行手势识别,本文定义了3个分类器处理手势数据。首先计算侦测到的手指数目,并确定其是伸展状态或者弯曲状态。如果侦测不到某根手指,默认该手指为闭合状态,之后将信息发送给对应该手指数目的第二层分类器。如果在第二层分类器中仅有唯一的手势匹配该手指数目,就将该手势作为识别结果,否则继续进行手指矢量匹配。矢量a和矢量b之间的夹角α由公式3定义:
手指矢量匹配对每一对伸展开的手指之间的夹角进行测量,然后映射到相应手势,从而判别使用者输入的是何种手势。
比如对“I love you”手势的识别(如图4),系统首先探测到手指数目为3,且拇指、食指和小指均为伸展状态,之后对拇指、食指及小指之间的矢量夹角进行测量;夹角在定义的阈值区间内便识别出该手势,其他手势同理可得。
3 实验结果分析
为了考虑光照环境变化对本方案的影响,由5个手掌不同大小的人分别进行多次测试。使用Kinect Studio采集视频流并对指尖识别结果进行验证。图5为使用编写的程序进行实时指尖追踪写出字母“a”。
文献[14]对手部图像使用圆形过滤去除手掌部分获得手指图像,再取其中深度值最小的点为指尖。在检测到掌心的情况下,指尖检测正确率约为90%。文献[15]采用基于形状特征的方法进行手指检测,正确率约为89%。表1为在实验室内进行日光灯环境、复杂背景环境及阴暗环境下应用本文算法的指尖检测识别率,约为95%,比文献[14]的90%和文献[15]的89%都高。
表1 不同光照环境下指尖识别率
选用了11个手势来测试本文算法的可行性,每个手势由5个手掌不同大小的人分别进行多次测试。手势库及不同光照环境下的识别率分别为图6和表2所示,实验结果表明本文的指尖探测和手势识别在不同的光照环境下具有较好的鲁棒性。
图6 手势识别示意图
表2 不同光照环境下手势识别率
4 结语
本文提出了一个基于使用近红外设备获取的深度图进行手势识别的方案。首先利用近红外摄像头获取可靠的深度信息,数值归一化后使用深度数据分割手部前景。再使用K-curvature算法取得指尖坐标,同时计算获得手指朝向,掌心坐标等手部特征值。之后采用指尖标定算法标定手指,并设计了3个分类器处理手势数据以判定正确的手势结果。实验结果表明本文方案稳定且高效,基本不受背景光照条件变化的影响。该方案采用C#编写,使用一台CPU为Core-i3 3.30 GHz的台式机进行测试。测试的深度数据来自微软生产的Kinect for Windows,分辨率为640×480。今后的工作是通过改善算法去识别非正面手势,来增强识别算法的稳定性。
[1]Yang C,Jang Y,Beh J,et al.Gesture recognition using depth-based hand tracking for contactless controller application[C]//Proceedings of IEEE International Conference on Consumer Electronics(ICCE).[S.l.]:IEEE,2012:297-298.
[2]Silanon K,Suvonvorn N.Hand motion analysis for Thai alphabet recognition using HMM[J].International Journal of Information and Electronics Engineering,2011(1):65-71.[3]Holte M B,Moeslund T B,Fihl P.View-invariant gesture recognition using 3D optical flow and harmonic motion context[J].ComputerVision and ImageUnderstanding,2010,114(12):1353-1361.
[4]Chu S,Tanaka J.Hand gesture for taking self portrait[M]//Human-Computer Interaction Techniques and Environments.Berlin Heidelberg:Springer,2011:238-247.
[5]Wachs J P,Kölsch M,Stern H,et al.Vision-based handgesture applications[J].Communications of the ACM,2011,54(2):60-71.
[6]Harrison C,Benko H,Wilson A D.OmniTouch:wearable multitouch interaction everywhere[C]//Proceedings of the 24th Annual ACM Symposium on User Interface Software and Technology.[S.l.]:ACM,2011:441-450.
[7]Kenn H,Megen F V,Sugar R.A glove-based gesture interface for wearable computing applictions[C]//Proceedings of the 4th International Forum on Applied Wearable Computing(IFAWC),2007:1-10.
[8]Vicente A P,Faisal A A.Calibration of kinematic body sensor networks:Kinect-based gauging of data gloves“in the wild”[C]//Proceedings of IEEE International Conference on Body Sensor Networks(BSN).[S.l.]:IEEE,2013:1-6.
[9]Reddy K,Samraj A,Rajavel M,et al.Suitability analysis of gestures for emergency response communication by patients,elderly and disabled while using data gloves[C]//Proceedings of the 1st WSEAS International Conference on Information Technology and ComputerNetworks(ITCN’12),2012.
[10]Kumar P,Rautaray S S,Agrawal A.Hand data glove:A new generation real-time mouseforHuman-Computer Interaction[C]//Proceedings of the 1st International Conference on Recent Advances in Information Technology(RAIT).[S.l.]:IEEE,2012:750-755.
[11]Cui Y,Schuon S,Chan D,et al.3D shape scanning with a time-of-flight camera[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition(CVPR).[S.l.]:IEEE,2010:1173-1180.
[12]Van den Bergh M,Van Gool L.Combining RGB and ToF cameras for real-time 3D hand gesture interaction[C]//Proceedingsof IEEE Workshopon Applicationsof Computer Vision(WACV).[S.l.]:IEEE,2011:66-72.
[13]Tuntakurn A,Thongvigitmanee S S,Sa-Ing V,et al.Natural interactive 3D medical image viewer based on finger and arm gestures[C]//Proceedingsofthe 6th Biomedical Engineering International Conference(BMEiCON).[S.l.]:IEEE,2013:1-5.
[14]Raheja J L,Chaudhary A,Singal K.Tracking of fingertips and centers of palm using kinect[C]//Proceedings of the 3rd International Conference on Computational Intelligence,Modelling and Simulation(CIMSiM).[S.l.]:IEEE,2011:248-252.
[15]Song P,Yu H,Winkler S.Vision-based 3D finger interactions for mixed reality games with physics simulation[C]//Proceedings of the 7th ACM SIGGRAPH International Conference on Virtual-Reality Continuum and its Applications in Industry.[S.l.]:ACM,2008.