Speed and Memory Efficient Dense RGB-D SLAM in Dynamic Scenes论文笔记

news2024/10/9 16:25:19

Speed and Memory Efficient Dense RGB-D SLAM in Dynamic Scenes论文笔记

论文中的主要引用文献:

[7:A coarse and relevant 3d representation for fast and lightweight rgb-d mapping] 超表元建图

[14: Fast optical flow using dense inverse search] 稠密光流逆搜索

[15:“Lightweight visual odometry for autonomous mobile robots] LVT轻量级视觉跟踪

摘要

假设许多机器人应用程序不需要重建表面的高分辨率水平,并且可以从不太准确但成本较低的地图中受益,从而获得和内存效率。本文针对主流计算平台,提出了一种基于粗糙、轻量级三维表示的快速RGB-D SLAM,用于动态室内环境的稠密紧凑建图。文中还提出了一种简单快速的动态元素检测和过滤公式。我们展示了我们的系统的健壮性,它的低内存需求和良好的性能。

系统总览

在这里插入图片描述

A.系统结构

以RGB-D帧(C,D)颜色深度对为输入,同时重建环境静态部分的稠密全局三维地图M,并估计传感器在全局空间中的位姿T∈SE(3)。摄像机姿态T由方向R∈SO(3)和位置T∈r3组成。

全局地图M被建模成3D超表元的紧凑集合[7:A coarse and relevant 3d representation for fast and lightweight rgb-d mapping]

首先从当前帧中的超像素分割F中提取一组超surfels Fl,并在并行线程中同时检测稀疏特征。

然后,基于鲁棒自运动补偿超像素级快速运动目标检测稠密逆搜索(DIS)光流[14: Fast optical flow using dense inverse search]用于从后续的相机跟踪和映射过程中提取和丢弃动态元素。

跟踪步骤使用基于稀疏特征的轻量级VO初始化,并使用**稠密帧到模型配准(alignment)**进行细化,以获得当前相机姿态的鲁棒和准确估计(这里目测是直接法的直接图像对齐?)

将检测到的兴趣点匹配一个小的稀疏局部特征地图的稀疏VO建立在[15]中的实现上,基于改进了ORB特征匹配[16]的GMS。

基于点到面的对称ICP[17],稠密配准细化尝试将当前帧的三维点测量值与稠密全局地图M中supersurfel Ms对齐。

最后,从当前帧中注册的检测特征和SuperSurfels Fl分别集成到稀疏局部图和稠密全局图m中,使用非刚性空间变形策略实时应用闭环来校正局部和全局图,如ElasticFusion[6]所做的那样。

B.Supersurfel 表示

使用一个近似但连续且轻量级的表示[7]用于对环境进行建模。

稠密全局地图M被重建为一个supersurfels的无序列表Ms,它们可以被看作是超像素的近似2D到3D的反投影。超像素是颜色和几何形状相同的一组像素集合。而基于表元的方法进行逐个像素的表元建模来对环境建图。超表元3D的术语是从RGB-D超像素产生的,生成一个低分辨率的表面重建。这种易于管理的3D数据表示允许更快的处理,并减少内存占用和噪声,同时保留重要信息(纹理和深度不连续)。

每个地图超表元 Ms用以下属性描述:
在这里插入图片描述

为了方便起见,我们还指定一个超表元的法线为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述对应于其方向的第三列

系统描述

A. 基于超表元的建图

1)超表元生成

输入帧被分割成超像素块,尽可能保留纹理边界和深度不连续,这遵循[19]中提出的方法的GPU实现,它为每个分割分配一个3D斜面。

每个超像素块可以提取出一个超表元Fl,如图二所示
在这里插入图片描述
超像素块(左)与相关的斜面和生成的超表元(右),显示为矩形补丁而不是椭圆补丁,以便更快地可视化。

通过对超像素所包含的像素的2D到3D反投影应用主成分分析(PCA),如[7]所述

2)全局地图更新

在这一步中,每一帧的超表元被整合进全局地图M。将相应的帧和模型超表元进行融合,细化重构,减少冗余,而没有对应的帧超表元只是在地图中添加了一个低置信权重。(这里指的应该是删除的帧中提取的超表元

为了从地图M和当前帧F中找到超表元之间可能的对应关系,我们使用了投影数据关联策略。

将每个模型超表元在相机视场中的位置投影到超像素分割RGB-D帧中,把包含投影位置的超像素块与该超表元进行关联。(这里就是一个根据位置进行投影匹配的过程,类似于3D点投影2D相机平面,投影点的位置所处的超像素块视为3D点的投影超像素块)

然后我们检查全局地图Ms和当前帧超表元Fl之间的相似性,确保它们在Lab空间中颜色之间的距离、法线之间的发散角和中心之间的欧几里得距离都很小,以避免不同的超曲面融合。采用加权平均和协方差交点策略对相似的超曲面进行合并,更新方案类似于[7]。增加衡量可靠性的置信值。

最后,通过执行一个快速的自由空间违反检查来清理模型(a fast freespace violation check),以删除可行超表元前的超表元,这些超表元通常与动态对象相关。长时间处于不稳定状态(低置信值)的超表元也会被淘汰。(这里没太懂)

B. 相机追踪

1)稀疏特征视觉里程计:

首先,应用ORB特征[20]的稀疏VO得到摄像机姿态的初始估计。

当捕获帧时,提取ORB特征,深度图像作为掩码来拒绝具有无效深度的点。

然后,通过最小化新提取的2D特征点与匹配的3D局部地图点之间的重投影误差,将检测到的特征用于注册新帧与过去帧上创建的有限稀疏局部特征地图:
在这里插入图片描述
ρ是处理对应异常值的鲁棒柯西代价函数

局部地图管理的实现基于轻量级视觉跟踪(LVT)系统。这是一种用于实时操作的视觉里程计算法,具有低计算开销和内存需求。与标准的帧对帧方法相比,使用局部地图可以大大减少错误的积累。当一个特征不再可跟踪时,它将从局部地图中清除,以便跟踪有限数量的兴趣点。

为了实现当前帧2D特征与投影的局部地图特征之间的快速高质量匹配,GPU暴力匹配后应用基于网格的运动统计(grid - based Motion Statistics, GMS)[16]。GMS**依赖于一个统计公式来根据相邻匹配的数量区分假匹配和真匹配。**即使在弱纹理环境或强运动场景下,它也能呈现良好的结果。

如果发现的匹配数量太少,则只能根据前面两个姿势的匀速模型来预测摄像机姿态的初始估计。

2) 帧到模型的稠密配准

接下来采用稠密配准来改进初始姿势估计T。我们在全局空间中计算与输入RGB-D帧像素相关联的3D点的集合Xi,并向Xi中的每一个3D点分配法线ni=R*Fnl,其中Fnl是当前帧超表元Fl中包含3D点集合X的法线,R是当前姿态估计T的旋转部分。然后,将3D点集合Xi与位于相机视野中的模型的超表元对齐

应用了文献[17]中提出的快速可靠的对称ICP变型。这是对传统的点到面ICP的简单改进,可以产生更快、更可靠的收敛。使用高斯-牛顿计算从前一个相机位姿到当前位姿的相对变换Trel的旋转Rrel和平移Trel部分,以最小化以下成本函数:
在这里插入图片描述
其中,在这里插入图片描述
是当前帧的3D点和全局模型的超曲面之间的关联列表

ICP后相机姿态更新:
在这里插入图片描述
利用快速投影数据关联的ICP算法在每次迭代中计算最接近的对应关系。将模型超表元的中心Msp投影到当前帧,并选择与投影位置相关联的3D点Xi进行配对。在LAB空间中具有高深度差异、高颜色不相似或表面法线之间有大角度的对应关系将被拒绝。

C. 移动目标检测

1)自运动补偿

为了检测动态元素,我们选择将图像空间中的相机自我运动建模为2D透视变换矩阵H∈SE(2)。

由于三维空间中的自运动补偿对计算的要求更高,而且由于有噪声的深度测量而不那么健壮。

因此从前一帧(Cprev,Dprev)和当前帧(C,D)中检测到的ORB特征与RANSAC结合使用,计算将两幅图像关联起来的2D变换H。我们假设摄像机所看到的场景中静态元素占主导地位,否则RANSAC可能会选择一组动态特征作为内线,估计的变换H不能反映真实的摄像机运动。然后计算与当前RGBD帧的彩色图像C相关联的强度图像I,以及与Cprev相关联的前一个强度Iprev。然后将计算出的透视变换H应用于Iprev和Dprev,生成两张新的图像:经过扭曲的强度Iwarp和深度Dwarp图像,在正确估计的情况下,完全静态的场景应该看起来像I和D。

2) 静态/动态分割

在第二步中,我们计算当前图像I和预测图像Iwarp之间的稠密光流。我们使用DIS光流算法[14]来估计每个像素的表观运动,因为它能够在单个CPU核心上以高达600Hz的速度运行,并在大位移下达到最先进的性能。然后,通过对当前帧内像素的超像素进行平均,将二维位移向量∆x分配给当前帧的每个超像素。使用超像素作为刚性移动元素可以加快分类速度,并减少错误值的影响。我们对超像素流向量的大小和补偿深度差(使用深度D和Dwarf计算)使用自适应阈值来检测移动片段。

也就是通过2D图像变换和稠密光流追踪,对比同一个超像素块的深度变化

如果为以下情况,质心为x的超像素被归类为动态的:
在这里插入图片描述
τ f和τd是两个自适应阈值。τd考虑到深度传感器的不确定度,由以下因素确定:
在这里插入图片描述
k设为10,σd(x)为像素x的深度噪声的标准偏差。阈值τf在[21]中定义为:
在这里插入图片描述

其中α = 1.0被设置为补偿由传感器的分辨率或光流的精度引起的不稳定,β = 0.5加权透视变换矩阵元素H(1,3)和H(2,3)的大小,反映传感器运动的速度。为了限制由于不准确的光流或深度数据造成的错误检测,我们设置这些被标记为动态,但只连接到静态分割的超像素为静态超像素。运动目标检测结果如图3所示。与动态超像素相关联的特征和超表元被舍弃。
在这里插入图片描述

D. 回环检测

1)检测:

使用随机化的 fern[22]进行关键帧数据库管理和检测候选回环,因为fern描述符计算和比较非常快。如果在关键帧数据库中检测到与当前帧相似的图像,则使用GMS[16]匹配来自当前帧和候选关键帧的ORB特征。如果有足够的匹配,则使用EPnP[23]解决方案结合RANSAC计算两幅图像之间的转换T LC,以去除异常值。

如果RANSAC给出的inlier小于30%,回环将被丢弃。然后位姿变换T LC通过候选关键帧的超表元和当前帧之间进行密集ICP配准(如节IV-B.2所示)。

2)地图变形

如果闭环被接受,则构建嵌入全局模型表面的变形图,并对其进行优化,使稠密建图发生非刚性变形,从而从累积漂移中恢复。

与ElasticFusion[6]类似,我们遵循[24]引入的嵌入式变形公式,并将其适应于我们基于supersurf的表示。

Sumner et al[24]将变形图G定义为一组节点Gj和稀疏均匀分布的边,通过稠密的三维模型进行变形:

节点从全局地图Ms的超表元集合中采样得到。节点Gj被定义为以tj为时间戳,以超表元的位置初始化的节点从而和超表元相关联。

它还存储了一个由旋转矩阵GRj,和平移向量Gtj组成的仿射变换作为优化参数。每个节点与时间上最近的k个邻居N (G j)连接。在我们的实现中k = 4。节点的仿射变换是根据目标函数的优化计算的,该目标函数鼓励平滑刚性变形,给定一组稀疏位置回环约束(见[6])。

在优化变形图后,这些节点用于变形图m中的超表元。全局图Ms中的每个超表元都受到一组相邻变形图节点I (Ms,G)的影响,这些节点收集为k个最近的欧氏距离节点,在更大的α个节点集中,其时间戳为Gjt0,在超表元初始化时间戳Mst0附近。超表元Ms的变形位置,通过其相关节点I (Ms,G)的优化刚性变换组合计算:
在这里插入图片描述
其中
在这里插入图片描述
超表元的方向和协方差矩阵更新如下:
在这里插入图片描述

其中R是混合旋转,计算为影响超冲浪的节点I (Ms,G)旋转的四元数表示的加权平均。

变形图也用于从稀疏跟踪使用的局部地图上变形点(节IV-B.1)。当前相机姿态被修正T = TLC*TKF,其中TKF是关键帧的姿态。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/135680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后端Web开发框架(Java)

为什么使用Spring Boot 简化配置,无需编写太多的 xml 配置文件,效率很高;Spring 可以整合很多各式各样的框架,并能很好的集成;基于 Spring 构建,使开发者快速入门,门槛很低;Spring …

LabVIEW调用自己写的DLL

首先,我用的LabVIEW是8.5版本的,比较老但工作需要 先新建VI 程序框图中选择 互连接口 - 库与可执行程序 选择 调用库函数… 拖到面板 并右击它 选择配置 在库名或路径中选择写好的DLL方案中的DEBUG中dll文件 确定以后就要选择哪个函数,并…

【数字图像处理】毛笔字细化

源码链接:calligraphy.cpp 一、实验要求 附件是书法毛笔字,请将附件图片中“年少有为”四个字进行笔画细化。 二、实验内容 首先观察图片,是只将黑色的毛笔字部分进行细化,所以需要先把印章这类的区域去除。先通过将图片转到h…

Content Security Policy (CSP) 介绍

内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件,这些攻击都是主要的手段。 起因 当我不经意间在 Twitter 页面 view source…

JavaScript 简单类型与复杂类型

JavaScript 简单类型与复杂类型 目录JavaScript 简单类型与复杂类型1. 简单类型与复杂类型2. 堆和栈3. 简单类型的内存分配4.复杂类型的内存分配5. 简单类型传参6. 复杂类型传参7.下面是代码1、Math对象最大值2. 封装自己的数学对象3. Math绝对值和三个取整方法4.Math对象获取随…

WebSocket实现聊天室

需求 实现用户登录功能展示用户好友列表功能实现用户历史消息展示实现单聊信息和群聊信息 效果展示 用户登录 好友列表展示 历史消息展示 聊天 代码实现 说明&#xff1a;Springboot项目&#xff0c;页面是用 thymeleaf 整合的。 maven依赖 <dependencies><depen…

π122E31兼容ISO7221CD 200Mbps高速率 双通道数字隔离器

π122E31兼容ISO7221CD 200Mbps高速率 双通道数字隔离器&#xff0c;具有出色的性能特征和可靠性&#xff0c;整体性能优于光耦和基于其他原理的数字隔离器产品。 产品传输通道间彼此独立&#xff0c;可实现多种传输方向的配置&#xff0c;可实现 3.0kVrms 隔离耐压等级和 DC 到…

MySQL数据库的安装与实现

MySQL在win系统中的安装 第1步&#xff1a;下载安装&#xff08;在windows系统中安装&#xff09; http://downloads.mysql.com/archives/community/ 我选择安装的是5.7.31&#xff0c;一般MySQL主要分为两个版本&#xff0c;一个是5.7系列&#xff0c;一个是5.8系列&#xf…

Linux 音频驱动

1 I.MX6ULL 开发板通过此接口外接了一个 WM8960 音频 DAC 芯片。 2 在信号处理领域&#xff0c;外界的声音是模拟信号&#xff0c;处理器能理解的是数字信号&#xff0c;因此这里就涉及到一个模拟信号转换为数字信号的过程&#xff0c;而完成这个功能的就是 ADC 芯片。 如果处…

MySQL的锁

把那些可能会被多个线程同时操作的资源称为临界资源&#xff0c;加锁的目的就是让这些临界资源在同一时刻只能有一个线程可以访问。数据库作为用户共享的一个资源&#xff0c;如何保证数据并发访问一致性也是所有数据库必须解决的问题&#xff0c;如何加锁是数据库并发访问性能…

字节前端高频手写面试题(持续更新中)

Promise // 模拟实现Promise // Promise利用三大手段解决回调地狱&#xff1a; // 1. 回调函数延迟绑定 // 2. 返回值穿透 // 3. 错误冒泡// 定义三种状态 const PENDING PENDING; // 进行中 const FULFILLED FULFILLED; // 已成功 const REJECTED REJECTED; // 已…

Vite构建工具

什么是构建工具&#xff1a;打包:将我们写的浏览器不认识的代码交给构建工具进行编译处理的过程就叫做打包&#xff0c;打包完成以后会给我们一个浏览器可以认识的文件 一个构建工具他到底承担了哪些脏活累活: 1. 模块化开发支持:支持直接从node_modules里引入代码&#xff0b…

十三、Kubernetes yaml资源清单详解

1、概述 kubectl提供了各种命令&#xff0c;来管理集群中的pod&#xff0c;但是这些命令都是为了方便运维测试&#xff0c;实际生产部署还得用yaml文件来部署&#xff0c;所以弄清楚各类资源的字段是非常重要的。 资源清单就是k8s当中用来定义pod的文件&#xff0c;语法格式遵…

C#语言实例源码系列-实现ID卡的识别

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

Vlan的原理与配置

传统以太网的问题 规模大了&#xff0c;之后导致性能也很差&#xff0c;广播会增加 解决&#xff1a;用Vlan&#xff0c;不受地域限制&#xff0c;同一Vlan内的设备才能直接进行二层通信 实验 首先配置以上vlan与电脑ip 配置IP之后可以进行ping命令测试刚开始是连通的&#x…

计算机视觉实战----AlexNet网络及使用colab跑YoloV5代码

系列文章目录 文章目录系列文章目录前言一、用colab薅羊毛二、使用百度飞浆操作三、二、使用步骤1.引入库2.读入数据总结前言 一、用colab薅羊毛 Colaboratory 简称“Colab”&#xff0c;是 Google Research 团队开发的一款产品。在 Colab 中&#xff0c;任何人都可以通过浏览…

分享107个PHP源码,总有一款适合您

链接&#xff1a;https://pan.baidu.com/s/1Su77mBUx87vk0lzSLyvnyw?pwdyo96 提取码&#xff1a;yo96 PHP源码 分享107个PHP源码&#xff0c;总有一款适合您 page_count 1 # 每个栏目开始业务content"text/html; charsetgb2312"base_url "https://down.c…

基于 Spring Boot 的 RESTful API 设计与实现

RESTful 是一种规范&#xff0c;符合 RESTful 的 Api 就是 RESTful Api。简单的说就是可联网设备利用 HTTP 协议通过 GET、POST、DELETE、PUT、PATCH 来操作具有 URI 标识的服务器资源&#xff0c;返回统一格式的资源信息&#xff0c;包括 JSON、XML、CSV、ProtoBuf、其他格式。…

OpenVINS 官方文档 第一部分

参考链接&#xff1a;OpenVINS https://docs.openvins.com/index.html 1. Getting Started 欢迎来到OpenVIINS项目&#xff01;以下指南将帮助新用户下载软件并在我们支持的数据集上运行。此外&#xff0c;我们还提供有关如何在我们的系统上运行您自己的传感器的信息&#xff0…

《500强高管谈VE价值工程》-对经营变革期下VE的期待

文章出处&#xff1a;日本VE协会杂志 文章翻译&#xff1a;泰泽项目部 关注泰泽&#xff1a;实现高利润企业 《500强高管谈VE价值工程》-对经营变革期下VE的期待 作者: 鹿岛建设常务董事小野馨喜 随着21世纪的到来&#xff0c;社会结构和经济环境正在发生重大转变&…