李映辉,史卓,安亚磊(桂林电子科技大学,桂林 541004)
基于Leap Motion的三维手势识别方法
李映辉,史卓,安亚磊
(桂林电子科技大学,桂林541004)
摘要:
关键词:
随着微软Kinect的发展和普及,深度摄像头吸引了越来越多人的注意,同时各类3D应用也层出不穷。尽管Kinect价廉普及广,但它相对于人体手部信息的识别和处理太复杂,必须经过繁杂的图像处理等识别过程,难以保证快速的估计手部姿态[1]。而其他更高性能的深度摄像头价格昂贵,无法普及。Leap Motion的出现解决了这一问题。它是由美国的Leap公司出品的一款廉价的专门捕获手部运动信息的体感控制器,它提供了一种专门识别手并能进行手势交互的解决方案。相较于传统的三维手势识别基本上都是通过转换为二维图像来处理[2-4],Leap Motion利用双目红外成像的原理重建出手的三维空间运动信息,能检测并跟踪手、手指和类似手指的工具,实时获取它们的位置、方向和部分手势信息。基于Leap Motion的高精度和实时性,并且价格低廉易于普及,在本文系统中采用Leap Motion作为三维手势获取和识别的设备。
在Leap Motion中,一个Frame类对象代表一个数据帧,Frame类的成员函数hands()返回一个容器-HandList类对象,它包含了若干个Hand类的对象,每个Hand类对象包含了Leap Motion检测到的一只手的全部信息[5]。
Hans类主要描述了三维手势的手指属性和手掌属性。其中手指属性Hand::fingers()具体包括手指的个数FingerList::count()、每根手指尖的位置pointable.tip-Position()和指向方向pointable.direction()。本文中为了进行识别添加手指的状态有两种:张开状态和闭合状态,可以通过公式(1)计算得到每根手指向量分别于手掌心向量的夹角来判断该手指是张开还是闭合;添加夹角属性,即计算并记录张开状态下的相邻手指间的夹角。手掌属性则具体包括左右手属性,手掌心在三维坐标下的位置hand.palmPosition(),手掌心的6个朝向(上、下、内、外、前、后),其中手掌心朝向由两个向量给出:一个是从手掌中心指向手指的方向hand.direction();一个是垂直于手的平面,指向手掌的外侧hand.palmNormal(),如图1所示。手指的指向如图2所示。
以单手手势图4中的手势“Okay”为例,三维手势识别过程具体细分到下面几个主要步骤:
(1)拍摄用户做出的手势动作。
在这里,在体感设备有效范围内检测到用户的手势信息,持续两秒的拍摄,对于静态三维手势,两秒时间内的手势保持不动对用户无论生理上或心理上都是在可忍耐时间内;
(2)对用户手势信息进行初步判断。
根据拍摄到的手心点的三维坐标个数及初步判定出现在Leap Motion有效范围内手掌个数,由此判断出现在用户输入的是单手还是双手。单手静态三维手势和动态三维手势在拍摄时间段只有一只手出现在摄像头可视范围内,双手静态三维手势要求两只手在拍摄时间段同时出现在摄像头可视范围内。
(3)用T1-T5表示一只手的五根手指,其中T1表示大拇指,T5表示小拇指。分析图5手势特点:
①结合图4的Leap Motion的空间三维坐标系[6]易判断出T1和T2在X轴和Y轴上的坐标绝对值是小于T3、T4和T5,而Z轴上T1和T2绝对值是大于T3、T4和T5;
②T1和T2指尖是相触的,所以它们指尖的欧氏距离必须小于阈值d;
③T3和T4之间的夹角α34以及T4和T5之间的夹角α45必须大于一定角度α';
④T3、T4和T5是张开状态,故它们与手掌的垂直向量hand.palmNormal()呈一定大小的夹角β';
通过公式(2)计算T1和T2指尖三维空间位置坐标的欧氏距离d。随后分别计算出T3和T4之间的夹角α34以及T4和T5之间的夹角α45。用分别表示两根相邻手指的指向,那么两指间的夹角α可以通过公式(1)计算得出。相应的手指与手掌的垂直向量夹角β也可通过式(1)求得。
图1 手掌心朝向示意图
图2 手指朝向示意图
图3 Leap Motion空间三维坐标系
由于Leap Motion的高精度(0.01mm),经过试验调整,在本文中设置的欧氏距离阈值d=0.3,α'=15°,β'= 60°。
图4 三维手势Okay手指指向与手掌心垂直向量示意图
在本系统中,定义的三维手势主要包括为单手静态三维手势和双手静态三维手势。通过本文方法,可以有效识别不同姿态的三维手势,因此可以建立一个基于单手和双手静态三维手势库。结合传统的简单的静态手语,我们的三维手势库中的手势包含的单手静态三维手势如图6所示:数字0-9,通用手语,如OK(食指尖与拇指尖相触,其他手指竖起),棒(竖大拇指),差(握拳状后大拇指朝下竖起),我爱你(竖起大拇指、食指和小指)等。
对于双手静态三维手势,分为两类:一类可以是简单的单手静态三维手势的组合,即一只手可以表达14中不同姿态,双手组合起来的三维手势就可以多达196种(14×14);另一类就是简单的、尽可能少遮挡或无遮挡的三维手势,如图5所示。
图5 单手静态三维手势
图6 双手静态三维手势
通过不同单手静态三维手势的组合以及双手静态三维手势,本文所能建立的三维手势库可以包含200多种不同的三维手势。
借力于三维体感技术和新型体感设备的快速发展和普及,本文提出了一种非接触式的、基于视觉感知的三维手势识别方法,并使用双手的不同手势组合建立了一个简单三维手势库,可以应用于手语识别等领域。鉴于Leap Motion设备识别范围有限,不能精确识别人上肢动作,并且手语手势的遮挡和细节微小差别,都是目前的难点问题,希望在未来的新一代设备上加以解决。
参考文献:
[1]Shi Zhuo,Li Ying-hui,Yu Ke,ChengYuan-quan,Zhou Chang-shao.Research of Hand Gesture using Kinect based on Finger Recognition[J].Computer Modelling and New Technologies,2014,VOL.18,P158-162
[2]范保玲.基于Hough变换和神经网络的中国静态手语识别[D].西安建筑科技大学,2008
[3]郭彩龙.中国近代手语识别的研究[D].西安建筑科技大学,2009
[4]翁汉良,战荫伟.基于视觉的多特征手势识别[J].计算机工程与科学.2012(2)
[5]庞启超.面向人机交互的三维手势数据处理技术研究[D].华南理工大学,2015
[6]胡弘,晁建刚,杨进,赵再骞,林万洪.Leap Motion关键点模型手姿态估计方法[J].计算机辅助图形设计与图形学学报,20015(1):1211-1216
3D Gesture Recognition Based on Leap Motion
SHI Zhuo,LI Ying-hui,AN Ya-lei
(Guilin University of Electronic Technology,Guilin 541004)
Abstract:
Studies 3D gesture recognition with Leap Motion,and establishes a static 3D gesture library in single hand and two hands.By reading the document of palm and finger in Leap Motion API,looks for the feature of certain 3D gesture and presents a novel method of 3D gesture recognition.With the establishing of 3D gesture library,the more research on 3D gesture recognition or the large-scale gesture library will be in progress.
Keywords:
研究基于体感设备Leap Motion的三维手势识别方法,并建立单手和双手静态三维手势库。通过研究Leap Motion API中关于手掌和手指的数据结构描述,寻找特定三维手势特征,进而提出一种三维手势识别方法。结合静态手势的特征,建立一组关于单手静态和双手静态的三维手势库。对今后基于体感设备的三维手势识别和建立大型的三维手势库等一系列研究有一定的参考价值。
人机交互;三维手势;手势识别
基金项目:
广西可信软件重点实验室开发课题(No.KX201304)、广西信息科学实验中心开放课题(No.YB1506)
文章编号:1007-1423(2016)14-0074-04
DOI:10.3969/j.issn.1007-1423.2016.14.016
作者简介:
史卓(1978-),男,江苏常州人,副教授,研究方向为图形图像处理、数字媒体、移动软件开发技术
李映辉(1988~),男,湖北黄冈人,在读硕士研究生,研究方向为计算机图形学
收稿日期:2016-03-15修稿日期:2016-04-30
Human-Computer Interaction;3D Hand Gesture;Gesture Recognition