[Tango] Basic Knowledge
Project Tango类设备能够给开发者在哪些领域带来机会。
- 室内导航*:室内GPS信号的缺失,使得Project Tango设备会成为室内导航重要应用场景之一。有了它,你就不会在不熟悉的室内商场、机场迷路。三维场景的室内导航,为盲人提供了更大的便利。【 路径规划算法浅谈】
- 游戏:虚拟现实游戏和新型交互游戏前景可期。有人指出,Project Tango设备与美国宇航局勇气号探测器并无太大区别。此类设备可以通过扫描现实世界,让信息与虚拟世界相融合,这也使得我们能够随时随地玩虚拟现实或现实增强游戏。若结合头盔或Goolge Glass,更能增强游戏的沉浸感,从而获得置身于真实世界的感觉。上文也提到,已经有厂商为此类设备开发专用引擎。另外Project Tango类设备从某种意义来说还可以是另外一种Kinect,这也使得我们还能在移动设备上使用手势玩游戏。
- 图形处理:由于绝大部多数的照片和视频是二维的,因此,抛除专业软件不谈,大多普通用户接触到的各种图片处理软件,基本是在二维角度进行修改。而当能够处理纵横信息的设备出现后,3D图形处理需求随之出现,能够修改纵横信息,让背景或角度处理的更加自然、真实的新的图片处理软件机会从而诞生。
- 3D扫描软件和3D打印机流行:3D家庭打印机已经面世多年,价格也不算昂贵,但为什么没能流行?原因主要还是3D扫描打印存在局限性,大多数人打印物品只能用现有的打印模板或通过专业绘图软件。但Project Tango类设备的出现,极可能为3D打印带来了完美输入端,遇到喜欢的事物,只要扫描下即可。
- 商品购物软件:正如上文所说,该设备提供了空间扫描能力,因此你在买家具前,只要对着想摆放的房间拍一下,就能在看家具时知道是否合适。这一功能甚至可以帮助用户网上买合身的衣服,只要扫描出自己身体的信息,就能知道衣服是否合适。
- Project Tano类设备还能让信息呈现更加自然:如果说互联网的出现,让我们能够近距离看这个世界,那么Project Tano类设备则让我们能更加真实地看这个世界。一旦此类产品成为消费级设备,富含各种物体的“纵横”信息,在保证准确率的前提下,也必能让信息的呈现更加自然、真实。
Google Project Tango 发展: link
Project Tango --> ATAP (All Things Are Possible,ATAP是Google收购Motorola(后来又卖给了联想)后保留的一个重要部门),更要说起Johnny Lee。
- 07年12月John神在YouTube上传了一系列视频,记录了用Wii遥控手柄追踪人的手指,通过改装后的Wii遥控手柄和投影仪制造出多点触摸电子白板,还有用Wii遥控手柄追踪人的头部位置,与此同时,游戏画面也为了适应观众的视角而发生改变。从这几个实验中,我们可以看到当下Leap Motion、Oculus Rift等下一代人机交互方式的影子。
- 之后他加入了微软的Project Natal (该项目的成果是风靡全球的Kinect),
- 后来跳槽到Google X,
- 再之后加入Motorola ATAP(All Things Are Possible),最终带领团队在2014年6月5日启动Project Tango。
三块技术:
- 运动追踪(Motion Tracking),
- 深度感知(Depth Perception)
- 区域学习(Area Learning)。
我们可以通过John神的职业道路,由简入繁来看看Project Tango里面的黑科技是如何一步一步实现的。
运动追踪
单目视觉技术的升级版Feature Tracking (Google称为特征捕捉)。特征捕捉如何理解呢? 再回到John神的例子里,我们不再固定接收器的位置了,反而是拿着接收器(这里我们不再叫它接收器了,叫采集设备或相机)移动;而对面只有两个光点的发射器也变成一个一个的光点贴在John神家里屋子的各个角落。
当我们移动相机时不断地一帧一帧进行拍摄,因为拍摄到的光点的相对位置在不断变化(这里“变化”是指拍摄到的两帧之间同一个光点的相对位置变化),通过计算我们可以得到相机的移动距离。简单来说Tango设备在不断循环的一个过程就是:拍摄——识别特征点(个人估计是SIFT点)——匹配特征点——筛去错误匹配——坐标换算。当然Project Tango的运动追踪不仅如此,他还能通过一个内置的6轴惯性传感器(加速度计和陀螺仪)来捕捉相机的加速度和运动方向。
当融合了以上两类传感器的数据之后Project Tango就“完美”(其实还有瑕疵)实现了三维运动追踪。
区域学习
为什么说还有瑕疵的?因为运动追踪只是单纯得到了相机移动的轨迹,然而对于相机所处的场景是零认知。所以一旦设备被关掉,它之前的运动轨迹就会被“忘掉”。最大的问题还是运动追踪中所累积的误差,或者叫漂移,在长距离使用后真实位置会和运算位置有很大差异。
为解决这个问题,John神团队为Tango设备设定了一种学习模式。这应该是他在Google X里面无人驾驶汽车研究成果的冰山一角。这种学习模式理解起来就简单很多了,为了让Tango设备具有一定记忆,而不再像一个被蒙着眼睛的人一样需要靠数自己走了多少步来计算距离,Project Tango可以让用户预先录入某个场景(这里要特别提醒的是,录入的数据不光包括了运动追踪里面所识别的特征点,还包含了场景本身),当用户重回这个场景的时候Tango设备会自动用录入的数据来纠正运动追踪的数据,这个纠正的过程中录入场景里的那些特征点会被当作观测点,一旦发现与当下特征点匹配的观测点,系统便会修正当下的追踪数据。这就是Project Tango的第二大技术核心——区域学习。
深度感知
如果说把深度感知作为Project Tango的第三大技术核心,我觉得有点虚,毕竟Google也是采用的第三方的深度传感器。不过对此Google并没有掖着藏着,而是很大方的表明Tango设备可以选择任意一种现今流行的深度感知技术。而对这项技术的顺利应用多半也要归功于John神在Project Natal的经历了。Kinect一代的推出震动了业界,震动了学术界,同时也把结构光(Structured Light)的概念推广了出去。那么他到底是怎么实现深度检测的呢?检测到的“深度”又是什么概念呢?
结构光顾名思义是有特殊结构(模式)的光,比如离散光斑,条纹光,编码结构光,等等。他们被投射到待检测物体或平面上,看上去就好像标尺一样。根据用处不同,投影出来的结构光也可以分为不可见的红外光斑,黑白条纹可见光,单束线性激光,等等。比如Kinect投射出来的就是红外光斑,设想你玩游戏的时候要是一片黑白条纹光打到你身上,这画面感岂不是很怪。
< Kinect 一代的离散光斑 >
发明者以色列PrimeSense公司的专利图了,他们非常聪明地在红外发射器前面加了一个特殊设计的diffuser(光柵、扩散片)可以使红外光线能从不同角度射出。另一个摄像头再去拍摄这些光斑然后进行计算从而得出每一个光斑所在的深度。每种结构光的扫描精度,所对应的算法,以及应用场景都有所不同。例如用于电子产业元器件锡膏检查(SPI/ AOI)一般就是可见的条纹光。
另外几种结构光就不多做介绍了,总之只需要知道他们对深度感知的精准度会远远高于Kinect这种离散光斑类型的结构光(可以达到微米级),并且算法也有很大出入。
< Kinect 二代的TOF >
TOF(Time of Flight飞翔的时间?)一个激光发射器,一个接收器,一个运算光程的芯片组成。通过计算不同的光程来获取深度信息,它也是一种深度传感器。
深度传感器输出“点云” ---- < “点云”的实时拼接 >
一个技术难点,因为Tango设备是在一边移动一边采集的,如何把上一帧采集的“点云”信息和当下帧采集的“点云”进行匹配,并且显示在同一世界坐标中就是难点所在。
Project Tango巧妙的结合运动追踪的轨迹数据达到了对“点云”的实时拼接。要知道“点云”的数量一般在几百或者上千。算法已经不易,运算量更是大的离谱,而Project Tango还把它做进了移动设备里。
Tango设备就是一种SLAM设备,并且Google把它实现在了移动设备端。John神和他的团队靠的不是魔法,而是对于光学传感器和惯性传感器与计算机视觉技术的巧妙结合:
- 利用光学传感器来校正惯性传感器的误差累计或者说“漂移”问题,
- 利用惯性传感器的小尺寸,低成本,以及实时信息输出来降低光学传感器的运算量,
- 再配合上成熟的深度感应器(其实也是光学感应器的一类)从而实现了这个人们眼中的黑科技。
补充:DayDream VR平台 和 Android N
。。。
[Tango] Basic Knowledge的更多相关文章
- NLP related basic knowledge with deep learning methods
NLP related basic knowledge with deep learning methods 2017-06-22 First things first >>> ...
- Python基础知识(Basic knowledge)
Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...
- [SLAM] 01 "Simultaneous Localization and Mapping" basic knowledge
发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发信站: 水木社区 (Thu Jun 16 19:18:24 2016), 站内 ...
- 计算机基础知识 一 Basic knowledge of computers One
计算机硬件由CPU(Central Processing Unit).存储器.输入设备.输出设备组成. CPU通常由控制单元(控制器)和算数逻辑单元(运算器)组成. 运算器:负责进行算数运算和逻辑运算 ...
- Android Studio accelerator key(shortcut)& Basic knowledge
shift + F6 重构(选文件,ok->下面的控制台,do refactor option + return 快速修复 Activity@Extra() Intent: @FragmentA ...
- NoSql basic knowledge
The big picture to keep in mind first is: There are lots of articles and resources out there: http:/ ...
- Basic knowledge of javaScript (keep for myself)
1. 函数表达式 JavaScript 函数可以通过一个表达式定义.eg. var x = function (a, b) {return a * b}; so: var x = function ( ...
- Basic knowledge of html (keep for myself)
1. 通常标签 <strong> 替换加粗标签 <b> 来使用, <em> 替换 <i>标签使用. 2. 在 <head>元素中你可以插入脚 ...
- Review: Basic Knowledge about JavaScript 1
JavaScript shanzm
随机推荐
- Spring基于注解及SpringMVC
1.使用注解 (1)组件扫描 指定一个包路径,Spring会自动扫描该包 及其子包所有组件类,当发现组件类定义前有 特定的注解标记时,就将该组件纳入到Spring 容器.等价于原有XML配置中的< ...
- Linux Buffers和Cached的区别(转)
在linux下使用free命令查看内存使用情况,有buffers和cached两项,以下是它们的区别: buffers是为块设备设计的缓冲.比如磁盘读写,把分散的写操作集中进行,减少磁盘I/O,从而提 ...
- MAC下的命令操作
打印环境变量:echo $PATH设置环境变量:export PATH=$PATH:/usr/local/git/bin应用:在git-scm下载git2.0.1版本,图形安装后,直接在终端敲giv ...
- sublime Text Pastry使用
来源: https://github.com/duydao/Text-Pastry/wiki/Examples Using a text list Using the Clipboard Clip ...
- 【Android开发坑系列】之事件
总结一下: 1.Touch事件分发中只有两个主角:ViewGroup和View.ViewGroup包含onInterceptTouchEvent.dispatchTouchEvent.onTouchE ...
- 转:TinyXM--优秀的C++ XML解析器
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好. TinyXML是一个开源的解 ...
- IOS开发之代码之九宫格
通过UIScrollView展示图片的时候,如果直接向UIScrollView添加UIImageView,在图片数量比较少的时候是没有问题的,但是当我们添加图片数量非常多的时候,会占用大量的内存,我们 ...
- SQL 性能调优日常积累【转】
阅读目录 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效) (2)WHERE子句中的连接顺序 (3)SELECT子句中避免使用 ‘ * ‘ (4)减少访问数据库的次数 (5)在SQL*Plu ...
- 关于VS2010出现“此方法显式使用的 CAS 策略已被 .NET Framework 弃用... ...请使用 NetFx40_LegacySecurityPolicy 配置开关”解决办法
有时候VS会出现“此方法显式使用的 CAS 策略已被 .NET Framework 弃用.若要出于兼容性原因而启用 CAS 策略,请使用 NetFx40_LegacySecurityPolicy 配置 ...
- 【css3】如何自定义 placeholder 文本颜色
昨天写了一篇基于 jquery 实现 ie 浏览器兼容 placeholder 效果,具体内容点击传送门.不过还是有点小瑕疵,就是不能设置 placeholder 文本颜色.本文主要介绍利用 css ...