在结构化场景中基于单目的物体与平面SLAM方案

2024-08-25 06:18

本文主要是介绍在结构化场景中基于单目的物体与平面SLAM方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点云PCL免费知识星球,点云论文速读。

文章:Monocular Object and Plane SLAM in Structured Environments

作者:Shichao Yang, Sebastian Scherer

翻译:particle

本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈分享快乐。

论文阅读模块将分享点云处理,SLAM,三维视觉,高精地图相关的文章。公众号致力于理解三维视觉领域相关内容的干货分享,欢迎各位加入我,我们一起每天一篇文章阅读,开启分享之旅,有兴趣的可联系微信dianyunpcl@163.com。

论文摘要

本文提出了一种基于高层次目标物体和平面关键特征的单目的SLAM算法。与基于特征点的SLAM相比,所构建的地图更密集、更具体、更有语义信息的地图。文章首先提出一个高层次的图形模型,在考虑遮挡和语义约束的情况下,从单个图像中联合推断三维物体和结构平面。在统一的SLAM框架下,利用摄像机姿态对获取的目标物体和平面进行进一步优化。与点特征相比,目标物体和平面可以提供更多的语义约束。在ICL-NUIM和TUM-Mono等不同的公共数据集和采集数据集上的实验表明,与最先进的SLAM算法相比,我们的算法可以提高摄像机定位精度,尤其是在没有环路闭合的情况下,该算法还能在许多结构化环境下稳健地生成稠密的地图。

使用单目相机重建关键点、物体(绿色框)、平面(红色矩形)的稠密SLAM贴图的示例结果。(顶部)ICL客厅数据集。(底部)收集的长廊数据集。

● 相关工作与介绍

在这项工作中,提出一个基于单目目标物体和平面的SLAM系统,没有先验的对象物体和房间形状模型。主要分为两个步骤。理解三维结构是第一步是,基于图像的几何特征和语义特征生成并优化结构平面和物体对象。第二步是多视图SLAM优化。在一个统一的捆集调整(BA)框架中,通过摄像机姿态和点特征进一步优化平面和物体。对象和平面提供了额外的语义和几何约束,以改进摄像机的姿态估计,优化并生成密集的三维地图。另一方面,精确的SLAM姿态估计提高了单图像的3D检测。综上所述,我们的贡献如下:

•一个高层次图形几何模型,具有高效的推理能力,可用于单图像三维结构理解。

•首个单目目标和平面SLAM,在SLAM方面均优于最先进的算法。

内容精华

单帧图像理解

将环境表示为一组长方体对象和结构化平面(如墙和地板)。目标是同时从二维图像推断出它们的三维位置。我们首先生成若干目标物体和假设平面,然后通过条件随机场(CRF)优化选择其中的最佳子集,如图所示

单图像三维物体和结构平面检测概述。首先生成许多高质量的对象和结构化平面,然后根据语义分割、交叉、遮挡等信息建立图形几何模型来选择最优子集。

为了表示平面,CNNs可以直接预测三维平面位置,但由于预测的布局可能与实际平面边界不完全匹配,可能会丢失一些细节。因此,测量不确定度大,不适合作为SLAM观测值。所以这里直接检测和选择更可靠和可重复性更好的地面与墙交界线段。

SLAM优化

利用单幅图像检测中选取的目标物和平面作为SLAM观测值,并通过多视点BA对摄像机姿态进行优化。并在SLAM过程中包含点特征,因为在环境中通常只有几个对象和平面,它们不能完全约束摄影机的姿势。

SLAM中的观测值。(a) 相机平面观测。将检测到的地面边缘反投影到三维空间,与地标平面进行比较。(b) 相机对象物体观测。将三维长方体地标投影到图像上,并与检测到的二维盒体进行比较。(c) 物体与平面测量误差取决于被平面遮挡的物体体积。

实验

对于目标检测,使用了与Object SLAM【1】类似的算法。Yolo检测器用于二维目标检测。对于平面检测,我们首先使用【2】检测线段并将其合并到长边上。Segnet【3】用于二维语义分割。然后我们过滤掉长度小于50像素且距离墙-地分割边界50像素以上的线。在视频情况下,单幅图像的三维检测采用SLAM姿态估计。对于SLAM部分,系统是建立在基于特征点的ORB SLAM之上的,通过对象和平面进行扩展。

单图像原始物体和面检测和CRF优化。

(a) 原始平面和预测的对象。(为了简洁起见,只绘制了一个长方体方案)

(b)原始方案的俯视图。红色矩形表示地面真实物体,蓝色表示估计值。检测的墙线是青色的。

(c) CRF选定检测到物体的俯视图。优化后的物体姿态更精确。平面和对象的相交和遮挡也会减少

(顶部)ICLNUIM办公室2和房间数据。(中)YUM-mono 36。(下)采集的长廊。红色矩形为平面边界,绿色长方体为对象。蓝色曲线是估计的摄像机轨迹。

总结

在这项工作中,我们提出了第一个单目SLAM和稠密SLAM算法,根据实验结果表明,语义场景理解和传统的SLAM优化方法可以互相促进。对于单幅图像,我们提出了一种快速的三维物体和结构化平面的联合理解方法。通过二维目标检测和边缘检测生成长方体和平面方案。然后提出一种高效的稀疏高阶CRF推理来选择最优方案。在SLAM部分,针对平面和物体设计了几种新的测量函数。与点相比,物体和平面可以提供远距离的几何和语义约束,如交集和支撑关系,以提高姿态估计。为了提高鲁棒性,提出了严格的外点剔除、鲁棒数据关联和优化方法。我们评估了SLAM算法在各种公共室内数据集(包括房间和走廊)中的性能。与现有的方法相比,我们的方法可以在大多数环境下改进摄像机的姿态估计和稠密地图。未来,除了墙平面外,还需要考虑更多的通用平面,以生成更密集、更完整的地图。动态对象和对象表面映射也可以用来提高鲁棒性和地图质量。

参考文献

【1】Shichao Yang and Sebastian Scherer. CubeSLAM: Monocular 3D object SLAM. IEEE Transactions on Robotics, 2019

【2】Rafael Grompone von Gioi, Jeremie Jakubowicz, Jean-Michel Morel, and Gregory Randall. LSD: A fast line segment detector with a false detection control. IEEE Transactions on Pattern Analysis & Machine Intelligence, (4):722–732, 2008.

【3】Vijay Badrinarayanan, Alex Kendall, and Roberto Cipolla. SegNet: A deep convolutional encoder-decoder architecture for image segmentation. IEEE transactions on pattern analysis and machine intelligence, 39(12):2481–2495, 2017

资源

三维点云论文及相关应用分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

3D目标检测:MV3D-Net

三维点云分割综述(上)

3D-MiniNet: 从点云中学习2D表示以实现快速有效的3D LIDAR语义分割(2020)

win下使用QT添加VTK插件实现点云可视化GUI

JSNet:3D点云的联合实例和语义分割

大场景三维点云的语义分割综述

PCL中outofcore模块---基于核外八叉树的大规模点云的显示

基于局部凹凸性进行目标分割

基于三维卷积神经网络的点云标记

点云的超体素(SuperVoxel)

基于超点图的大规模点云分割

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

【开源方案共享】ORB-SLAM3开源啦!

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM

易扩展的SLAM框架-OpenVSLAM

高翔:非结构化道路激光SLAM中的挑战

SLAM综述之Lidar SLAM

基于鱼眼相机的SLAM方法介绍

往期线上分享录播汇总

第一期B站录播之三维模型检索技术

第二期B站录播之深度学习在3D场景中的应用

第三期B站录播之CMake进阶学习

第四期B站录播之点云物体及六自由度姿态估计

第五期B站录播之点云深度学习语义分割拓展

第六期B站录播之Pointnetlk解读

[线上分享录播]点云配准概述及其在激光SLAM中的应用

[线上分享录播]cloudcompare插件开发

[线上分享录播]基于点云数据的 Mesh重建与处理

[线上分享录播]机器人力反馈遥操作技术及机器人视觉分享

[线上分享录播]地面点云配准与机载点云航带平差

点云PCL更多活动请查看:点云PCL活动之应届生校招群

扫描下方微信视频号二维码可查看最新研究成果及相关开源方案的演示:

如果你对本文感兴趣,点击“原文阅读”获取知识星球二维码,务必按照“姓名+学校/公司+研究方向”备注加入免费知识星球,星球可自由发言交流和分享。也可免费下载公众号分享的论文pdf文档,和更多热爱分享的小伙伴一起交流吧!

欢迎各位转发分享朋友圈,将公众号设置为星标,或点击“在看”以示鼓励和支持,让我们继续分享!

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入免费星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享及合作方式:联系微信“920177957”(需要按要求备注)联系邮箱:dianyunpcl@163.com,欢迎企业来联系公众号展开合作。

点一下“在看”你会更好看耶

这篇关于在结构化场景中基于单目的物体与平面SLAM方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104771

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程