是什么技术让你的手机具有「画地图」的能力?

摘要

这要从室内定位与 SLAM 说起......

前几天,国内一家名叫进化动力的公司在网上展示了一段视频,在这段视频里,他们展示了通过单目摄像头进行三维地图的重建。

在视频中,我们能够看到佩戴者通过搭载一个鱼眼摄像头的 Oculus DK2 进行了 3D 图像的重现。其延时,和景深效果表现很流畅,没有卡顿感。由于是通过 PC 处理器,我们并不能够确定这套单目 SLAM 方案在移动端的负载需求和精度,但根据进化动力的官方人员表示它是为移动 VR 设备量身定做的产品,在对抗外界干扰和应对复杂环境上,均有一定的应对能力。

(进化动力展示视频)

进化动力团队目前一共 30 余人,大多为算法、嵌入式系统等领域的研发工程师,这一群「技术宅」主要将团队核心定位为一个提供图像处理和算法的解决方案供应商。目前已经与诸多领域的芯片商进行深度合作,已经获得由达晨创投领投,中科创达及北极光创投跟投的数千万人民币的投资。根据相关人员表示,进化动力团队展示此视频主要是为了展示其在计算机视觉领域的进展。

这套视频所展示的最核心技术点是通过计算机视觉进行同步定位与地图构建(SLAM)。但 SLAM 是什么,室内定位为什么不用其他设备进行扫描构图?这要从移动端进行空间定位开始说起。

让便携设备具有构建地图的能力

对于空间定位,我们可以通过蓝牙,路由器等建立标准点,或者通过红外线进行室内扫描来进行判定。但是一旦将室内定位与 VR 联系起来,就无法通过其它设备进行辅助了。目前我们已经能通过 Oculus 和 HTC Vive 的摄像头和「base station」做到进行小范围内的室内定位,但在移动 VR 领域里,空间定位一直是难题,目前还没有任何一个消费者级移动 VR 设备能够做到空间移动,哪怕是 Gear VR。

如果要让移动 VR 产品具有室内定位功能,我们要么需要在外部环境架设识别设备进行捕捉,要么则赋予产品本身判断环境的能力。由此,我们就衍生出了两大场景识别机制:Inside-Out 与 Outside-In。

由内至外与由外向内

顾名思义,Inside-Out 是从发射端发射场景识别信号,经过外部环境后再传送到发射端进行数据处理,也就是说设备本身即是发射端也是接收端。Inside-Out 因为涉及到复杂的计算机视觉算法和需要与强大的硬件支持限制,一直无法普及到小型设备中。

depth-perception.gif(Google 的 Project Tango 就是一款通过 Inside-Out 进行室内重建的典型案例)

Outside-In 则是在外部建立信号发射设备,信号经过外部环境之后再传输到产品自身的接收端中,从而实现位置,场景的判断。目前来说,Outside-In 的技术因为实现简单,效果好而被广泛普及。lighthouseslide1.png(时下大热的 HTC Vive 即是采用 Outside-In 原理实现)

在 Inside-Out 中有一个非常重要而领域——SLAM(Simultaneous Localization And Mapping),即同步定位与地图构建。利用计算机视觉算法和多种传感器融合实现移动机器人的定位、追踪和导航,原理上大致是计算不同时间/位置捕捉的两张图片间深度信息差异和物体形变来计算机器人移动的路线和距离。

在用途上,传统的军工、工业领域巡航导弹、采矿自动化、水下勘探应用,到近年来热门的智能机器人、自动驾驶汽车,再到正在成为大公司研究方向的 AR/VR 都会用到 SLAM 技术。maxresdefault (1).jpg

(无人驾驶汽车上进行 SLAM 后绘制的周边图像)

SLAM 分为几大类?

目前来看,基于 SLAM 的解决方案普遍分为双目、RGB-D 和 RGB 三类。

双目视觉 SLAM 方案即是使用双摄像头进行场景判定:经过对比二者摄像头所产生的差异后可以产生深度环境信息,从而构建场景。由于摄像头设定的角度和硬件本身存在的差异性,双目视觉 SLAM 构建出来的场景会有些许偏差。81242f3a66fcd18e3fd7f7d257f905c7.jpg

(双摄像头采集图像后形成的深度视差,图片来源于 itisar.com)

基于深度摄像头(RGB-D)构建 SLAM 是比较普遍的应用,其中最被人熟知的则是 Kinect Fusion 的动作捕捉方案(这套 SDK 是开源的,感兴趣的话不妨在网上搜一搜)。Kinect 通过搭载的红外线发射器和 CMOS 摄像机构成深度摄像器,通过捕捉多自由度的运动轨迹加以进行 3D 建模,判断深度信息。IC650364.png

(通过 Kinect 深度摄像头捕捉到的深度图像,经过一系列滤波和乐高图拆分融合形成的 3D 图像)

最后的单目 SLAM(RGM)是最复杂也是最难实现的解决方案:即使用单个不带深度传感的摄像头进行环境重建和定位,这就更多地依靠计算机视觉和一系列滤波算法与设备自身搭配的其他硬件(陀螺仪等姿态传感器)。而且,一般采用单目 SLAM 的产品一定会搭配深度摄像头实现更多元的图像信息。

这种技术大多对硬件性能要求很高,如果无法跟传感器进行良好的配合,则在结果上就会有较大的偏差。无论是 Google 的 Project Tango 计划,还是 Oculus 的 John Carmark,都在讨论利用单目 SLAM 进行空间定位的解决方案。

(Google Project Tango 中也有一部分技术采用了RGB 技术)

总得来讲,通过摄像头进行室内空间定位正在从理论研究逐渐落地,渗透到各个领域,我们已经能从无人驾驶汽车,机器人上看到 SLAM 的应用场景了。随着小型芯片性能的提高和算法研究的优化,以移动设备为主的小型设备也初露锋芒。移动 VR/AR 作为新兴的领域,恰好给了 SLAM 一个施展拳脚的空间。今天我们只是简要介绍 SLAM 的大致形态和原理,接下来极客公园会对其中一些特定知识展开梳理。

本文参考:

 Wiki 百科

Google 学术

Project Tango

Kinect Fusion Project

最新文章

极客公园

用极客视角,追踪你不可错过的科技圈。

极客之选

新鲜、有趣的硬件产品,第一时间为你呈现。

顶楼

关注前沿科技,发表具有科技的商业洞见。