基于Leap Motion指尖位置的手势提取和识别技术研究

Xsens动作捕捉 2023-05-09 3750

周开店,谢钧,罗健欣

(解放军理工大学 指挥信息系统学院,江苏 南京 210007)

:Leap Motion是最近推出的一款比较新颖的手部信息采集设备,它能够高精度、高帧率地跟踪捕获手部信息,基于此特性,本文阐述了一种基于指尖位置和方向信息进行手势提取和识别的研究方案。采用Leap Motion传感器进行手势的三维空间坐标信息采集,从中提取指尖坐标及方向向量信息,建立手势识别模型,构建手势特征数据。对特征数据进行归一化处理后输入到支持向量机进行训练,实现对特定手势的识别。实验结果表明,提出的手势识别方案平均识别精度达到97.33%,具有较高的准确性和鲁棒性。

:手势识别;Leap Motion;指尖位置;方向信息;支持向量

:TP391.4文献标识码:ADOI:
10.19358/j.issn.1674-7720.2017.02.016

引用格式:周开店,谢钧,罗健欣.基于Leap Motion指尖位置的手势提取和识别技术研究[J].微型机与应用,2017,36(2):48-51.

0引言

近年来,手势识别在众多领域(如:人机交互、机器人应用、电脑游戏、手语翻译等方面)的广泛应用得到了更多人的关注。当前可用于手势识别的相对低成本的深度相机有:TOF相机和微软公司推出的Kinect设备,通过不同的方法获取手部的深度信息以提高手势识别的准确性。这些方法提供的手势识别方案均是从深度信息提取的特征值,通用摄像头采集人手图像虽然能够获得稳定的图像序列乃至深度信息,但提取出的人手信息必须经过复杂的图像处理与识别过程,难以保证快速、准确地估计人手姿态,同时它们无法实现近距离的高精度手势识别[1]。Leap Motion传感器的推出给手势识别领域带来了一种全新的方式,不同于Kinect对视野范围内追踪到物体的整体框架描述,Leap Motion的目标是只针对手部信息的追踪描述,通过对手部信息包括指尖、关节点、方向向量、法向量等的精细化描述,利用这些信息实现对手势的特征提取和准确识别[2]。因此,本文提出了一种基于指尖位置和方向信息的手势提取和识别方案。

1Leap Motion结构分析

Leap Motion是基于计算机视觉技术的三维数据追踪传感器设备[3]。Leap Motion的追踪目标是针对手部信息的描述,能够直接计算出指尖、关节点等的位置和手掌的方向向量及法向量信息。同时,由于Leap Motion内部封装了完善的识别过程和方法,Leap Motion不需要开发者使用计算机视觉算法去识别提取手部相关点的数据。相对于Kinect等深度相机,Leap Motion可以以0.01 mm的精度追踪手部数据,也就是说它可以高精度地追踪到手部的微小运动。它的硬件结构主要由两个高帧率摄像头、LED灯、红外滤光器以及一片USB3.0芯片组成,如图1所示。

基于Leap Motion指尖位置的手势提取和识别技术研究  第1张

两个高帧率高清摄像头可以模拟双目视觉实现立体拍摄手势图像,捕捉传感器上方25 mm~600 mm之间呈倒立金字塔范围内的信息,然后通过三角测量对空间手部位置信息进行三维坐标定位,另外Leap Motion利用滤光器将自然光线过滤成红外光线,在设备上方形成一个虚拟的平面光线网,当目标对象移动时,就会引起红外线反射而返回目标对象所在的位置和移动方向。同时可以以高达100 f/s的速度记录追踪的手部运动数据,每一帧包含了每只手的关键部位的位置信息、掌心移动速度、手掌法向量、手指朝向等信息。最终Leap Motion会通过USB接口将捕捉到的静态手势位置、向量信息和动态手势移动信息传送到计算机进行后续加工处理及手势提取和识别。

2手势特征分析和模型构建

与Kinect等类似的设备相比Leap Motion不提供追踪到的完整深度图[4],只返回手部相关点的三维坐标位置信息、方向信息和部分手姿态特征,例如Circle、Swipe、Screen Tap、Key Tap等姿态信息。仅利用这些原始数据还不能够满足对手势识别的需要,因此需要根据Leap Motion追踪手部信息的特性,进行构建手势的提取和识别模型。文中构建了用于手势提取和识别的模型,如图2所示。

基于Leap Motion指尖位置的手势提取和识别技术研究  第2张

(1)手掌中心位置C:描述了三维空间中手掌区域的粗略中心位置。

(2)手掌的方向:基于两个单位向量,n是垂直于手掌平面指向手掌内侧的法向量,h是手掌中心位置C指向手指方向的方向向量,但是这些追踪计算得到的数据也不是非常精确,取决于手指F1、F2、F3、F4、F5的分布。

(3)指尖的位置Fi,i=1,…,5,描述了三维空间中探测到的指尖位置。

需要注意的是,尽管Leap Motion能够以很高的精度追踪可视区域内的手部三维空间位置,但是它并不确定能够追踪到全部的手指,这是由于做出手势动作的时候会存在手指间的互相遮挡和干扰。针对这个问题,Leap Motion会根据内部构建的手模型预估计干扰部分关键点的粗略位置,从而可以得到完整的手部关键点信息,用于后面的特征值提取计算。

对于除了角度外的所有特征值需进行归一化处理,方法是通过除以手掌中心C和中指指尖之间的距离S=Fmiddle-C,以增强针对不同使用者的手掌大小的识别过程鲁棒性[5]。比例因子S可以在用户使用前通过计算得出。

为了实现手势识别,根据上述手势追踪模型定义了如下的手部数据特征计算公式:

式中Di表示指尖位置Fi到手掌心位置坐标C的欧式距离,在这里需要将两点间的三维距离除以比例因子S做归一化处理。

Ai=∠(Fpi-C,h),i=1,…,5(2)

式中Ai表示的是三维坐标点Fpi与手掌中心位置C的连线与手掌方向向量h之间的角度,Fpi表示指尖Fi在垂直于手掌法向量n的平面上的投影的位置。

式中Ei表示指尖位置到手掌平面的垂直距离,Fi表示指尖在三维局部坐标系中的位置,Fpi表示指尖Fi在垂直于手掌法向量n的平面上的投影的位置,这里同样需要除以比例因子S对提取特征值Ei进行归一化处理。

本文选择如图3所示G1、G2、G3、G4、G5、G6六组手势进行分析,提取相应手势的相关点的三维坐标信息和方向信息。

基于Leap Motion指尖位置的手势提取和识别技术研究  第3张

关于特征提取方法,在前文中给出了相应的特征值D、A、E,包含从Leap Motion提取到的每一个样本手势数据,对于每一组手势将提取它的特征向量集V=(D, A, E)。

为了进一步进行手势识别,需要将D、A、E三个特征向量根据对应的手势库分为G类,分类算法采用支持向量机[6]。因此G个类别的样本就需要设计G(G-1)/2个SVM分类器。当对一个未知样本进行分类时,最后得到最多的类别即为该未知样本的类别。

3特征训练

实验的特征训练和识别采用支持向量机(SVM)方案。SVM作为一种二分类模型[7],其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。支持向量机在解决小样本、非线性及高维模式识别中有许多特有的优势。对于手势的分类,需要将提取到的手势特征向量V看作N维空间中的一个点,手势特征进行分类时可以看作寻找该空间中的最优分类平面,最终将不同的手势特征点V进行分割处理,就得到了最终的手势分类效果。对于简单的线性问题,能够直接在该空间中截取相应的分割平面,然而在解决问题时遇到更多的是非线性问题,文中的手势特征分类就属于非线性问题,因此需要通过非线性变换将其转化为高维空间中的线性问题进行处理。

对于标准的支持向量机[8]优化问题可以归结为一个二次规划问题:

将非线性问题转换为高维空间中的线性问题是通过内积式中K(x,xi)核函数进行的,选择不同的内积核函数对应着不同的 SVM算法,因此在使用时需要进行核函数及相应参数的选择。其核函数K(x,xi)的选择对SVM的实现和分类结果起到重要作用。

核函数的选择包括两部分工作:一是核函数类型的选择,二是确定核函数类型后相关参数的选择。因此选择恰当的核函数对本文实验中的手势识别精确度有着重要的影响。下面给出SVM的三种常用核函数。

(1)多项式核函数:

K(x,xi)=(γxTxi+r)d(6)

(2)径向基(RBF)核函数:

K(x,xi)=exp(-γx-xi2)(7)

(3)Sigmoid核函数:

K(x,xi)=tanh(γxTxi+r)(8)

在实验中将分别采取上述不同的核函数进行手势识别分类,通过对比选取最佳核函数。在列出的三个核函数中,多项式核函数中的参数d用来设置多项式核函数的最高次项次数,在实验中采用经验值3,参数r和Sigmoid核的参数r同样采用默认经验值0。

对结果起决定性作用的参数是γ以及惩罚因子C,惩罚因子C是对空间点中离群点的重视程度体现,C值越大则表明对其越重视。

对于上述的参数C、γ选择拟采用K折交叉验证和参数寻优遍历进行对比并选定。K折交叉验证是将总样本划分为K个子集,每次将一个子集作为测试集,剩余K1个子集作为训练集进行训练,通过K次的测试,将其平均识别率作为结果。最佳参数为参数寻优后得到最高识别率的参数。得到最佳参数后对三种核函数进行对比实验就可以选择出合适的核函数。

具体方法为通过Leap Motion分别采集50组单个手势,共300组数据,将其分别进行三种核函数的5折交叉验证和网格参数寻优方法以获取最佳参数,获得最佳参数后再次采集120组手势数据,每个手势20组,作为新测试数据验证其识别准确率。不同核函数的网格参数寻优与交叉验证所得参数 C、γ的关系如图4、5、6所示。

基于Leap Motion指尖位置的手势提取和识别技术研究  第4张基于Leap Motion指尖位置的手势提取和识别技术研究  第5张

表1中给出了三种核函数通过交叉验证和参数寻优后得到最佳参数后,进行新测试数据验证识别准确率的结果对比。

通过对训练数据的交叉验证结果和测试数据的识别分类结果准确率的综合分析,选用RBF Kernel可以得到较高的识别准确率,同时从图4可以看出RBF核函数有着较好的稳定性,参数较少且易于运算,应用相较广泛。根据120组测试数据的准确率基于网格参数寻优遍历和5折交叉验证方法得到最佳参数:gamma为0.5,惩罚因子C为32,将此作为模型的最佳参数进行后续的结果验证实验。

4结果验证

前文的特征提取和特征训练两部分构建了基本的手势识别模型,下面将通过实验对模型进行验证。通过Leap Motion传感器针对每个手势采集50组数据,共300组测试数据。通过构建的模型提取其特征向量并将其输入SVM进行手势分类识别,实验结果如表2所示。

基于Leap Motion指尖位置的手势提取和识别技术研究  第6张

通过对表2中的结果分析,对于输入的300组手势数据,构建的识别模型可以正确识别293组,识别准确率为97.33%,具有较高的识别率。另外可以看出手势G2、G3、G4出现了识别差错,这是由于实验中做出的手势G2、G3、G4动作相近,在Leap Motion追踪手势时不可避免地出现手指的瞬时重叠导致信息错位和误差,从而相互之间会容易产生误识别现象。

5结论

文中构建了一种采用Leap Motion传感器并基于指尖位置和方向信息的手势提取和识别模型,模型计算量少,效率和精度高,仅需要获取手部的指尖位置信息和方向信息,即可高效、高精度地识别用户手势。实验结果表明,该方案可以以较高的平均识别率完成特定的手势识别,但是会存在相近手势的手指瞬时重叠引起的误差导致降低手势识别率现象。

下一步的工作将针对多指瞬时重叠现象导致的误差情况,研究结合Kinect和Leap Motion的多传感器手势追踪解决方案。Kinect传感器能够远距离地捕获基于深度图的手部完整信息[9],而Leap Motion传感器可以高精度地实现近距离的局部手部信息描述,因此期望提出这种多设备结合方案,可以获取更好的手势识别效果。

参考文献

[1] Li Yi. Hand gesture recognition using Kinect[C]. Proceedings of 2012 IEEE 3rd International Conference on Software Engineering and Service Science, 2012: 196-199.

[2] WEICHERT F, BACHMANN D, RUADK B, et al. Analysis of accuracy and robustness of the leap motion controller[J]. Sensors, 2013, 13(5): 6380-6393.

[3] 徐崇斌, 周明全, 沈俊辰,等. 一种基于Leap Motion的直观体交互技术[J]. 电子与信息学报, 2015, 37(2): 353-359.

[4] 吴彩芳,谢钧,周开店. 基于手势识别的人机交互技术研究[J]. 计算机时代, 2016(2):29-32.

[5] 潘佳佳, 徐昆. 基于Leap Motion的三维自由手势操作[J]. 中国科技论文, 2015, 10(2): 207-212.

[6] 张学工. 关于统计学习理论与支持向量机[J]. 自动化学报,2000, 26(1): 3242.

[7] Wang Jianzhi,Lin Zhiren. LIBSVM: a library for support vector machines[J]. ACM Transactions on Intelligent Systems and Technology, 2011, 2(3): 1-27.

[8] 阎威武,邵惠鹤. 支持向量机和最小二乘支持向量机的比较及应用研究[J]. 控制与决策, 2003, 18(3):356-360.

[9] WACHS J P, KOLSCH M, STERN H, et al. Visionbased handgesture applications[J]. Communication of the ACM, 2011, 54(2):60-71.

The End