经典文献阅读之--P2O-Calib(利用点对空间遮挡关系的相机-激光雷达标定)

news2024/11/27 18:45:18

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务,并且需要GPU资源,可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G的免费磁盘空间。通过链接注册并联系客服,可以获得20元代金券(相当于6-7H的免费GPU资源)。欢迎大家体验一下~

0. 简介

本文介绍了《P2O-Calib: Camera-LiDAR Calibration Using Point-Pair Spatial Occlusion Relationship》:利用点对空间遮挡关系的相机-激光雷达标定。传感器精确且鲁棒的标定结果被认为是自动驾驶和机器人领域中后续研究的一个重要组成部分。目前涉及3D激光雷达和单目相机之间外参标定的工作主要着重于基于目标和无目标的方法。基于目标的方法通常由于限制(例如额外的目标设计和目标放置限制)而离线使用。目前的无目标方法在各种环境中均存在特征不确定性和特征误匹配的问题。为了缓解这些限制,本文提出了一种新型的基于2D-3D边缘点提取的无目标标定方法,其使用3D空间中的遮挡关系。基于提取的2D-3D点对,我们进一步提出了一种遮挡引导的点匹配方法,其提升了标定精度并且降低了计算成本。为了验证本文方法的有效性,我们在KITTI数据集的现实图像上定性和定量地评估了方法的性能。结果表明,本文方法优于现有的无目标方法,实现了低误差和高鲁棒性,这有助于依赖高质量相机-激光雷达标定的实际应用。

1. 主要贡献

本文提出了一种新颖的无目标外部标定方法,该方法利用统一的2D-3D遮挡特征,在各种场景下实现了稳健的估计。对于摄像头图像的特征提取,我们之前的工作[15]引入了像素对遮挡关系的概念,使我们能够提取带有空间遮挡信息的图像边缘点。在这项工作中,我们利用遮挡关系的定义,在LiDAR点云上进行3D遮挡边缘提取,并开发了一种利用提取的2D-3D点对的新型标定方法。此外,遮挡关系为更稳健的跨模态特征关联提供了有益的指导,可以容忍来自摄像头-LiDAR外部参数初始猜测的更大误差。与在真实世界数据集KITTI上评估的先前工作相比,所提出的方法提高了摄像头-LiDAR外部标定的准确性和泛化能力。

这项工作的主要贡献包括:

  • 基于遮挡关系设计了系统化的摄像头-LiDAR外部标定流程。它适用于在线现场标定,并且无需外部标定目标。
  • 提出了一种新颖的点云特征提取方法及相应的2D-3D边缘特征匹配方法。所提出的方法利用定向遮挡信息减少了特征注册不匹配,并且对不完美的特征提取具有稳健性。
  • 在合成和实际数据集上的实验验证了所提出方法的有效性,包括消融实验以及对准确性、稳健性和泛化能力的检验。我们将发布我们的代码和数据集。

2. 具体方法

这一部分详细阐述了提出的摄像头-LiDAR外参校准方法。该流程包括三个步骤:首先,我们训练了一个P2ORNet神经网络,用于在RGB图像上进行像素级遮挡边缘识别,并从给定的点云中提取3D遮挡边缘。然后,我们提出了一种基于遮挡的匹配策略,用于在2D像素和3D点之间制定perspective-n-point(PnP)问题。随后,通过优化点到线的重投影误差,最终获得外参校准矩阵。图2勾勒了提出的框架,接下来的小节将详细介绍遮挡关系的定义以及每个组件中的方法。

在这里插入图片描述

图2. 所提出方法的架构。我们的方法首先从输入的2D-3D数据中提取2D-3D遮挡边特征点,然后应用遮挡引导的特征匹配来对齐它们。随后,对匹配的2D-3D点对进行优化,以恢复相机和激光雷达之间的外部参数。左右遮挡边点着以绿色和红色标记,而上下遮挡边点着以黄色和蓝色标记。为了清晰起见,在2D-3D特征匹配模块中仅可视化了左右遮挡边。最佳观看方式为数字版本。


3. 2D-3D点对定义

在本节中,我们正式定义了2D-3D遮挡边缘的概念,并使用遮挡关系来定义图像2D点和LiDAR 3D点之间的点对。如图3(a)所示,我们考虑一个位于 C C C处的摄像机和一个位于 L L L处的LiDAR,它们观察到3D场景的空间表面 ( S i , S j ) (S_i,S_j) SiSj,参考世界坐标系 W W W。从LiDAR坐标系 L L L到摄像机坐标系 C C C的SE(3)变换是 T L C T^C_L TLC,而在本工作中,估计 T L C T^C_L TLC的任务被定义为外部标定。我们注意到 q i q_i qi q j q_j qj是3D点 P i P_i Pi P j P_j Pj在表面 S i S_i Si S j S_j Sj上的摄像机图像平面2D投影(像素)。从 C C C L L L的角度来看, S i S_i Si S j S_j Sj的前面,遮挡边缘位于 S i S_i Si S j S_j Sj非遮挡部分的边界区域。在左侧遮挡边缘区域,我们将 q i q_i qi q j q_j qj标记为2D遮挡边缘特征点 P i P_i Pi P j P_j Pj则是3D遮挡边缘特征点。指向 q j q_j qj的黑色箭头表示 S i S_i Si3D空间中从右到左遮挡 S j S_j Sj的边缘区域。通过为每个像素对分配这样的方向,遮挡边缘特征点可以进一步分为具有不同方向的特征点(参见图3(b)),例如,在本示例中的左遮挡边缘特征点 q i q_i qi q j q_j qj。从表面之间的遮挡关系开始,我们在这里正式定义每个2D-3D点对由LiDAR捕获的3D特征点和摄像机捕获的2D特征点组成,例如 ( q i , P i ) (q_i,P_i) qiPi ( q j , P j ) (qj,Pj) qjPj

在这里插入图片描述

图3. 2D-3D遮挡边缘点对定义的示意图:(a) 图像左侧遮挡边缘区域标为绿色,对应的2D遮挡边缘点(例如, q i q_i qi, q j q_j qj)和3D遮挡边缘点(例如, P i P_i Pi, P j P_j Pj),(b):在存在三个物体1、2、3遮挡的情况下,图像左右遮挡边缘和上下遮挡边缘。

4. 图像中的遮挡边缘提取

  1. 图像连通性-8邻域:对于每个图像像素 q i q_i qi,它有8个直接相邻像素,包括4个水平/垂直相邻像素和4个对角线相邻像素。因此,一个图像像素可以与其8个相邻像素配对形成8个像素对。
  2. 2D遮挡边缘估计:如第3节所介绍的,3D中的表面对遮挡关系可以表示为2D中的像素对遮挡关系。对于每对有效的图像像素 ( q i , q j ) (q_i,q_j) qiqj,神经网络P2ORNet [15]对三种可能的遮挡关系状态进行分类 q i q_i qi遮挡 q j q_j qj q j q_j qj遮挡 q i q_i qi和( q i q_i qi q j q_j qj)之间没有遮挡。估计的图像遮挡边缘位于P2ORNet预测存在像素对之间遮挡的图像区域上。在本工作中,我们选择连接沿图像水平/垂直轴的像素对,并从预测结果中生成左右(L,R)和上下(U,B)遮挡边缘。我们将带有方向D的 Q D \mathbb{Q}^D QD图像2D遮挡边缘特征点集合,而 q i D q^D_i qiD是第 i i i个点。

在这里插入图片描述

…详情请参照古月居

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

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

相关文章

C#操作MySQL从入门到精通(19)——插入数据

前言: 谈到数据库,大家最容易脱口而出的就是增删改查,在本篇文章之前一直都是说的各种查询,本文就是说的增删改查中的增,所谓增也就是增加数据的意思,插入数据就是增加数据。 本文测试使用的数据库如下: 1、插入完整行 所谓插入完整行就是一行所有列的数据都是自己插…

hustoj二开

目录 1、路径问题2、开发问题&#xff08;1&#xff09;、mysql&#xff08;2&#xff09;、php 啊啊啊啊&#xff01;&#xff01;&#xff01;难崩&#xff1a; 路径问题搞了好长时间才明白了该项目的路径如何设置的 >_< ,&#xff0c;本文就路径问题&#xff0c;前端页…

Redis 单线程问题 BigKey问题

前言 简单的redis基础类型以及常用操作我们都也已经介绍过了 现在今天我们来谈谈redis对于单线程是需要怎么理解的 以及redis假设遇见大key我们需要怎么去查询和删除呢??? redis单线程 假设有个人现在问你一个问题:redis是单线程的还是多线程的 这个问题本身就不严谨 就像问…

@BeforeAll 和 @AfterAll 必须是 static 的原因

BeforeAll 和 AfterAll 必须是 static 的原因 执行时机&#xff1a; BeforeAll 方法在所有测试方法之前运行。AfterAll 方法在所有测试方法之后运行。 实例化前/后的执行&#xff1a; 因为 BeforeAll 是在所有测试方法执行之前运行的&#xff0c;所以它在任何一个测试实例创建…

微信机器人实现OCR识别录入数据

介绍 采用微信的hook插件&#xff0c;然后解析微信发来的数据图片&#xff0c;通过ocr识别 然后将数据落入execl表格中。同时有权限的人可以导出数据表格即可。 流程图 代码片 文本消息处理流程_robot.py elif msg.type 0x01: # 文本消息# 管理员列表dba_user_list [wxid_…

【C语言】函数递归 (包你懂的)

文章目录 1. 前言2. 递归的定义2.1 递归的思想2.2 递归的限制条件 3. 递归举例3.1 举例1&#xff1a;求n的阶乘3.1.1 分析和代码实现3.1.2 画图演示 3.2 举例2&#xff1a;顺序打印一个整数的每一位3.2.1 分析和代码实现3.2.3 画图演示 3.3 举例3&#xff1a;求第n个斐波那契数…

Unity动画录制工具在运行时录制和保存模型骨骼运动的方法录制动画给其他角色模型使用支持JSON、FBX等格式

如果您正在寻找一种在运行时录制和保存模型骨骼运动的方法&#xff0c;那么此插件是满足您需求的完美解决方案。 实时录制角色运动 将录制到的角色动作转为动画文件 将录制好的动作给新的角色模型使用&#xff0c;完美复制 支持导出FBX格式 操作简单&#xff0c;有按钮界面…

【原创】springboot+mysql村务档案管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

MySQL数据库操作基础(增删查改)

数据库操作基础(增删查改) 1.插入 1.1往数据表中插入一条数据 insert into 表名 values (值,值,值...)此处列出的这些值的数目和类型 要和表的相对应 1.2指定列插入 insert into 表名(列名) values (值);1.3一次插入多个记录 insert into 表名 values (值),(值)...一次插入…

深度学习500问——Chapter10:迁移学习(1)

文章目录 11.1 迁移学习基础知识 11.1.1 什么是迁移学习 11.1.2 为什么需要迁移学习 11.1.3 迁移学习的基本问题有哪些 11.1.4 迁移学习有哪些常用概念 11.1.5 迁移学习与传统机器学习有什么区别 11.1.6 迁移学习的核心及度量准则 11.1.7 迁移学习与其他概念的区别 11.1.8 什么…

达梦数据库相关SQL及适配Mysql配置总结

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

Leetcode 力扣109. 有序链表转换二叉搜索树 (抖音号:708231408)

给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为 平衡 二叉搜索树。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0&#xff0c;-3,9&#xff0c;-10,null,5]&#xff0c;它表示所示的高…

每日一题——Python实现PAT乙级1042 字符统计(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 优点 缺点和改进建议 时间复杂度分析 空间复杂度分析 改进后的代码 我…

关键字、保留字、标识符

关键字 关键字是被 Java 赋予了特定含义的英文单词。 关键字的字母全部小写。 保留字 现有的 Java 版本尚未使用&#xff0c;但是以后版本可能会作为关键字使用。自己命名标识符时需要避免使用这些保留字。 保留字有&#xff1a;byValue, cast, future, generic, inner, op…

数据并非都是正态分布:三种常见的统计分布及其应用

你有没有过这样的经历&#xff1f;使用一款减肥app&#xff0c;通过它的图表来监控自己的体重变化&#xff0c;并预测何时能达到理想体重。这款app预测我需要八年时间才能恢复到大学时的体重&#xff0c;这种不切实际的预测是因为应用使用了简单的线性模型来进行体重预测。这个…

【吊打面试官系列-Mysql面试题】BLOB 和 TEXT 有什么区别 ?

大家好&#xff0c;我是锋哥。今天分享关于 【BLOB 和 TEXT 有什么区别&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; BLOB 和 TEXT 有什么区别 &#xff1f; BLOB 是一个二进制对象&#xff0c;可以容纳可变数量的数据。TEXT 是一个不区分大小写的 BLOB。 1…

Java 语言概述 -- Java 语言的介绍、现在、过去与将来

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 001 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

使用proteus仿真51单片机的流水灯实现

proteus介绍&#xff1a; proteus是一个十分便捷的用于电路仿真的软件&#xff0c;可以用于实现电路的设计、仿真、调试等。并且可以在对应的代码编辑区域&#xff0c;使用代码实现电路功能的仿真。 汇编语言介绍&#xff1a; 百度百科介绍如下&#xff1a; 汇编语言是培养…

Knife4j 生成 API 文档

文章目录 Knife4j 简介使用步骤Knife4j 常用注解的列表案例注意 Knife4j 简介 Knife4j 是一个增强的 Swagger 文档生成工具&#xff0c;提供了更加友好的界面和更多功能&#xff0c;使得 API 文档更加美观且易于使用。它是基于 Spring Boot 和 Swagger 进行封装的&#xff0c;…

【下篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。上回我解释了YoloX, 今天从Yolov6开始。 YOLOv6:面向工业应用的单级物体检测框架 美团视觉人工智能事业部(Meituan Vision AI Department)于 2022 年 9 月在…