SLAM AR 技术与应用

article/2025/8/17 23:00:06

SLAM+AR 技术与应用

一、概述

图像处理领域涉及
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缺少的不是技术,而是创意!


http://chatgpt.dhexx.cn/article/4grTc0ZF.shtml

相关文章

计算机组成ar什么意思,到底什么是AR技术?

到底什么是AR技术? 时间:2020-03-14 11:04:11 人气:1043 来源: 栏目:AR沙盘定制开发 导读:AR技术综合了计算机仿真技术、计算机图形学和多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器 等电子技术,模拟人的视觉、昕觉和触觉等感官功能,使得用户从感…

3D/VR/AR简易技术原理介绍

3D/VR/AR简易技术原理介绍 3D模型的生成流程 1.信息的采集 物体图片的采集,同一平面上需要360度全方位角度采集 2.查找特征点 找到图片的特征点,作为物体的识别参考,如下图所示: 参考算法:SIFT 3.生成点云图 通过特征点计算相机矩阵,再衍生出360度点云图,如下图:…

初探AR技术

初探AR技术 AR概述概念定义:技术手段:参考实例: AR解决方案AR SDKARKit简介扩展 ARCore简介ARCore 的工作原理优缺点 Vuforia简介优缺点 Wikitude简介 EasyAR简介优缺点 Web AR 总结本文参考 AR概述 概念定义: 增强现实&#xff…

Web与小程序AR技术原理

AR(Augmented Reality增强现实)技术,能够将虚拟数字信息与真实世界信息无缝连接,将虚拟物体带入现实中与用户进行互动。凭借其丰富真实的交互体验,AR技术成为了各大品牌的营销利器。 今天,我们就来简单梳理一下“AR” 究竟是一项什…

AR增强现实技术解读

来源:网络 AR增强现实,是用户对现实世界感知的新技术。 一般认为,AR技术的出现源于虚拟现实技术(Virtual Reality,简称VR)的发展,但二者存在明显的差别。 传统VR技术给予用户一种在虚拟世界中…

【我的渲染技术进阶之旅】【AR研究】第一集—AR的基本原理科普

AR,即增强现实技术,它的出现意味着能将计算机技术带到现实当中来,能使科技更“贴近”人们的现实世界的生活,被誉为可能是代替智能手机的,未来的下一个平台。 作为永远要离未来更近一些的设计师,当然需要了解…

AR技术简谈:相关原理,技术应用以及设备推荐,带你感受虚拟信息与真实世界巧妙融合。

1.AR技术原理 AR技术是一种增强现实技术,利用计算机生成的模拟信息与真实世界进行混合叠加,从而创造出新的虚拟图像。AR技术可以广泛应用于多媒体、智能交互、传感等领域,例如在游戏、教育、医疗、建筑、旅游等领域中,通过AR技术可…

搭建nutz框架实现登录登出

创建web项目 把jar粘贴到lib目录下 全选build path 新建类 类名为MainModule 添加模块类自动扫描 web.xml文件 注意< display-name> 和< parm-name>标签 需要修改 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns:xsi&q…

使用nutz框架,找不到入口函数,访问Url报404

案例 今天在跟着nutz框架教程去配置demo时&#xff0c;发现访问URL找不到入口函数&#xff0c;出现了Search mapping for path/user/count : NOT Action match 异常&#xff0c;据nutz文档介绍&#xff0c;找不到方法, 一般是At写错或者UserModule的package写错,导致映射不到或…

Nutz框架-- Cnd条件使用原生sql

案例 今天接到一个临时的业务需求&#xff0c;做一个简单的过滤作为临时业务需要使用一两天&#xff0c;于是想到在原有的Cnd条件上加上一个Not like 进行过滤&#xff0c;但是发现现有Cnd条件查询好像满足不了 解决方案 使用Nutz框架中的Static类来实现自定义sql与Cnd.and()拼…

对于nutz框架的学习入门级使用——配置

准备&#xff1a;eclipse&#xff0c;jdk8.0&#xff0c;tomcat8.5&#xff0c;nutz的jar包 第一步&#xff1a;新建一个项目 第二步&#xff1a;导入需要的包&#xff08;数据的jar包也会同时导入&#xff09; 第三步&#xff1a;新建一个Mainmodule的类&#xff0c;并写入如…

Nutz框架crud持久层操作指南

Nutz框架 nutz框架是一个轻量级的ssh框架&#xff0c;因为它有spring的职责&#xff0c;它又负责了hiberate的持久&#xff0c;以及struct的大servlet功能。以及提供了一系列轻便的工具&#xff0c;所以我们能很容易的只专注于业务&#xff0c;此篇在于介绍一下nutz框架持久层…

开源框架Nutz开发者访谈

Nutz是SSH的替代方案,它是一组轻便小型的框架的集合, 各个部分可以被独立使用。 Nutz 的目标是: 在力所能及的情况下,最大限度的提高Web开发人员的生产力 “是的,提高生产力是这个框架唯一的目标。 就像 Java 设计之初,考虑最多的是程序员的易用性和运行时效率的权衡, …

Nutz框架学习(一)

dao层学习 1.创建 POJO(java bean实体类) 在 Java 项目中建立一个POJO&#xff0c;比如 com.zzh.demo.Person : package com.dodoke.bean;import java.util.Date;import org.nutz.dao.entity.annotation.*;Table("t_test") // 声明了Test对象的数据表 public …

Nutz框架的简单使用

Q&#xff1a;什么是Nutz。 A&#xff1a;类似于SSH的一个框架。官网http://www.nutzam.com/ Q&#xff1a;Nutz怎么读。 A&#xff1a;读作 “纳特Z&#xff08;Z发重音&#xff09;”。Nutz 的 Nut 是因为霍金的《果壳中的宇宙》是 zozoh 最喜欢的一本书之一。 Z 是 zozoh 小…

nutz mysql 关键词_nutz框架简单入门

最近几年随着python语言的崛起&#xff0c;java在web方面被各种脚本语言诟病效率低下&#xff0c;这也是事实&#xff0c;java在运用第三方类库(框架)开发时&#xff0c;效率确实很低下。麻烦的框架整合&#xff0c;复杂的配置文件都是拦路虎&#xff0c;不过今天我要推荐的nut…

给大家推荐一个非常非常非常好用的java轻量级框架-Nutz永远滴神

或许以后再也用不到了&#xff0c;写篇文章纪念一下吧~ 前段时间离职来到了现在的新公司&#xff0c;奔向了光明的未来&#xff0c;唯一让我留恋的就是原本使用的框架—Nutz了&#xff0c;这个框架相对于现在的mybatis&#xff08;过段时间可能会“mybatis真香”&#xff09;来…

【Nutz】Nutz起步

一、Nutz 是一组轻便小型的框架集合&#xff0c;可以极大程度上提高开发人员的生产力&#xff0c;更多内容请点击访问Nutz官网。Nutz主要包括以下几个模块&#xff1a; DAO&#xff1a;针对JDBC进行了薄封装&#xff0c;事务模板&#xff0c;无缓存IoC&#xff1a;JSON风格配…

【工具】——远程协助(向日葵)

在烈日炎炎的午后&#xff0c;一片片金黄金黄的田野中&#xff0c;要是能够看到上图这样的风景&#xff0c;那是多么的赏心悦目啊 &#xff0c;并且身旁有佳人&#xff0c;那是何等的荣幸之至。当然&#xff0c;今天的主体就是向日葵&#xff0c;一个远在千里却近乎咫尺之间的桌…

Windows系统自带远程桌面和远程协助怎么连接?

随着IT技术的发展和远程办公的兴起&#xff0c;在日常工作中&#xff0c;远程桌面和远程协助等功能已经成为很多用户需要掌握的技能之一。而对于使用Windows系统的用户来说&#xff0c;Windows系统自带的远程桌面和远程协助功能&#xff0c;更是令人欣喜的利器。下面我们就来一…