SLAM+AR 技术与应用的一些思考

简介: 图像处理领域涉及AR的技术可以抽象为这么一类技术:通过图像和其他传感器信息计算摄像机的位置和图像内环境三维结构信息,并结合3D渲染提供更自然的人机交互能力。

一、概述

图像处理领域涉及
AR的技术可以抽象为这么一类技术:

通过图像和其他传感器信息计算摄像机的位置和图像内环境三维结构信息,并结合3D渲染提供更自然的人机交互能力。


如图1所示,位置和结构信息一般包括相机机位(Camera Pose)和点云/3D模型(Point Cloud/Mesh),不同的技术问题,侧重点不同。
Position_Structure
图1 AR相关技术关系图
Marker/Markerless Tracking只关注相机机位的跟踪,这也是AR最开始的一类技术,它的技术指标主要要求运算速度快,保障实时性,还有就是跟踪稳定且不易跟丢。Marker一般是一张2D的图片,因此处理相对简单,世界坐标系往往就以Marker所在平面为XY轴平面,以垂直于该面的法向量为Z轴。通过将摄像机图像上的特征点和Marker中的特征点进行匹配,就可以计算出摄像机相对于Marker的位置,如图2所示。
Marker_AR_
图2 Marker AR原理图
IMU(惯性传感单元)是现代智能手机几乎都配备的元件,通过IMU可以准确获取手机(相机)的旋转维度的变换,但是对于空间位移很难准确衡量,所以IMU经常作为其他技术的辅助,比如SLAM。
SLAM(同时定位并建图),顾名思义,它的目的同时包括了计算Camera Pose和扫描环境三维结构信息,和它非常类似的是SFM(Structure From Motion),二者最大的区别在于SFM常用于3D重建,一般对重建的结构细节以及精细度要求甚高,重建的后结果多是面向用户,对美观度也有一定要求,因此一般只能离线处理;而SLAM应用场景包括AR、机器人控制等等,一般要求实时性,所以扫描的环境结构信息一般相对粗糙,而环境的信息也主要为了辅助自身的定位。SLAM/SFM相比于Marker Tracking的最大区别在于事先并不知道任何三维空间的信息,需要首先从两张二维的图像(有一定的视差)中恢复三维结构(如图3所示),继而不断的跟踪并扩张地图。SLAM建立的3D地图的坐标系是随机的,而后面提到我们做了一个有趣的改进是可以通过一张Marker作为SLAM的初始地图,从而使得SLAM的坐标系可以确定。

SFM
图3 从二维图片恢复三维结构
3D Object Tracking,即三维物体跟踪,这个问题既类似于Marker的跟踪也类似于SLAM,Maker Tracking是计算2D的图片相对于的相机的位置,SLAM解决的其中一个问题是在构建好的三维点云中,准确定位到自身的位置并持续跟踪;3D Object Tracking要解决的问题是准确定位到3D物体相对于相机的位置。和Marker Tracking相比,是把跟踪2D的图片升级为跟踪3D的物体,区别在于2D的图片始终位于三维空间中的一个平面上,方便构建点云和世界坐标系。和SLAM相比,SLAM构建好的环境和自己的要定位的环境必须是相对稳定的,而3D物体识别时,背景信息往往是变化的。3D Object Tracking需要的先验知识一般是一个3D模型,这个模型有时候可以通过SLAM或者SFM得到。
Object Segmentation,即物体分割,是在摄像机图片中将指定的物体分割出来或是将前景后景分离开来。这类问题实现方法很多,其中有一类是利用物体3D模型的信息将图片中的物体找到并分离出来,同时还可以准确计算3D物体相对于Camera的位置。这类技术又和3D Object Tracking有相辅相成的作用,比如如果能够对物体先进行分离,那么跟踪就会变得简单些,反之,如果先能够追踪到物体的位置,那么对物体进行分离也相对容易。
在基于单目的摄像头的AR技术中,特征点(Feature)是最通用的一项技术手段,通过匹配不同帧图像之间特征点的对应关系,我们才能够准确计算相机的运动,从而恢复环境三维结构。特征点相关算法很多,在移动端,为了提高计算效率,倾向使用ORB和Freak,比如SLAM中我们就使用了ORB特征,Marker Tracking中我们使用了Freak特征;而类似SIFT这种,匹配精度高,但是运算效率低,一般用于SFM这类技术中。使用特征点的好处在于,特征具有良好的尺度不变形、方向不变形和光照不变形等特性,匹配结果较为鲁棒。光流法(Optical Flow)是相对于特征点的另一类跟踪相机运动的方法,它的基本原理是不去计算特征点以及特征描述子,而是直接使用像素块进行匹配,提高了运算效率,而其缺点是光流法只适合匹配相邻的两帧图像来计算运动变化,它要求光强度守恒(Brightness Consistency),所以无法用于重定位等技术实现。
每项AR技术背后都孕育着一些新型的业务形态,AR业务主要围绕营销互动和实用工具两类展开,如图5所示。最早的Marker Tracking催生了AR互动营销,AR教育等业务的发展,手淘的ARMagic互动平台就是依赖此技术建立起来;SLAM技术支撑了AR实景宝贝,让3D的商品能够更加自然地进入用户的视野;AR捉猫猫也是依靠IMU在AR中的应用才得以铺展开来。更重要的是这些技术潜力还未完全释放,在现有技术体系中我们已经规划了未来一些业务的蓝图:

AR说明书,通过AR的方式展示实际生活、生产环节中一些器械的使用方式或是工作原理。比如家电(洗衣机、电饭煲等)的3D形式的说明书(如图4所示),工厂内一些机器的虚拟操作指南等。这项业务主要依托于3D Object Tracking和SLAM技术。
AR_
图4 AR说明书示例图

AR场景互动,在一些线下场景(商场、休闲场所、博物馆等),通过AR的方式完成的更加自然、丰富的互动。比如目前规划的上海星巴克新概念旗舰店,就计划利用AR的方式展示店内的传统机器和传统工艺的历史,让用户能够用AR的方式探索星巴克的历史文化。同时,结合支付、物流等环节,完成一体化的有趣购物体验。

AR直播/AR视频,在直播的场景通过布置一些特殊的“标记”,在直播和视频中叠加更为丰富的互动特效。
AR业务的形式优势不仅仅在于新颖,而是它通过摄像头打通了虚拟和现实世界,也就有了天然的贯通线上和线下的优势,是进行“新零售”的探索一个利器。
AR_
图5 AR技术体系和业务关系图

二、SLAM技术

提到SLAM开源项目,自然先想到大名鼎鼎的ORB-SLAM。首先简单介绍下ORB-SLAM2的算法结构。如图6所示,ORB-SLAM2主要分为三个线程,Tracking用于跟踪Camera Pose,LocalMapping用于构建点云地图,Loop Closing用于闭环检测,优化点云位置。Place Recognition,即重定位,是利用BoW(Bag of Words)模型在已经构建好的地图内定位Camera。虽然ORB-SLAM2整体效果在众多开源项目中脱颖而出,但他仍然只是一个实验室产品,距离真正的实用还需要很多工作要做。将该项目移植到移动端后,其性能表现如下:

  1. iPhone7 Plus, 15FPS; Android 三星Note7 1-2FPS
  2. BoW词库大小140M,加载时间8秒,占用内存400+M
  3. 位置跟踪不稳定,存在抖动
  4. 代码存在很多Bug,尤其内存泄露非常严重

ORBSLAM2
图6 ORB-SLAM2

因此,SLAM技术在移动端的应用必须能够突破“硬件资源有限”这个障碍。

2.1 平面检测

SLAM构建出了3D点云地图,并估计出了Camera Pose,然而对于AR应用,还无法确定3D模型的摆放位置。比如我们需要在桌面上摆放一个花瓶,我们还需要知道在3D点云地图中,桌面对应的位置,这就需要上面流程图里提到的平面检测。
转换为一个数学问题描述:在空间中我们有一系列的点P,并给出一个方向向量 D ,求一个法向量平行于D 的平面并使得所有的点距离该平面的距离之和最小。
这是一个非常典型的最小二乘估计问题,因此可以利用已有的数学工具求解,如高斯牛顿,LM算法,SVD分解等等。如果是检测水平面,其中D 是根据重力传感器得到的竖直方向,即平面的法向量方向得以确定;

2.2 Marker+SLAM

SLAM初始化建立的点云世界坐标系是随机的,对于单目SLAM,scale信息是无法确定的,即无法确定点云世界坐标和真实尺寸的比例。在某些情况下,AR应用希望能够和真实的尺寸一一对应,在这种情况下我们提出了利用Marker作为SLAM的初始地图的方法。通过一个事先确定的Marker,建立一个已知scale信息的世界坐标系,在此坐标系的基础上通过SLAM跟踪并扩张地图,那么在叠加3D模型时就可以安装其真实尺寸展示。算法上的区别就在于SLAM首先要去识别Marker,而不是自己去初始化地图,识别Marker的方法也可以借鉴Marker Tracking的相关技术。

三、扩展与思考

SLAM技术是AR算法领域最核心的技术的技术之一,ARKit和ARCore的推出也验证了各大公司对其重视的程度。在SLAM基础上,去完成Marker Tracking或者Object Tracking等工作,也能够大大提高整体跟踪效果。理解AR的技术本质,更有助于理解AR应该如何应用。而在业务层面,AR缺少的不是技术,而是创意!

目录
相关文章
|
2月前
|
Go vr&ar 图形学
重塑体验:AR/VR技术在游戏与娱乐行业的创新应用
【10月更文挑战第29天】本文探讨了AR/VR技术如何改变游戏与娱乐行业,介绍了AR和VR的基本概念及其在游戏和娱乐中的应用实例,包括《精灵宝可梦GO》的AR开发和VR视频播放器的实现代码,并展望了未来的发展趋势。
227 2
|
5月前
|
vr&ar C# 图形学
如何开发增强现实(AR)应用:技术指南与实践
【8月更文挑战第24天】开发增强现实应用是一个充满挑战和机遇的过程。通过选择合适的技术栈、遵循科学的开发步骤,并充分考虑用户体验、设备兼容性、内容与创意以及数据安全等因素,您可以成功打造一款高质量的AR应用。随着技术的不断进步和应用场景的不断拓展,AR应用的未来充满了无限可能。
|
5月前
|
搜索推荐 定位技术 vr&ar
科技助力医疗:医院AR导航系统的实际应用与效益分析
在快节奏的现代医疗环境中,患者与医护人员对高效、便捷的院内导航需求日益增长。随着科技的飞速发展,传统的纸质地图已难以满足复杂多变的医疗空间需求。在此背景下,集成AR(增强现实)技术的院内导航系统应运而生,以其独特的优势和创新功能,正逐步成为智慧医院建设的重要组成部分。
143 0
科技助力医疗:医院AR导航系统的实际应用与效益分析
|
5月前
|
vr&ar 图形学 开发者
步入未来科技前沿:全方位解读Unity在VR/AR开发中的应用技巧,带你轻松打造震撼人心的沉浸式虚拟现实与增强现实体验——附详细示例代码与实战指南
【8月更文挑战第31天】虚拟现实(VR)和增强现实(AR)技术正深刻改变生活,从教育、娱乐到医疗、工业,应用广泛。Unity作为强大的游戏开发引擎,适用于构建高质量的VR/AR应用,支持Oculus Rift、HTC Vive、Microsoft HoloLens、ARKit和ARCore等平台。本文将介绍如何使用Unity创建沉浸式虚拟体验,包括设置项目、添加相机、处理用户输入等,并通过具体示例代码展示实现过程。无论是完全沉浸式的VR体验,还是将数字内容叠加到现实世界的AR应用,Unity均提供了所需的一切工具。
223 0
|
5月前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
117 0
|
6月前
|
传感器 人工智能 数据可视化
虚拟现实(VR)与增强现实(AR)的技术革新:塑造未来的沉浸式体验
【7月更文挑战第24天】VR和AR作为两种前沿的沉浸式技术,正以前所未有的速度改变着我们的世界。随着技术的不断革新和应用的不断拓展,我们有理由相信,未来的VR和AR将为我们带来更多令人惊叹的体验和技术革新。
|
5月前
|
安全 算法 前端开发
外滩大会安全 AR 沙盘首秀--背后的前端技术
外滩大会安全 AR 沙盘首秀--背后的前端技术
|
6月前
|
数据采集 监控 安全
园区 AR 导航系统:技术创新与功能拓展
**维小帮园区AR导航系统**借助高精地图与AR技术,打破传统二维导航局限,提供三维立体地图和沉浸式导航体验。系统包括AR实景指引、VR全景预览、便捷预约参观和智能停车场导航等功能,大幅提升访客定位与通行效率,推动园区管理智能化。未来,该技术有望在更多领域广泛应用。
137 0
园区 AR 导航系统:技术创新与功能拓展
|
7月前
|
传感器 数据可视化 人机交互
虚拟现实(VR)与增强现实(AR)技术解析
【6月更文挑战第27天】 VR创造沉浸式虚拟环境,模拟真实感受,应用于旅游、医疗、教育和游戏。AR将虚拟信息叠加到现实,强调虚实结合与实时交互,常见于游戏、教育、购物和医疗。两者提供超越现实的体验,随着技术进步,将在更多领域发挥作用,开启新可能。
|
6月前
|
前端开发 Linux Shell
技术心得:基于AR9331(MIPS架构)分析系统启动过程(uboot)
技术心得:基于AR9331(MIPS架构)分析系统启动过程(uboot)
116 0