Probabilistic Volumetric Fusion for Dense Monocular SLAM

news2024/11/13 22:48:56

论文标题:Probabilistic Volumetric Fusion for Dense Monocular SLAM

论文链接:https://arxiv.org/pdf/2210.01276.pdf


论文思想

提出了一种新的方法,通过利用深度密集的单眼SLAM和快速不确定性传播,从图像中重建三维场景

所提出的方法能够密集、准确和实时地对场景进行三维重建,同时对来自密集单眼SLAM的极度嘈杂的深度估计具有鲁棒性

与之前的方法不同的是,这些方法要么使用临时的深度过滤器,要么从RGB-D相机的传感器模型中估计深度的不确定性

概率深度不确定性直接来自SLAM中底层束调整问题的信息矩阵

由此产生的深度不确定性为体积融合的深度图提供了一个极好的信号

如果没有我们的深度不确定性,产生的网格是有噪音的,而且有人工痕迹,而该方法产生了一个准确的三维网格,人工痕迹明显减少

该方法在具有挑战性的Euroc数据集上提供了结果

并表明该方法比直接融合单眼SLAM的深度要好92%,与最好的竞争方法相比,精确度提高了90%


论文主要贡献

展示了一种以密集SLAM中的信息矩阵得出的不确定性为权重的密集深度图的体积融合方法

能够在给定的可容忍不确定性的最大水平上重建场景

与其他竞争性方法相比,该方法可以更高的精度重建场景,同时实时运行,并且只使用单眼图像

在具有挑战性的EuRoC数据集中实现了最先进的三维重建性能


主要方法

主要思想是将极其密集但有噪声的深度图通过其概率不确定性加权后融合到一个体积图中

然后提取一个具有给定最大不确定性约束的三维网格

为了实现这一目标,我们利用Droid-SLAM的配方来产生姿势估计和密集的深度图,并将其扩展到产生密集的不确定性图

我们将首先展示我们如何从底层束调整问题的信息矩阵中有效地计算深度不确定性

然后,我们介绍我们的融合策略,以产生一个概率上合理的体积图

最后,我们将展示我们如何在一个给定的最大不确定性约束下从体积中提取一个网状物


论文核心

论文有如下几个核心:

  1. 密集单眼SLAM
  2. 逆向深度不确定度估算
  3. 深度上采样与不确定性传播
  4. 不确定性的体素建图
  5. 带有不确定性界限的网格划分

1. 密集单眼SLAM

经典的基于视觉的反深度间接SLAM的核心是解决一个捆绑调整(BA)问题

其中三维几何被参数化为每个关键帧的一组(反)深度

这种结构的参数化导致了解决密集BA问题的一种极其有效的方式

它可以被分解成熟悉的箭头状块状稀疏矩阵,摄像机和深度依次排列

请添加图片描述
其中H是Hessian矩阵,C是块状摄像机矩阵,P是对应于点的对角线矩阵(每个关键帧每个像素一个反深度)

我们用∆ξ表示SE(3)中相机姿态的谎言代数的delta更新,而∆d是对每像素反深度的delta更新

为了解决BA问题,首先要计算Hessian H相对于P的Schur补数(表示为H/P),以消除反深度变量

请添加图片描述
得到的矩阵(H/P)被称为缩小的摄像机矩阵

上述公式中的方程组只取决于关键帧的位置

因此,我们首先使用(H/P)=LLT的Cholesky分解来解决姿势问题, 使用前置和后置替代

然后用得到的姿势解∆ξ来反求逆深度图∆d
请添加图片描述
2. 逆向深度不确定度估算

鉴于Hessian的稀疏模式,我们可以有效地提取每个像素深度变量所需的边际协方差。逆深度图Σd的边际协方差为:

请添加图片描述
其中ΣT是姿势的边际协方差

不幸的是,H/P的完全反转计算起来很费劲

尽管如此,由于我们已经通过将H/P分解成Cholesky因子解决了原始的BA问题,我们可以通过以下方式重新使用它们

请添加图片描述
其中:

请添加图片描述
因此,我们只需要反转下三角的Cholesky因子L,这是一个通过代入计算的快速操作

我们可以有效地计算所有的逆矩阵

P的逆是由每个对角线项的元素反转得到的

我们通过反转其Cholesky因子来避免对(H/P)进行完全反转

然后,只需将矩阵相乘和相加即可

请添加图片描述
3. 深度上采样与不确定性传播

最后,由于我们希望有一个与原始图像相同分辨率的深度图

我们使用Raft中定义的并在Droid中使用的凸上采样运算对低分辨率深度图进行上采样

这种上采样操作通过对低分辨率深度图中相邻的深度值进行凸组合

为高分辨率深度图中的每个像素计算深度估计值。得到的深度估计值对每个像素来说都是通过以下方式给出的

请添加图片描述
其中wi是学习到的权重(更多细节可以在Raft中找到)

di是我们要计算深度的像素周围的低分辨率反深度图中一个像素的反深度(用一个3×3的窗口来采样相邻的深度值)

假设逆向深度估计之间是独立的,由此产生的逆向深度方差由以下公式给出:

请添加图片描述
其中wi是公式中用于反深度加样的相同权重,σ 是要计算的像素周围的低分辨率反深度图中一个像素的反深度的方差

我们对反深度和不确定度进行了8倍的放大,从69×44的分辨率到512×384的分辨率

到目前为止,我们一直在处理逆向深度,最后一步是将它们转换为实际深度和深度变异

我们可以通过使用非线性不确定性传播轻松地计算出深度方差

请添加图片描述
请添加图片描述
4. 不确定性的体素建图

鉴于每个关键帧都有密集的深度图,因此有可能建立一个密集的场景三维网格

不幸的是,由于其密度,深度图是非常嘈杂的,因为即使是没有纹理的区域也会被赋予一个深度值

体积上融合这些深度图可以减少噪音

但重建仍然不准确,并受到人工制品的破坏(见图4中的"基线",它是通过融合图1中的点云计算出来的)

虽然可以在深度图上手动设置过滤器

而且Droid实现了一个临时的深度过滤器

但我们建议使用估计的深度图的不确定性,这为重建场景提供了一个强大的、数学上合理的方法

体积融合以概率模型为基础,每个深度测量被假定为独立和高斯分布

在这种表述下,我们试图估计的带符号的距离函数(SDF)φ最大限度地满足以下可能性

请添加图片描述
请添加图片描述
请添加图片描述
在实践中,对于每一个新的深度图,加权平均数都是增量计算的

通过更新体积中的体素,用一个运行平均数,导致熟悉的体素重建方程式

请添加图片描述
其中Wi是存储在每个体素中的权重

权重初始化为零,W0=0,TSDF初始化为截断距离τ,φ0=τ(在我们的实验中,τ=0.1m)

上述表述作为一个运行中的加权平均,在使用的权重函数方面非常灵活

这种灵活性导致了许多不同的融合深度图的方法,有时会偏离其概率性的表述

请添加图片描述

5. 带有不确定性界限的网格划分

鉴于我们的体素对有符号的距离函数有一个概率上合理的不确定性估计

我们可以提取不同水平的允许最大不确定性的等值面

我们使用行进立方体来提取表面,只对那些不确定性估计值低于最大允许不确定性的体素进行网格划分

由此产生的网格只有具有给定的不确定性上限的几何体,而我们的体积包含所有的深度图信息

如果我们将不确定性边界设置为无穷大,即权重为0,我们就会恢复基线解决方案,这是极其嘈杂的

通过逐步减少约束,我们可以在拥有更准确但不完整的三维网格之间取得平衡,反之亦然

在实验中,我们没有试图为我们的方法找到一个特定的帕累托最优解

而是使用了一个固定的不确定度的最大上限0.1

这导致了非常精确的三维网格,但在完整性上有轻微的损失

请注意,如果不固定比例,这个不确定性约束是无单位的,可能需要根据估计的比例来调整


实验

请添加图片描述
请添加图片描述

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

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

相关文章

Vue如何高效通过JSX动态渲染组件

一、明确需求 如何渲染动态组件呢? 有一组数组结构如下: const arr [ { tag: van-field },// 输入框{ tag: van-cell }, // 弹出层{ tag: van-stepper } // 步进器 ] 想通过循环arr,拿到tag渲染对应的组件。 下面我们分析如何写才是最优。…

高校数据可视化(智慧校园)

教育数据可视化大屏有哪些内容? 教育数据可视化大屏能够展示和分析很多数据,比如:在校生数据分析、招生数据分析、就业数据分析、教职工数据分析,科研数据分析等综合数据分析。 跟传统的教学不同,现代教育对效果的要求…

03.字符函数和字符串函数

C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。 1. 函数介绍 1.1 strlen size_t strlen ( const char * str ); ✳字符串以 \0 作…

python虚拟机集锦(2)-垃圾收集算法(2)

目录识别参考循环为什么移动无法访问的对象更好正在销毁无法访问的对象优化:世代收集最古老的一代识别参考循环 当GC启动时,它在第一个链接列表中拥有所有要扫描的容器对象。目标是移动所有无法到达的对象。由于大多数对象都是可访问的,因此…

【回首2022,展望2023,兔年你好!】

兔年到,新年好!提前祝各位程序猿新年好!新的一年,意味着新的开始。回顾2022,我学习从0基础萌新,蜕变成学习完c语言,有了基础代码能力的新手。从第一个printf出来hello world,打印到屏…

jpg图片损坏怎么修复?可以试试这个方法

生活中,相信不少小伙伴在使用电脑或手机时,难免会遇到这样的问题,就是保存的图片损坏了,看不到图像了。在出现图像损坏后,我们经常问自己的第一个问题是,有什么办法可以修复它们,之前小编也是遇…

回收租赁商城系统功能拆解11讲-会员分组

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格,后台调整最终回收价,用户同意回收后系统即刻放款,用户微信零…

MySQL监控(三):Grafana入门

1.官方文档 Grafana 安装包下载地址 基于Prometheus、Grafana的可视化监控实践 grafana安装部署、自定义主题、dashboard模板导入 Grafana Dashboard下载 2.安装 我是通过压缩包的方式安装的,官网也有给出yum的安装方式。 wget https://dl.grafana.com/enterpri…

【Javascript】面向对象编程,this,原型与原型链,类与实例,class,Maps

❤️ Author: 老九 ☕️ 个人博客:老九的CSDN博客 🙏 个人名言:不可控之事 乐观面对 😍 系列专栏: 文章目录对象中的方法/thisthis使用bind函数原型原型链类与实例classclass语法补充Map对象中的方法/this …

【设计模式】结构型模式·代理模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易,如果您觉得写的不错,欢迎给博主来一波点赞、收藏~让博主更有动力吧! 一.概念 由于某些原因访问对象不适合或者不能直接引用目标对象,这时可以为目标对象…

可视化VIT中的注意力

2022年, Vision Transformer (ViT)成为卷积神经网络(cnn)的有力竞争对手,卷积神经网络目前是计算机视觉领域的最先进技术,广泛应用于许多图像识别应用。在计算效率和精度方面,ViT模型超过了目前最先进的(CNN)几乎四倍。 ViT是如何…

【C++】面向对象---多态(万字详解)

🔥🔥 欢迎来到小林的博客!!       🛰️博客主页:✈️小林爱敲代码       🛰️文章专栏:✈️小林的C之路       🛰️欢迎关注:&#x1f44d…

SIMD性能优化

文章目录前言MMXSSEAVX使用内置函数使用SSE/AVX命名规则SSE/AVX操作类别实战汇编使用优化前代码详解优化后代码详解引用文章#mermaid-svg-sNu7iEVk2jpyjjtX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#fff;}#mermaid-svg-sNu7iEVk2…

【黑马学成在线2023版】解决P7创建父工程时Maven的pom文件依赖爆红问题(亲测有效)

本期目录问题描述解决方案问题描述 感谢黑马贡献的高质量视频教程《学成在线》微服务项目。笔者在学到《P7-创建父工程基础工程》时&#xff0c;直接粘贴黑马老师的 pom 文件中的依赖会出现依赖的 <artifactId> 和 <version> 爆红&#xff0c;显示无法找到依赖的错…

vite学习笔记

vite 1.vite是什么&#xff1f; 基于ES-Module的前端构建工具 2.为什么选择vite&#xff1f; 在浏览器支持 ES 模块之前&#xff0c;JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。 缓慢的服务器启动 当冷启动开发服务器时&#xff0c;基于打包器的方式…

YOLOv8来啦!YOLO内卷期模型怎么选?9+款AI硬件如何快速部署?深度解析

在这新春佳节到来之际&#xff0c;回顾整个虎年&#xff0c;堪称YOLO内卷元年&#xff0c;各路YOLO系列神仙打架&#xff0c;各显神通。一开始大部分用户做项目做实验还是使用的YOLOv5&#xff0c;然后YOLOv6、YOLOv7、PP-YOLOE、DAMO-YOLO、RTMDet就接踵而至&#xff0c;于是就…

SpringBoot原理解析

目录 一、Profile功能 &#xff08;一&#xff09;、application-profile功能 &#xff08;二&#xff09;、Profile条件装配功能 &#xff08;三&#xff09;、profile分组 二、外部化配置 &#xff08;一&#xff09;、外部配置源 &#xff08;二&#xff09;、配置文…

消息队列 ---nsq

设计 topic和channel 单个nsqd实例旨在一次处理多个数据流。流称为“主题”&#xff0c;一个主题有 1 个或多个“通道”。每个通道都会收到一个主题的所有消息的_副本_。 主题和通道道_不是_提前配置的。主题是在首次使用时通过发布到指定主题或订阅指定主题的通道来创建的。…

如何看懂行业分析报告?

从下面几部分聊聊行业分析&#xff1a;1.什么时候需要做行业分析&#xff1f;2.如何做行业分析&#xff1f;3.案例学习4.在工作中如何应用&#xff1f;5.在生活中如何应用&#xff1f;1.什么时候需要做行业分析呢&#xff1f;当你在对自己进行职业规划的时候&#xff0c;会思考…

【SpringCloud15】SpringCloud Stream消息驱动

1.消息驱动概述 1.1 为什么要引入消息驱动 1.2 是什么 概述&#xff1a;屏蔽底层消息中间件的差异&#xff0c;降低切换成本&#xff0c;统一消息的编程模型 官网 Spring Cloud Stream是用于构建与共享消息传递系统连接的高度可伸缩的事件驱动微服务框架&#xff0c;该框架提…