基于道路标线的城市环境单目定位

2024-08-25 06:08

本文主要是介绍基于道路标线的城市环境单目定位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章:Monocular Localization in Urban Environments using Road Markings

作者:Yan Lu Jiawei Huang Yi-Ting Chen Bernd Heisele

编译:点云PCL

本文仅做学术分享,如有侵权,请联系删除。欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈。内容如有错误欢迎评论留言,未经允许请勿转载!

对本文以及俯视图生成点云,及点云路标地图感兴趣的。与此相关的内容分享有:

AVP-SLAM:自动泊车系统中的语义SLAM

RoadMap:面向自动驾驶的轻型语义地图视觉定位方法

LaneLoc:基于高精地图的车道线定位

其中有很多地方可以讨论交流,欢迎各位大佬赐教!同时公众号也将分享更多与此类型相关的文章,包括其引用文献,敬请期待。

欢迎自动驾驶行业的小伙伴,按照“姓名+学校/公司”备注,添加微信“ly920177957”交流或者加入群聊。

摘要

定位问题是自动驾驶汽车自主导航的一个基本问题,本文提出了一种基于单目视觉的道路标记定位方法,利用道路标记作为地标,而不是传统的视觉特征(如SIFT)来解决定位问题,因为道路标记对时间、季节、视角和照明变化更具鲁棒性,具体来说是使用倒角匹配将从图像中检测到的道路标记边界配准到轻型3D地图上,其中道路标记表示为一组稀疏点,仅通过匹配道路几何图形,我们的光度匹配算法的鲁棒性将进一步提高,此外,还考虑了车辆里程计和极线几何约束,并提出了一个非线性优化问题来估计6自由度相机的姿态,采集的现实的数据评估了所提出的方法,实验结果表明,该方法在有足够道路标线的区域实现了亚米级的定位误差。

主要内容

在这项工作中,主要利用一个单目相机实现定位,地图不是由相机生成,该地图通过在配准3D激光雷达点云创建的场景环境后手动标记地标来构建,如图1所示

图1 :(a)我们提出的基于优化的定位系统概述

          (b) 通过优化获得的相机位姿,将点云(红点)投影到相机视图中。

该地图由地标(如道路标记)的稀疏3D点云组成,这里只匹配道路特征的几何体,而不是光度学,原因有两个,首先,该地图不包含很多关于地标的外观信息;其次,匹配几何体允许针对外观或照明变化进行鲁棒定位,在本文中提出了一种在给定地图内跟踪6自由度相机姿态的方法,给定一幅图像,该系统检测道路标线的边缘,并计算检测到的边缘与图像空间中投影的道路标线点之间的倒角距离,然后,提出了一个非线性优化问题来估计摄像机的姿态,该公式包含倒角距离、车辆里程计和极线约束的信息,我们的系统还检测定位失败,并在失败后重新定位自身,实验结果表明,该方法在有足够道路标线的区域实现了亚米级的定位误差。

A 地图

本文的地图由地图公司提供,由各种元素组成,包括道路标记、路沿、交通标志等,在本文中,我们仅使用两种类型的道路标记:实线和虚线。如图所示,实线通常来自车道或人行横道边界,而折线通常存在于车道之间,选择地图元素子集的理由有两个,首先,它们比限速标志和转向箭头等其他元素更容易被观察到,其次,由于其独特的外观(与路沿相比)和较大的尺寸(与交通标志相比),它们相对容易从图像中检测出来。

用于定位的道路要素地图

“道路标记”仅指选定类型的道路标记,道路标记简明地存储在文本文件中,并按地理位置分组,如图所示,道路标记特征由一组3D点(沿其中心线采样)以及其他信息(如宽度和颜色)表示。

道路要素的存储形式表达

B.特征检测

通过提取道路标记的轮廓来进行边缘提取,在这里,采用了基于随机森林的边缘检测器,并使用我们自己的图像数据对其进行重新训练,随机森林是独立决策树的集合,每个树都有相同的输入样本,并通过将其从根节点向下传播到叶节点来对其进行分类,通过给出一个初始未经训练的具有多个输入输出映射的决策树,其内部分裂函数的参数将逐渐演化并产生相似的输入输出映射,通过定义信息获取标准,可以实现此学习过程。

C 特征匹配

根据里程计信息,我们可以在时间k预测相机的姿势p0k,然后将道路标记点投影到图像空间,为了评估投影点与检测到的特征的匹配程度,使用了倒角匹配,该匹配基本上将每个投影点与最近的边缘像素相关联,通过距离变换可以有效地计算倒角距离,为了说明方向,根据边缘像素的梯度方向将其划分为不同的组,并相应地计算距离变换。

D 地图检索

给定预测的相机位置,从地图中选择距离相机一定距离(80m)内的道路标记子集,由于我们没有来自地图的中心岛信息,我们无法预测是否存在遮挡,除非使用复杂的视觉技术,我们解决这个问题的方法是,在宽阔的道路上(超过15米),只在车辆行驶的一侧使用道路标记,这是因为即使是宽阔道路的一侧也有多条车道,因此有足够的道路标记用于定位。

E 优化

为了估计相机的姿态,我们不仅使用了 Chamfer匹配,还考虑了其他约束。如下:

  • Chamfer distance

  • Epipolar constraint

  • Odometry constraint

  • Optimization formulation

实验

A 特征检测测试

我们将的道路标记检测结果与以下算法进行比较:Canny边缘检测、由RF-org表示的原始基于随机森林的边缘检测器和车道标记检测(LMD)算法,我们使用RF-re表示使用我们的道路标记数据重新训练的基于随机森林的边缘检测器。其结果对比如下

用于特征检测比较的样本图像

边缘检测算法的精度召回曲线比较

B 定位测试

左:定位测试图。右:测试路线叠加在谷歌地图上的显示

测试数据中面临的定位挑战

总结

定位问题是自动驾驶的关键问题,本文提出了一种基于单目视觉的道路标线定位算法,我们选择道路标记作为定位的地标,而不是传统的视觉特征(如SIFT),因为道路标记对时间、视角和照明变化更具鲁棒性,这里采用Chamfer匹配将图像中检测到的道路标记与其在轻型地图中的表示进行配准。我们进一步考虑了车辆里程计和极线几何约束,并制定了一个非线性优化问题,以获得6自由度相机姿态。我们根据真实环境中收集的数据对所提出的方法进行了评估,实验结果表明,尽管数据收集间隔数月,我们的方法实现了亚米定位误差,同时,我们知道,当道路标线缺失或稀疏时,提出的的方法将不适用,因此,我们将研究在未来使用其他类型的地标来实现更稳健的定位。

资源

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

【点云论文速读】基于激光雷达的里程计及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方法介绍

如果你对本文感兴趣,请后台发送“知识星球”获取二维码,务必按照“姓名+学校/公司+研究方向”备注加入免费知识星球,免费下载pdf文档,和更多热爱分享的小伙伴一起交流吧!

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

扫描二维码

                   关注我们

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

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

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

这篇关于基于道路标线的城市环境单目定位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装