在结构化场景中基于单目的物体与平面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

相关文章

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java