YiViAn 2016年5月2日)2013年,初创公司Leap发布了面向PC及苹果电脑MAC的体感控制器Leap Motion。但是当时Leap Motion的体验效果并不好,又缺乏使用场景,与二维计算机及终端有着难以调和的矛盾。

而VR的出现,仿佛为Leap Motion新开了一扇天窗,Leap Motion倡导的三维空间交互与VR可谓完美结合,因此Orion应运而生。Orion是原有的Leap Motion软件的一个升级版本,硬件不变。在VR系统中,Orion提供了一种手势的输入方式,它可以将手部的活动信息实时反馈到处理器,最后显示在VR头显中。

leapmotion接口(深度LeapMotion手势识别大揭秘)(1)

简单来说,Leap Motion是基于双目视觉的手势识别设备。那什么是基于双目视觉的手势识别呢?

基于双目视觉的手势识别

顾名思义,双目视觉就是有两个摄像头,利用双目立体视觉成像原理,通过两个摄像机来提取包括三维位置在内的信息进行手势的综合分析判断,建立的是手部的立体模型。这种方法对于用户手势的输入限制较小,可以实现更加自然的人机交互,但由于需要进行立体匹配,且由于立体模型的复杂性,需要处理大量的数据,计算相对来说较复杂。

要实现双目手势识别首先需要对双目摄像头做标定,即是计算空间中左右两台摄像机位置的几何关系。首先是对单摄像机的标定,其主要任务是计算摄像机的内部参数(包含摄像机的投影变换矩阵和透镜畸变参数)和外部参数(包含相对于某个世界坐标系的旋转矩阵和平移向量),形象点说,摄像机本身存在畸变,如果不经过标定过程,摄像机所拍摄出的影响是存在畸变的,即可能将原本的矩形显示成不规则的圆角四边形。然后是标定,即计算空两台摄像机在空间中的相对的几何位置关系(包含旋转矩阵和平移向量),通俗讲就是使得两台摄像机所成的影像显示在同一水平线上。

接下来就是具体的手势识别过程了。

leapmotion接口(深度LeapMotion手势识别大揭秘)(2)

leapmotion接口(深度LeapMotion手势识别大揭秘)(3)

本文章来自北京G-Wearables公司项目经理张莹。

leapmotion接口(深度LeapMotion手势识别大揭秘)(4)

G-Wearables公司在研发基于惯性传感器的动作捕捉系统StepVR。文中观点不代表YiViAn观点。

Leap Motion——Orion的实现原理

Orion采用的即是双目手势识别方法,其实现流程与上文所描述的双目手势识别实现流程基本一致,但是通过各种基于Orion的实验,我在这里对Orion的细节算法做一个猜想,仅供读者参考。

Orion相比于上文所述的双目手势识别基本方法不同之处在于,Orion在获取深度图像的步骤,并未对整个手型上的所有点做立体匹配,而是只选择了13个左右的特征点(图中蓝色点)做匹配,获得这13个左右特征点的信息后再利用IK算法推算出整个手部模型。

基于一些实验,我猜想Orion选择的特征点是13个左右,如下图中蓝色点:

基于这13个左右的蓝色点即可利用IK算法推算出图中红色点的数据,并最终获得整个手部模型。这里我说一下为什么猜想是匹配特征点而不是匹配所有点:

Leap Motion——Orion的优劣势

首先我们看看Orion的优势。为了能够应用在VR行业中很好的发挥效用,Orion相比于前面的产品有了很大改进:

以上是Orion目前应用于VR行业的优势,也是其可以应用于VR行业的基础。至于劣势,我根据自己实际体验的结果,给大家说几个Orion目前体验效果不够好的场景,读者也可以拿出自己的Leap Motion设备测试一下看看事实是不是如此。

leapmotion接口(深度LeapMotion手势识别大揭秘)(5)

即当我们的中指处于微张开状态下,Orion多数情况下会识别成完全张开或者完全收起,当我们慢慢的张开中指的过程中,Orion识别的手势也会有一个突变,及很容易从完全收起的状态突然变为张开状态,而失去了张开过程中的手势跟踪。

这里只是说明其中一个例子,其实还有很多其他这样的手指检测不够准确的状况。

leapmotion接口(深度LeapMotion手势识别大揭秘)(6)

上图展示的是将两个手指认成三根手指,即当使用者两个手指分开过大时,Orion很容易在两个手指中间再添加一个手指。这个问题出现的原因依我猜想可能是Orion在手势检测中对于两个手指的张开距离有一个阈值,如果大于这个阈值就认定中间还有一根手指,而之所以没检测到这根手指的指尖特征点可能是由于遮挡。

leapmotion接口(深度LeapMotion手势识别大揭秘)(7)

上图展示的是一个较复杂的手势,识别出现错误。因为Leap Motion的摄像头在使用者头顶上,以摄像头视角看中指与食指重叠,无法拍到中指指尖。因此算法判定只有一根手指张开,即出现上图所示识别状态。

leapmotion接口(深度LeapMotion手势识别大揭秘)(8)

其他的手势识别产品

目前国际上比较具有代表性的还有RealSense的手势识别,该产品应用的是深度摄像头,可以直接获取深度图像。得到深度数据后,后面的具体算法步骤就与双目识别的一样了。这种直接获取深度图像的算法,因为本身具有手部所有点的深度信息,不需要估计,因此准确度更高。国内采用深度摄像头的有我们G-Wearables团队独立研发的StepVR产品中的手势识别方法。

基于深度摄像头的手势识别方法无需购买昂贵的设备,仅需要深度摄像头、PC机即可,手势识别准确率高,并且在操作时更加自然、方便,符合以人为本和自由性的要求,是手势识别未来发展的趋势。对基于深度摄像头的手势识别感兴趣的读者可以关注我后续的文章。

YIVIAN 读者群分享VR知识和VR资料

申请入群加ovalplus进入官网或回复关键字查相应资讯

leapmotion接口(深度LeapMotion手势识别大揭秘)(9)

,