转自:http://www.cnblogs.com/emouse/archive/2013/02/28/2936689.html

先来看两段简介视频:

看了介绍视频后,对如此次超高精度的手势追踪非常好奇,下面为整理的一些相关资料。


以下为来自Engadget的新闻介绍:

自微软推出 Kinect 以来就掀起了一股手势控制的旋风,同样作为科技巨头的三星苹果自然也不甘落于人后,纷纷拿出了自己的产品或专利。而最近一家名为 Leap Motion 的公司横空出世,推出了一款名为 Leap 的新产品,据称它比现有技术精准 200 倍,能为手势控制技术带来巨大的发展(看来不是只有大公司才能有大作为哦)。


这款设备只有一包口香糖大小,在通过
USB 连接电脑后,它会创造出一个 4 立方英尺的工作空间。在这个空间里你 10 个手指的动作都会被即时追踪,误差在 1 / 100
毫米以内。这样的精准程度就能保证用户顺利完成像 pinch-to-zoom 或控制 3D 渲染物体等操作。关于这项技术所采用的原理 Leap
Motion
并没有透露(不意外),不过他们表示任何有运算能力的设备,大到冰箱小到电话,都可以加入他们的软件。用户也可以根据自己的需要来设定手势及灵敏度,而且通过连接几台
Leap 设备还能造出一个更大的工作区域。另外,Leap Motion 也为开发者们准备了 SDK,希望他们能开发出 Leap
适用的应用,同时建立起一个应用搜索平台以便用户查找。这样的话未来的 Leap
就会有更多的可能性,无论是简单的电脑控制,还是游戏、设计等复杂一些的操作。而最令人兴奋的一点是部份用户现在就可以开始预购,售价仅有 69.99
美元(约合人民币 440 元),到冬季时将会向所有消费者发售。


摘自知乎的来自于 @大华电子 的原理分析:

从API的角度大概说一下。Leap Motion传感器的结构:大体上,Leap传感器根据内置的两个摄像头从不同角度捕捉的画面,重建出手掌在真实世界三维空间的运动信息。

检测的范围大体在传感器上方25毫米到600毫米之间,检测的空间大体是一个倒四棱锥体。首先,Leap
Motion传感器会建立一个直角座标系,座标的原点是传感器的中心,座标的X轴平行于传感器,指向屏幕右方。Y轴指向上方。Z轴指向背离屏幕的方向。单位为真实世界的毫米。如图:在使用过程中,
Leap Motion传感器会定期的发送关于手的运动信息,每份这样的信息称为「帧」( frame )。每一个这样的帧包含检测到的:

  1. 所有手掌的列表及信息;
  2. 所有手指的列表及信息;
  3. 手持工具(细的、笔直的、比手指长的东西,例如一枝笔)的列表及信息;
  4. 所有可指向对象(Pointable Object),即所有手指和工具的列表及信息;

Leap传感器会给所有这些分配一个唯一标识(ID),在手掌、手指、工具保持在视野范围内时,是不会改变的。根据这些ID,可以通过Frame::hand(
) , Frame::finger(
)等函数来查询每个运动对象的信息。Leap可以根据每帧和前帧检测到的数据,生成运动信息。例如,若检测到两只手,并且两只手都超一个方向移动,就认为是平移;若是像握着球一样转动,则记为旋转。若两只手靠近或分开,则记为缩放。所生成的数据包含:

  1. 旋转的轴向向量;
  2. 旋转的角度(顺时针为正);
  3. 描述旋转的矩阵;
  4. 缩放因子;
  5. 平移向量;

对于每只手,可以检测到如下信息:

  1. 手掌中心的位置(三维向量,相对于传感器座标原点,毫米为单位);
  2. 手掌移动的速度(毫米每秒);
  3. 手掌的法向量(垂直于手掌平面,从手心指向外);
  4. 手掌朝向的方向;
  5. 根据手掌弯曲的弧度确定的虚拟球体的中心;
  6. 根据手掌弯曲的弧度确定的虚拟球体的半径;

其中,手掌的法向量和方向如下图所示:「手掌球」的圆心和半径:对于每个手掌,亦可检测出平移、旋转(如转动手腕带动手掌转动)、缩放(如手指分开、聚合)的信息。检测的数据如全局变换一样,包括:

  1. 旋转的轴向向量;
  2. 旋转的角度(顺时针为正);
  3. 描述旋转的矩阵;
  4. 缩放因子;
  5. 平移向量;

Leap除了可以检测手指外,也可以检测手持的工具。像上文所说的,就是细的、笔直的、比手指长的物件:对于手指和工具,会统一地称为可指向对象(Pointable Object,抱歉不太会翻译),每个Pointable Object包含了这些信息:

  1. 长度;
  2. 宽度;
  3. 方向;
  4. 指尖位置;
  5. 指尖速度;

方向和指尖位置如下图:根据全局的信息、运动变换,手掌、手指和工具的信息和变换,开发者就可以靠这些来制作游戏、程序了。大概就是这样了~ 参考:Leap Motion的开发者文档  Leap Motion | Developers

最后的好消息就是,这货3月份在国内就可以出货了,淘宝上已经有多家可以预定了,国内价格应该在600元左右,用来做二次开发还是非常不错的,比Kinect便宜的价格,小巧的造型,超高的精确度,还是非常值得尝试的。

★emouse 思·睿博客文章★
原创文章转载请注明:http://emouse.cnblogs.com

Leap Motion颠覆操控体验的超精致手势追踪技术【转】的更多相关文章

  1. 十大最佳Leap Motion体感控制器应用

    十大最佳Leap Motion体感控制器应用   Leap Motion Controller也许还没有准备好大规模的发售,但是毫无疑问,这款小巧的动作捕捉器是我们见过的最酷的设备之一.这款设备的硬件 ...

  2. Unity3D中使用Leap Motion进行手势控制

    Leap Motion作为一款手势识别设备,相比于Kniect,长处在于准确度. 在我的毕业设计<场景漫游器>的开发中.Leap Motion的手势控制作为重要的一个环节.以此,谈谈开发中 ...

  3. Leap Motion 上手体验

    很早之前就关注了Leap Motion这个颠覆性的体感操作设备,如今7月22日上市至今已经一个月左右,淘宝的价格也已经降到650元,虽说相对国外还是偏贵,但是已经忍不住尝尝鲜了. Leap Motio ...

  4. Leap Motion发布新平台,直击下一代移动端VR/AR手部追踪

    2013年,动作捕捉技术公司Leap Motion发布了面向PC的体感控制器,不过销量并不乐观.随着2014年虚拟现实技术的再一次兴起,它发布一款用于Oculus Rift的附加设备,从而正式登上VR ...

  5. leap motion

    体感控制器: 识别:手,手指和工具,获取位置,手势,动作 范围:倒金字塔,塔尖在设备中心,2.5cm~0.6米 坐标系统:采用右手笛卡尔积坐标系,返回的数值:毫米 摆放:绿灯朝向自己,z轴距离屏幕越来 ...

  6. Leap Motion 开发笔记

    Leap Motion 体系架构 Leap Motion支持所有主流操作系统,leap motion在Windows系统下是作为一个服务运行的,在Mac和Linux是后台守护进程.软件通过USB线连接 ...

  7. 基于unity3d和leap motion的拼图游戏

    近期用unity3d引擎做了一个拼图游戏,会分几次写完,以此作为总结. 本文基本查找了网上能查到的全部资料作为參考.也算是大家节省了时间. 眼下仅仅完毕了拼图部分,leap motion手势控制部分会 ...

  8. Qt 加载Leap motion 手势识别软件 二次开发 hello world

    研发需要对收拾是被进行精确定位,实现收拾的识别,和在虚拟现实中精确的显示手势在实际世界中的位置. 开始使用的Qt mingw的版本开发,总是函数没有定义,最后发现是leap sdk中需要代育vs的库文 ...

  9. HTC Vive 与Leap Motion 出现位置错误的问题

    Leap Motion已经支持VR, 但是官方没有支持HTC Vive的例子. 按照官方的文档, 其实是有问题的: https://developer.leapmotion.com/documenta ...

随机推荐

  1. Oozie 安装及 examples app 的使用

    参考文档 一.Building OOzie 特别注意的是修改Pom.xml文件中的版本与本机中安装的版本相同 二. install Oozie 1.为 hadoop 添加 Oozie 的代理用户,添加 ...

  2. C# Dictionary的遍历理解

    C# Dictionary容器类的理解 本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/det ...

  3. Kafka安装和常用操作命令

    Kafka安装: 下载kafka_2.10-0.8.2.1 1.关闭防火墙 2.修改配置文件  server.properties broker.id=1log.dirs= /usr/kafka_2. ...

  4. Tensorflor实现文本分类

    Tensorflor实现文本分类 下面我们使用CNN做文本分类 cnn实现文本分类的原理 下图展示了如何使用cnn进行句子分类.输入是一个句子,为了使其可以进行卷积,首先需要将其转化为向量表示,通常使 ...

  5. 什么时候会报unrecognized selector的异常?

    当调用该对象上某个方法,而该对象上没有实现这个方法的时候, 可以通过“消息转发”进行解决,如果还是不行就会报unrecognized selector异常 objc是动态语言,每个方法在运行时会被动态 ...

  6. 《Cracking the Coding Interview》——第18章:难题——题目11

    2014-04-29 04:30 题目:给定一个由‘0’或者‘1’构成的二维数组,找出一个四条边全部由‘1’构成的正方形(矩形中间可以有‘0’),使得矩形面积最大. 解法:用动态规划思想,记录二维数组 ...

  7. USACO Section1.2 Name That Number 解题报告

    namenum解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...

  8. 1064 Complete Binary Search Tree (30 分)(二叉查找树)

    中序遍历建树 #include<bits/stdc++.h> using namespace std; ; int s[N]; int n; int tree[N]; int cnt; v ...

  9. sklearn中predict()与predict_proba()用法区别

    predict是训练后返回预测结果,是标签值. predict_proba返回的是一个 n 行 k 列的数组, 第 i 行 第 j 列上的数值是模型预测 第 i 个预测样本为某个标签的概率,并且每一行 ...

  10. 简述Shiro验证过程

    如果让我们自己实现用户登录验证我们都需要哪些步骤? 很简单,根据用户提供的账号从数据库中查询该账户的密码以及一些其他信息,然后拿这个密码与用户输入的密码相比较,因为保存在数据库中的密码一般是经过加密的 ...