林书坦 尹长青
摘要:虚拟现实技术随着体感交互设备的不断更新而取得了快速的发展。LeapMotion控制器是近两年新推向市场的专精于捕获手部信息的高精度体感交互设备,已经被大量应用于游戏程序和项目演示领域。中国特有的数字手势在国内项目演示中可作为控制选项的选择输入。通过分析LeapMotion探测并建立的手部模型,匹配手势的识别特征来判定用户所指示的数字。实验结果证明,提取的特征总体识别程度高、效果好,但对于稍复杂的手势识别度仍有待加强。
关键词:手势识别;LeapMotion;体感交互
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)35-0108-02
Abstract: With rapid development of human interaction devices, virtual reality technology is rising quickly. LeapMotion controller is launched to the market in last two years specializing in capturing hands information with high precision, which has been applied in computer games and project demonstration areas. China's unique gestures for numbers can be used to choose options in domestic projects. After analyzing the hand model created by LeapMotion controller, it is feasible to recognize the number the model represents by matching certain features. The experimental results show that the extracted features are highly recognizable and effective in general, but the recognition rate is not as expected for complicated gestures.
Key words: gesture recognition; leap motion; human interaction
近年来,虚拟现实技术发展迅速,这与体感交互设备的发展密不可分。目前主流的交互方式还是实体按键(键盘鼠标、遥控器、游戏手柄)和触摸(触摸屏幕、绘图板)的形式。新出现的可穿戴式交互设备,如侦测手臂肌电信号的Myo智能臂环,Google眼镜等大大增加了增强现实和虚拟现实技术的影响力[1]。另外,三维体感交互设备也不断有突破性产品的出现,微软最早在2010年推出的Kinect for windows能够捕捉人体形状、动作,识别并跟踪面部,引发了研究和娱乐互动的一次浪潮;2012年,Leap Motion 公司推出了Leap Motion Controller小型运动控制系统,能够捕捉150°视场以及约8平方英尺的交互式空间内的多个物体,并且能够识别出手部细节与手势,又一次带来了体感交互的新方式。新的体感交互方式在游戏领域、项目展示领域得到了很好的应用。
Leap motion controller作为手部信息捕获设备能够以200帧/秒的速度追踪双手,并且达到0.01mm的识别精度[2]。Leap motion controller现在最主要的两个应用方向:一个是作为游戏交互设备增强虚拟现实感受目;另一个是作为三维演示项目的控制设备。在项目演示这一应用中,有一种实际场景是,采用手势代表数字完成控制项选择。数字手势是中国自古就有的、使用一只手就能表示一到九的数字的一种方法。因此,在许多国内演示项目中采用这一方式,不仅符合传统习惯,又能提高交互效率。
1 LeapMotion技术介绍
LeapMotion的基础技术是飞行时间(Time of Flight, TOF)技术,其基本原理是测量光线的往返时间判定距离,即扫描时通过调制光脉冲并连续发送和捕获整个场景的深度[1]。LeapMotion上装有2个灰阶摄像头传感器和3个红外线LED光源,能够一次性感知被测物体的所有像素,再对大量的像素数据进行按预置算法处理,在三维坐标上实时输出手势模型,精确地在虚拟环境中表示出现实人体运动情况。LeapMotion可以将手指、手掌或手臂能作为一个整体对象来追踪捕捉[3]。
LeapMotion将采集到的手掌、手指的位置和其他信息保存在一帧(Frame)当中,并分配唯一ID,算法通过检测帧中数据的连续性,生成运动信息。
2 数字手势识别
手势识别技术的关键在于根据LeapMotion设备捕捉到的图像信息,提取出关键特征进行识别。图1是数字手势的示意图。图2展示了由Leap Motion所采集到的数字1-9的手势模型的图像,可知,不同的数字手势所使用的手指个数、具体哪只手指都是不同的,可以以此作为手势识别的特征。
具体的特征分析如下:
数字1,食指伸直,其他手指并拢于掌心;
数字2,食指与中指伸直,其他手指并拢于掌心;数字3,中指、无名指、小指伸直,食指与大拇指相扣成环;数字4,大拇指贴于掌心弯曲,其他手指向各自前方伸直;数字5,各手指向各自指向伸直;数字6,大拇指与小拇指伸出,其他手指并拢于掌心;数字7,大拇指、食指、中指紧挨在掌心外一点,其余手指并拢于掌心;数字8,大拇指与食指伸向各自指向,其他手指并拢于掌心;数字9,食指伸出并弯曲成勾,其他手指并拢于掌心。定义数字1、2、3、4、5、6、8的手势为简单手势,数字7、9为复杂手势。
Leap Motion能够检测到手部手掌、手指、关节及其相关信息,并建立在计算机中建立模型,并提供对象可直接调用。根据以下算法进行处理:
1)获取Frame中的手指列表(FingerList),输入应当为单一只手操作,在被侦测到的手指列表中有且仅有5个手指;
2)分别计算每个手指根据手掌的方向(Direction)与指尖的方向(Direction)之间的夹角和手掌的法向量(PalmNomal)与指尖方向(Direction)指尖的夹角,判定指尖是否为用来表示数字的手指,若是,则记为有效手指,并将此手指放入检索列表中;
3)统计检索列表中手指个数,按表1划分出5种情况,其中当手指个数为4和5时,即可判定手势对应的指令数字为4或5,否则进入(4);
4)检索列表中按照手指类型(FingerType)得到不同的组合:当手指个数为1时,判断是否为食指,若为食指,判断指尖方向(Direction)与掌心方向(Direction)是否接近90°,若是,则判定为数字1,若不是,则判定为数字9;当手指个数为2或3时,判断手指类型,并根据表1中的组合得到相应的数字。
本算法的难点在于检索列表的建立时,手势7和手势9的有效手指和对应的无效手指的区分。手势9虽然仅使用了一根手指,但手指存在弯曲现象;手势7中的3个有效手指都略微弯曲且聚集于一点。而无效手指均攥紧于掌心,与有效手指相比,其手指指向与手掌指向与手掌法向量差异较大,可先界定无效手指,将不在无效角度内的手指标记为有效。
3 实验结果与分析
分别为对每种手势采用正面、倾斜45度的两组方式采集数据,待结果稳定后,记录一次,每组方式中正确手势100次,错误手势100次,统计程序识别的准确率。
实验结果表明,对于简单手势,识别正确率能够达到90%以上,而对于复杂手势,识别正确率偏低,数字9手势达到85%,而手势7只有53%。分析原因,LeapMotion对于手指重叠下的复杂情况不能准确捕获,建立的模型与实际情况存在较大偏差。总体而言,本文实现的算法能有效判断数字手势。
4 总结与展望
本文结合目前新型的人体交互设备LeapMotion,针对国内项目演示中使用数字手势作为选项控制输入的特定应用场景,提出了一种数字手势识别算法,该算法通过分析LeapMotion探测并建立的手部模型提取特征,判定该手势代表的数字。经过验证,算法的总体识别准确率较高,但对于复杂的手势,如数字7的手势,由于LeapMotion本身的限制识别率较低,可进一步研究提高算法识别率。
参考文献:
[1] 周忠,周颐,肖江剑. 虚拟现实增强技术综述[J]. 中国科学:信息科学,2015(2):157-180.
[2] 朱鸿展,宋汉辰,吴玲达,等.基于方向链码的书空手势识别[J].中国科技论文,2014(10):1155-1159.
[3] 黄俊,景红. 基于Leap Motion的手势控制技术初探[J]. 计算机系统应用,2015(10):259-263.