基于激光雷达和单目视觉融合的SLAM和三维语义重建

news2025/4/6 1:06:15

文章:SLAM and 3D Semantic Reconstruction Based on the Fusion of Lidar and Monocular Vision

作者:Lu Lou, Yitian Li, Qi Zhang and Hanbing Wei

编辑:点云PCL

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

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。

摘要

基于单目相机和激光雷达是无人车中最常用的两种传感器。将这两者的优势结合起来是SLAM和语义分析的当前研究重点。本文提出了一种基于激光雷达和单目视觉融合的改进型SLAM和语义重建方法,将语义图像与低分辨率的3D激光雷达点云进行融合,生成稠密的语义深度图。通过视觉里程计,选择具有深度信息的ORB特征点来提高定位精度。该方法利用并行线程在定位无人车的同时融合3D语义点云,在公开的CityScapes和KITTI视觉里程计数据集上进行了实验,结果显示与ORB-SLAM2和DynaSLAM相比,我们的定位误差减少了约87%;与DEMO和DVL-SLAM相比,定位精度在大多数序列中有所改善。并且三维重建质量优于DynSLAM并包含语义信息,该方法在无人车领域具有工程应用价值。

主要贡献

本文提出了一种基于激光雷达和单目视觉融合的SLAM和三维语义重建方法,该方法能够方便高效地将单目图像和激光雷达点云融合应用于户外环境。结合图像特征和精确的深度信息,实现了无人车的鲁棒高精度定位,并将语义图像和激光雷达点云结合起来,在一种方便直观的方法中重建大型户外场景的高质量三维地图。主要贡献如下: 

(1)提出了一种投影和插值方法,将低密度激光雷达点云与语义分割图像进行融合,将点云与语义图像对应的部分进行语义化。 

(2)提出了一种基于激光雷达和单目视觉融合的SLAM方法,利用上采样的点云为图像特征点提供深度信息,提高定位精度。 

(3)为了解决地图稀疏性问题,提出了一种三维密集重建方法,利用融合的数据在定位的同时重建密集的语义地图,实现了对户外环境的精细重建。

主要内容

图1表示该方法的整体框架,包括以下步骤:

(1)语义分割。使用经过BiSeNetV2训练的模型对KITTI Visual Odometry数据集的第i帧2D单目图像序列进行语义分割,得到第i帧语义2D图像。

(2)融合。通过标定参数,将第i个3D激光雷达点投影到对应的第i个语义2D图像中,生成第i个语义稀疏3D深度图。

(3)插值。使用深度插值算法对语义稀疏3D深度图进行上采样,使低分辨率的激光雷达点与ORB特征点匹配,输出第i个稠密3D点深度图。

(4)定位和优化。使用多线程并行执行实时定位与建图(ORB-SLAM2),生成姿态/轨迹和语义3D点云重建。(5)噪声过滤。将姿态组合以重建单帧3D点云,并使用统计滤波器排除异常值。

(6)增量地图配准。利用姿态信息,逐帧增量拼接3D点云,获得过度3D点云重建。

(7)冗余过滤。使用体素网格滤波器减少冗余,得到完整的语义3D点云重建,包括完整的姿态和轨迹地图。

97f301dd4f2ca59d8db28da2e0bcfa5d.png

图1. 所提方法的整体框架

A 数据融合与深度插值

首先,我们将激光雷达点云投影到相机坐标系中,得到与单目图像对应的稀疏深度图。然后,利用深度插值算法对这个稀疏深度图进行上采样,以得到与单目图像分辨率相匹配的密集深度图。通过这个过程,我们能够获得更丰富的深度信息,从而提高后续定位和建图的准确性。具体而言,我们使用透视投影方法将激光雷达点云投影到相机坐标系中,得到点云在相机视野下的位置。然后,通过深度插值算法,对这些点进行插值处理,填充缺失的深度信息,得到密集的深度图。在这个过程中,我们还将语义图像中的标签存储在对应的点云通道中,以获得语义信息的融合。通过数据融合与深度插值,我们能够有效地将激光雷达和单目视觉的信息结合起来,提供更完整、更精确的深度信息,为后续的定位和建图任务奠定基础。

B 定位和BA优化

视觉里程计(Visual Odometry,VO)是视觉SLAM算法的前端部分,主要通过图像计算机器人的位姿。它基于连续图像的信息估计相机的粗略运动,并为后端提供一个良好的初始值。视觉里程计通过分析相邻图像之间的特征点匹配和运动估计来推测相机的运动。在视觉里程计的计算过程中,首先提取相邻图像中的特征点,并根据这些特征点的匹配情况计算相机的运动向量。这个运动向量描述了相机从一个位置到另一个位置的运动轨迹。然后,通过对这些运动向量进行积分,可以得到相机相对于初始位置的位姿变化。视觉里程计的定位结果为后端的后续优化提供了一个良好的初始值。后端优化通常采用基于图优化的方法,比如Bundle Adjustment(BA),通过最小化重投影误差来优化相机的位姿和三维点云的位置。在BA优化过程中,会综合考虑所有观测到的特征点和它们在相机中的投影位置,以最优化相机位姿和三维点云的估计值。通过定位和BA优化,我们能够进一步提高视觉SLAM算法的精确性和鲁棒性。视觉里程计提供了初始的位姿估计,而BA优化通过最小化重投影误差进一步优化位姿和点云的估计值,使得SLAM系统的重建结果更加准确和可靠。

5592ad30faf452f463c99fc6d46245f7.png

图2:重投影误差的示意图

C 3D语义重建

在完成视觉里程计和后端优化之后,我们利用具有语义信息的密集深度图来对室外环境进行大规模的3D地图重建。首先,通过视觉里程计的结果和后端优化的姿态信息,我们能够获取每一帧的相机位姿和路径。接着,我们利用这些信息对每一帧的密集深度图进行姿态对齐,将它们对齐到同一个参考坐标系下。然后,我们将对齐后的密集深度图进行点云重建,得到每一帧的3D点云。在这个过程中,我们利用语义图像中的标签信息对点云进行语义化,将语义信息与几何信息相结合。最后,我们通过对每一帧的点云进行融合和优化,得到大规模的室外环境的完整3D地图。在融合过程中,我们使用姿态对齐后的点云进行增量式地拼接,以获得更丰富、更准确的地图重建结果。通过3D语义重建,我们能够在室外环境中生成带有语义信息的高质量3D地图。这些地图可以被用于环境理解、导航规划和目标感知等应用中,为无人车和无人机等自主系统提供重要的场景理解能力。

df184def34c4c7ce4cd5ad44cb876c9d.png

基于激光雷达和单目视觉融合的SLAM和3D语义重建方法如算法1所示,对应于图1。

实验与分析

本文的实验平台由Intel Xeon E3-1230 CPU、Nvidia GTX1080Ti GPU和16GB内存组成,并搭载Ubuntu 16.04操作系统。我们使用公开的KITTI Visual Odometry [9]和CityScapes [29]数据集进行实验。KITTI Visual Odometry数据集是一个广泛使用的用于视觉定位和SLAM研究的数据集,包含了在城市环境下采集的多帧图像序列和对应的激光雷达点云数据。CityScapes数据集则是一个用于语义分割和场景理解的数据集,提供了大规模城市场景的图像和语义标签。

66138ff302546effcc2c5e9f0f9c0475.png

图 3. KITTI Visual Odometry数据集中的语义分割结果

表1显示了BiSeNetV2在CityScape数据集上训练的18种对象的准确性。从表中可以看出,面积较大的对象的识别效果较好。

777d489772816ca26752627418777497.png

图4展示了原始RGB图像和密集深度图的比较。我们将稀疏的激光雷达扫描投影到语义图像上,然后对融合数据进行深度插值。在深度图中,远处的黑洞区域是激光雷达扫描范围之外的区域,距离车辆位置120米。因为远离的物体和天空无法将发射的点云反射到激光雷达扫描仪上,同时受到KITTI数据采集车上配备的Velodyne64的垂直视场(26.8°)的限制,导致深度图的1241×150区域的顶部信息丢失。然而,由于我们的方法专注于交通场景,缺失区域中的建筑物屋顶和天空并不重要。

93ad5e4d13a3db4cacd3a59ec4acd45d.png

图4. 原始图像与稠密的深度图的对比

我们在这些数据集上进行了一系列实验,评估了提出的方法在定位精度、建图质量和语义信息融合等方面的性能。通过对比分析,我们能够验证方法的有效性和优越性,并得出结论和实验结果。实验过程中,我们关注定位误差的减小、建图质量的提高以及语义信息的融合效果。通过对多个场景和序列的实验数据进行统计和分析,我们能够全面评估方法在不同情况下的性能表现,并对比其他已有的方法进行对比。

6902fc53be7379a5c8aabb53d6b5a91d.png

图5. 在不同序列中估计轨迹与真实值的对比。(a) 序列00中的对比,(b) 序列01中的对比,(c) 序列05中的对比,(d) 序列07中的对比。

3D语义重建效果

ac481df0e801e3a6fd43ce6010e5464f.png

2a413a81b1bd0268d7bc684a9cf448b8.png

cf02840cfc23ea9ccdea4b50bf94cd94.png

75485fc9180af2e356ab9a29e191b028.png

a15877d8d81694c9c13aeaffc9c3ff2c.png

总结

本文提出了一种基于激光雷达和单目视觉融合的SLAM和三维语义重建方法。设计了一种深度插值算法,并使用语义分割网络BiSeNetV2实现了语义图像和激光雷达扫描的融合,激光雷达点提供的准确深度信息用于优化基于特征的V-SLAM的定位精度。我们还添加了一个稠密建图线程,通过结合姿态和语义信息,同时重建室外场景的三维语义地图并定位无人车,通过在KITTI Visual Odometry数据集上进行实验验证,我们得出以下结论: 

(1)基于投影和插值方法,实现了稀疏激光雷达点云的上采样,并与高分辨率的2D图像进行融合。语义分割图像用于提供语义信息。实验结果表明,融合后的数据具有高分辨率和可见性,并可用作后续算法的操作和实验验证的输入。 

(2)该方法与基于视觉的SLAM方法和激光视觉融合SLAM方法进行了比较,并在KITTI Visual Odometry数据集上进行了实验。结果显示,与ORB-SLAM2和DynaSLAM相比,我们的方法在所有11个序列中的定位误差大大降低。与DEMO和DVL-SLAM相比,基于激光视觉融合,我们的方法的定位精度也有所提高。 

(3)在三维重建方面,与在Google Earth中测量的数据相比,重建的物体宽度差异小于0.5%。与用于室外环境三维重建的DynSLAM相比,我们的重建质量更高,存储空间要少76%,地图表示可以随时间连续更新。同时,生成的语义重建具有可被人类理解的标签,可以更好地支持未来自动驾驶技术的实际应用。

更多详细内容后台发送“知识星球”加入知识星球查看更多。

3D视觉与点云学习星球:主要针对智能驾驶全栈相关技术,3D/2D视觉技术学习分享的知识星球,将持续进行干货技术分享,知识点总结,代码解惑,最新paper分享,解疑答惑等等。星球邀请各个领域有持续分享能力的大佬加入我们,对入门者进行技术指导,对提问者知无不答。同时,星球将联合各知名企业发布自动驾驶,机器视觉等相关招聘信息和内推机会,创造一个在学习和就业上能够相互分享,互帮互助的技术人才聚集群。

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

22bea2bfe61ed5eede5f3237391d336e.png

扫描二维码

                   关注我们

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

分享与合作方式:微信“cloudpoint9527”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。

为分享的伙伴们点赞吧!

01ad001c9a8f21b1f9ec1396e39d568b.gif

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

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

相关文章

领导说培养我,怎么看出来他是真培养,还是PUA我?

当你的领导说要培养你的时候,如何分辨他的真实意图? 一位网友问: 领导说培养我,怎么看出来他是真培养,还是PUA? 来看看这位网友的支招: 如果领导做到以下几点,那就是真的培养你。 1.…

实战记录01(QT连接MySQL显示未加载问题解决)

进入实战 学了这么几天就要开发新项目了,所以可能不会每日记录吧,遇到问题可能就发一下, 昨天是又重新写了一个登录和管理界面,写完之后就可以开始链接数据库了。 QT连接MYSQL报错 我一开始是在.pro文件中加上了 QTsql QTmysq…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(5月31日论文合集)

文章目录 一、检测相关(10篇)1.1 Table Detection for Visually Rich Document Images1.2 DENTEX: An Abnormal Tooth Detection with Dental Enumeration and Diagnosis Benchmark for Panoramic X-rays1.3 TrueDeep: A systematic approach of crack detection with less dat…

C++ STL源码下载及目录结构

掌握一定的c基础,想更深入的了解STL源码实现的读者,可以参照本文下载源码阅读 1、源码下载 ​ SGI STL版本(侯捷老师推荐):https://github.com/dongyusheng/csdn-code/tree/master/STLgcc STL:GitHub - gc…

使用 Docker 部署 Jenkins 代理(主从)控制服务器

自动化是 DevOps 的核心。各种自动化工具和技术真正实现了持续集成和持续交付的概念。这些工具多年来发展迅速,但似乎永远存在的一个名字是Jenkins。 我们不会在这篇文章中讨论 CI-CD 的介绍性概念,也不会浪费时间展示 Jenkins 安装步骤。如果您是 Jenk…

Go1.21 速览:骚操作 panic(nil) 将成为历史!以后别这么干了。。。

大家好,我是煎鱼。 在 Go 语言中,返回错误、抛出异常一直是大家比较关注的话题。在抛出异常上,我们一般都是这么用的: func mayPanic() {panic("脑子进煎鱼了") }func main() {defer func() {if r : recover(); r ! nil…

Vagrant编排虚拟机安装与配置

1.安装VirtualBox与Vagrant VirtualBox与Vagrant是支持不通过操作系统的;根据具体操作系统下载对应版本即可。(这里使用windows操作系统搭建) VirtualBox https://www.virtualbox.org/wiki/Downloads Vagrant https://developer.hashicorp.com/vagrant/downloads Va…

设计模式之~状态模式

状态模式(State),当一个对象的内部状态改变时允许改变其行为,这个对象看起来像是改变了其类。 能够让程序根据不同的外部情况来做出不同的响应,最直接的方法就是在程序中将这些 可能发生的外部情况全部考虑到&#xff…

基于html+css的图展示102

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

应用运维的三个项目

应用运维 目录概述需求: 设计思路实现思路分析1.开发和运维2.比重3.历史项目4.工作内容5.历程 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,…

程序员的新出路:维护老项目?

1 张大胖刚进入公司,遇到了一个神奇的同事:何小痩。 别人工作都很忙, 何小痩工作似乎特别轻松,从来不加班,到点儿就回家。 张大胖向别人一打听,原来何小痩一直在维护一个老项目,维护了5年了。 …

「小产品独立变现实战训练营1期」门票限时优惠

大家好,我是凯凯刘,一名程序员,一直在做小产品的开发变现,目标就是让小产品的变现更简单。【小产品独立变现实战训练营1期】这个课程主要是围绕着如何开发出一个赚钱小产品这个主题。来跟大家一起从0开始实战,一步步跟…

为什么对象存储深度归档价格低?

AWS(亚马逊云服务)对象存储S3(Simple Storage Service)有以下四种不同的存储类型: S3 标准存储: 这是最常用的S3存储类型之一,它保证了高持久性,并提供 99.999999999% 的数据耐久性…

chatgpt赋能python:Python人脸识别:从入门到工程实践

Python人脸识别:从入门到工程实践 介绍 近年来,人脸识别技术越来越成熟,广泛应用于各行各业,如社交媒体、安防、金融等领域。Python人脸识别作为一种基于机器学习的技术,可以通过训练模型从图像中自动识别出人脸,并进…

致敬六一,用外观模式实现一个儿童乐园畅玩平台

一、概述 外观模式(Facade Pattern)是一种结构型设计模式,它为多个子系统中的操作提供一个统一的高层接口,用于访问复杂子系统的功能。其核心思想是通过一个外观类将子系统的复杂操作进行封装,客户端只需与外观类进行…

IO 多路复用是什么意思?Redis中的IO又是什么?

点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 本文首发于我的知乎:https://zhuanlan.zhihu.com/p/632776455 当你打开电脑,任何时候都在进行着IO的操作! 比如一次 API 接口调用、向磁盘写入日志信息&…

[数据结构习题]栈——中心对称链

[数据结构习题]栈——中心对称链 👉知识点导航💎:【数据结构】栈和队列 👉[王道数据结构]习题导航💎: p a g e 70.4 page70.4 page70.4 本节为栈和链表综合练习题 题目描述: 🎇思路…

Semaphore线程信号量

文章目录 前言一、Semaphore 是什么?定义对比 二、使用步骤1. 场景分析2. 编码如下 总结 前言 Semaphore 也是juc中的一个关键类,他与之前的lock 类似,也有公平和非公平两种,它与他们应用含义,引用场景有很大的不同; 与阻塞队列类似,但是也不一样;听我细细道来~ 一…

MTK capture 拍照流程

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、多帧拍照请求概览二、多帧拍照回帧概览 一、多帧拍照请求概览 多帧拍照请求概览如下: 多帧拍照请求 1.1 APP 下发拍照请求到 Camera Fr…

新Linux服务器安装Java环境[JDK、Tomcat、MySQL、Nacos、Redis、Nginx]

文章目录 JDK服务Tomcat服务MySQL服务Nacos服务Redis服务Nginx服务 说明:本文不使用宝塔安装 温馨提示宝塔安装命令:yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh JDK服务…