【文献分享】基于线特征的激光雷达和相机外参自动标定

论文题目:Line-based Automatic Extrinsic Calibration of LiDAR and Camera

中文题目:基于线特征的激光雷达和相机外参自动标定

作者:Xinyu Zhang, Shifan Zhu, Shichun Guo, Jun Li, and Huaping Liu

作者机构:清华大学汽车安全与能源国家重点实验室

论文链接:https://www.researchgate.net/publication/354877994_Line-based_Automatic_Extrinsic_Calibration_of_LiDAR_and_Camera

为了解决外参逐渐漂移的问题,提出了一种基于线的方法,可以在真实场景中实现激光雷达和相机的自动在线外参标定。首先,从点云和图像中提取和过滤线特征。然后,利用自适应优化方法提供精确的外部参数。然后在KITTI基准上用地面真值对其进行了评估。实验验证了标定方法的准确性。在数百帧的在线实验中,本文提出的方法自动校正了误标定误差,达到了0.2度的精度,验证了它在各种场景下的适用性。

1 引言

本文提出的目的:

  1. 传统的手动校准方法需要专门设计对象,如标定板或手动选择点,这导致校准过程繁琐。
  2. 长时间的运行和不同的载荷会导致外部参数的轻微漂移和累计误差,因此需要自动在线标定对其进行调整。

本文主要贡献:

  • 提出了一种能在线自动估计六自由度(6-DOF)参数的外参标定方法。该方法利用一般的直线特征减少了传感器之间的漂移误差,不需要人工选择点和特殊目标,因此能够适用于任何给定的场景。
  • 提出了一种点云线提取方法,利用点云处理方法过滤噪声数据,准确提取线特征。
  • 引入自适应优化方法和结果置信度估计方法,实现了向正确方向优化和高效计算标定结果。

2 算法概述

提出的方法分为三个步骤:

  1. 在图像和点云的特征提取之前进行一系列的预处理
  2. 从图像和点云中提取线特征,通过特征滤波进行细化
  3. 最后,通过对初始外部参数添加小扰动,将点云线特征投影到像素帧上,并对每个扰动的得分进行计算和优化

本文的算法框架如下:

3 算法框架

3.1 问题表述

激光雷达与相机的外参标定问题在于确定两者之间正确的变换矩阵。将问题定义为求旋转角向量θ=(θx;θy;θz),平移向量t=(tx,ty,tz);点云记为 P t P_t Pt,图像记为 I i j t I^t_{ij} Iijt,表示点I和像素ij在第t帧的值。通过将LiDAR点投影到图像上计算成本分数,目标函数定义为:
S t = ∑ t = n − w n I i j t [ α ∑ p t p t ∈ F h t T t p t + ( 1 − α ) ∑ p t p t ∈ F v t T t p t ] / w S_t = \sum_{t=n-w}^n I^t_{ij}[\alpha \sum_{p_t}^{p_t \in F_h^t} T_tp_t+(1-\alpha)\sum_{p_t}^{p_t \in F_v^t}T_tp_t]/w St=t=nwnIijt[αptptFhtTtpt+(1α)ptptFvtTtpt]/w

其中每个LiDAR点 p t p_t pt分别迭代水平特征 F h F_h Fh和垂直特征 F v F_v Fv。系数α对水平和垂直线特征赋予不同的权重。本文将α赋值为0.65,以增强对水平误差的约束。另外,w是滑动窗口的大小。考虑之前的w帧,计算第t帧的分数。

通俗的说就是:将激光雷达点检测到的水平线特征和竖直线特征分别通过转换矩阵T,变换到相机坐标系中,然后投影到图像上,然后通过一个在图像上的滑动窗口计算得分。

3.2 图像处理

在图像处理中,首先将RGB图像转换为灰度图像;然后通过[1]中的线特征提取算法进行线特征提取;然后对灰度图像进行距离变换。

下图展示了这个过程。

图(b)中的白色边缘和图©中的白色线条分别代表聚类的边缘特征和线特征。如图(b)所示,应用距离变换模型后,聚类后的边缘特征更加无序。相反,图©中的线特征组织得更好,产生的灰度变化更小。它可以允许更大的搜索步长,从而防止优化过程进入局部解决方案。

白色像素表示提取的特征,灰度变化表示到边缘或线特征的距离。像素越白,越接近这些线特征的中心

3.3 雷达处理

在激光雷达处理中,其原理是利用距离不连续性来获得更多的边线特征。为了实现这一目标,采用局部映射的方法,将三帧点云合并为一帧,使一帧能呈现更多的点。具体来说,利用NDT方法计算当前帧和前两帧之间的变换矩阵。

在单帧和三合一帧中提取的边界线点对比如下图所示。图(a)显示了通过将三帧点云 P t − 2 : t P_{t−2}:t Pt2:t转换为一帧点云得到的更密集的点云,与图(b)中的另一帧点云相比,可以显示更多的点。这可以提高提取性能,特别是在应用低光束激光雷达时。

然后将更密集的点云转换成图像,每个像素存储对应雷达点的距离信息。通过比较当前点与相邻点之间的距离,消除离相邻点太远的离群点,提取出更精确的线特征。需要注意的是,本文考虑了多个激光束之间的距离信息。这使得可以提取水平特征,从而使用线特征最小化水平和垂直误差。水平线特征 F h F_h Fh和垂直线特征 F v F_v Fv分别存储在两个不同的点云中。在此设置中,忽略了很少出现的平面相交线特征,有利于提高计算效率。

3.4 特征过滤

在上面的处理之后,得到了无序的线特征。下面采用两步过滤方法来消除异常值。

**第一步:**由于点云已经转换成图像形式,因此设计了一个卷积核来过滤掉距离所有八个相邻点超过一定阈值的点。这种过滤方法可以去除所有的异常点以及与地面对应的点。剩余的特征可以被识别为线特征。

过滤前后的线特征如下图所示。

**第二步:**使用聚类算法去除相邻点很少的线特征,剔除短于8像素的线特征。

以上两个过滤步骤可以提供更有条理的点云线特征,保证后续步骤的优化效果更好

3.5 自适应优化

在优化之前,已经将LiDAR线特征提取到图像上,并计算投影到灰色区域的LiDAR点的比例。

为了准确地找到解,采用了两个搜索步骤。

  1. 首先,为了防止搜索陷入局部解,采用图像线特征宽、灰度变化小、步长相对较大的粗糙搜索,可以快速发现可能包含最佳解的区域。
  2. 然后,应用更细的图像线特征和更大的灰度变化,以及更小的步长,以获得更精确的校准结果。

当激光雷达点投射到灰色区域的比例超过一定阈值时,就会发生这两步大小和灰度变化之间的切换。


为了提高计算效率,提出了一种自适应优化方法,使优化向着正确的方向进行。

将当前像素得分与相邻的728个得分进行比较。在此过程中,如果搜索程序发现得分较高的参数,则停止当前搜索过程,并在得分较高的位置开始新的搜索过程。此外,当达到设定的迭代次数或找到最佳分数时,该搜索过程将停止,从而可以提高计算效率。另外,还使用滑动窗口来设置优化过程中需要考虑的帧。在本文中,为了防止从错误的方向进行优化搜索或陷入局部最优解,使用了三帧。因此,最终优化的外部参数应该在滑动窗口的所有帧中都超过其他参数。

4 实验与结果

在KITTI数据集的不同场景下进行了两次实验。

4.1 精度分析

图(a)和(b)给出了实验一的结果,图©和(d)给出了实验二的结果。在这两个实验中,在X、Y、Z轴上增加了1度的旋转偏置,并对地面真值参数增加了0.05米的变换偏置。然后,每10帧添加0.5度的旋转偏差。需要指出的是,1度旋转偏置是正还是负是随机的。实验将标定误差与地面真实值进行了比较。此外,还测试了检测误校准的能力和纠正偏差的速度。

在不计算人为误差的情况下,横摇、俯仰、偏航的最大误差始终在0.5度以内。由于激光雷达具有较高的水平分辨率,偏航的校准结果最为精确。尽管激光雷达在垂直方向上的分辨率要低得多,并且该方向上的3D特征呈现频率较低,但由于采用了自适应优化算法,并且该方向的权重较高,因此所提出方法仍然可以达到较高的精度。总体而言,在所有维度上的平均旋转误差为0.12度,低于大多数离线校准技术。

4.2 纠错速度分析

在上图(a)和(b)中,黑色箭头1、2、3和4指向添加偏差的框架。对于箭头1和3提出的方法立即纠正了偏差,而没有显示置信度下降,而对于黑色箭头2和4,红色部分在两帧内变为绿色(图(a)),这意味着偏差在两帧内得到了纠正。实验二也出现了同样的情况(图©和(d))。

在KITTI数据集上更多场景下的整体校准结果如下图所示,说明本文方法适用于不同场景。

5 总结

本文提出了一种在线自动标定激光雷达和相机外部参数的方法。与以前的自动化方法不同,这种新的校准方法不需要在场景中放置标记。作者证明了点云和图像的线特征是校正校准偏差的鲁棒特征。人为添加的偏置可以在一到两帧内得到纠正,比其他方法更快。此外,文中还说明了当前校准结果的置信度可以计算,并进一步用于提高计算效率和精度。

未来的工作希望评估提取的线特征的准确性,以减少特征较少的场景中的校准偏差。利用蒙特卡罗方法可以提供初始参数。

6 参考文献

[1]R. G. Von Gioi, J. Jakubowicz, J.-M. Morel, and G. Randall, “Lsd: a
line segment detector,” Image Processing On Line, vol. 2, pp. 35–55, 2012.

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

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

相关文章

nodejs+vue学生考勤综合平台的设计与实现-计算机毕业设计

在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。 “学生考勤综合平台”是基于Mysql数据库,在 程序设计的基础上实现的。为确保中国经济的持续发展,信息时代日益更新,蓬勃发展。 因此,国内外技术…

git教程(2)---远程仓库操作

git教程---远程仓库 远程操作创建远程仓库克隆远程仓库HTTPSSSH 向远程仓库推送拉取远程仓库.gitignore文件给git指令起别名IssuesPull Requests 标签管理操作标签推送标签 多人协作场景一场景二 开发模型Git分支设计规范使用Gitee的DevOps平台体验项目开发流程 远程操作 创建…

50元买来的iPhone手机刷机经验

前段时间,家里的iPad被家人误操作,导致iPad变成不可使用状态。自己折腾了半天,没有找到解决办法。没有办法,只好拿到手机维修店去修理,很快就修理好了.其实也很简单--就是对iPad进行了刷机操作。当然我也看到了刷机的方法。今天&a…

完美的代价

题目: * 题目: * 回文串,是一种特殊的字符串,它从左往右和从右往左读是一样的。 * 现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变为完美的回文回文串。 * 例如:mamad * 第…

音视频技术开发周刊 | 317

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 MIT惊人再证大语言模型是世界模型!LLM能分清真理和谎言,还能被人类洗脑 MIT等学者的「世界模型」第二弹来了!这次,他们证明…

275. H 指数 II

275. H 指数 II 难度: 中等 来源: 每日一题 2023.10.30 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。 h 指数的定义:h 代表“高…

“探索Linux世界:从CentOS安装到常见命令使用“

目录 引言一、安装CentOS二、Linux的常见命令文件夹和目录操作命令文件编辑命令vi或vim编辑器命令模式编辑模式末行模式 总结 引言 在计算机领域,Linux作为一种强大而灵活的操作系统,在服务器、嵌入式设备和个人电脑等领域广泛应用。本文将引导您了解并…

Linux基础环境开发工具的使用(yum,vim,gcc,g++)

Linux基础环境开发工具的使用[yum,vim,gcc,g] 一.yum1.yum的快速入门1.yum安装软件2.yum卸载软件 2.yum的生态环境1.操作系统的分化2.四个问题1.服务器是谁提供的呢?2.服务器上的软件是谁提供的呢?3.为什么要提供呢?4.yum是如何得知目标服务器的地址和下载链接呢?5.软件源 …

基于单片机的空气质量检测系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、主要内容二、系统方案设计2.1 系统方案设计2.2 主控制器模块选择 三、 系统软件设计4.1 程序结构分析4.2系统程序…

小红书平台用户数据分析与可视化

管理器、网页下载器、网页解析器、输出管理器这四个模块去搭建一个爬虫框架,将爬虫流程统一化,将通用的功能进行抽象,减少重复工作。要求实现的爬虫框架可以进行分布式爬取,解决爬虫的统一调度和统一去重,以及存储问题…

[激光原理与应用-72]:PLC架构与工作原理

目录 一、PLC简介 1.1 概述 1.2 基本组成 1.3 常见的PLC品牌比较 二、PLC程序执行原理 2.1 PLC有操作系统吗? 2.2 PLC程序执行 2.3 PLC编程语言 2.4 PLC编程过程 三、PLC编程工具 3.1 编程工具 四、PLC与工控机协同 4.1 PLC需要配置工控机吗&#xff1…

SpringBoot / Vue 对SSE的基本使用

一、SSE是什么? SSE技术是基于单工通信模式,只是单纯的客户端向服务端发送请求,服务端不会主动发送给客户端。服务端采取的策略是抓住这个请求不放,等数据更新的时候才返回给客户端,当客户端接收到消息后,再…

postman使用POST,却收到的是GET请求

现象: 可以看到我们postman发出的确实是post请求,message却报错这个接口不支持get请求,说明服务器实际上收到的是一个get请求。 产生原因分析 如果我们访问的是线上的接口,线上的nginx一般都会对http访问做一个302重定向&#xf…

生成的二维码如何解析出原来的地址?

生成的二维码如何解析出原来的地址? 随着移动互联网的发展,二维码作为一种快速获取信息的方式,在我们的生活中越来越常见。而PHP作为Web语言之一,也有着二维码解码的功能。 PHP中有着众多的二维码解码库,例如&#x…

k8s 集群部署

目录 1. 集群环境初始化 2. 所有节点安装kubeadm 3. 拉取集群所需镜像 4. 集群初始化 5. 安装flannel网络插件 6. 扩容节点 7. 设置kubectl命令补齐 官网: https://v1-23.docs.kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ …

git的使用——如何创建.gitignore文件,排除target、.idea文件夹的提交

前言 git作为开发人员必备的技能,需要熟练掌握,本篇博客记录一些git使用的场景,结合具体问题进行git使用的记录。以gitee的使用为例。 本篇博客介绍如何创建.gitignore文件,排除一些文件夹的提交,比如排除target、.i…

c++拷贝构造与赋值运算符重载

目录 目录: 1:拷贝构造 2:赋值运算符重载 前言:在上一章我们已经学习过了,构造与析构这两个默认成员函数了,接下来让我们一起来学习另外两个重要的默认成员函数。 首先让我们来讲一下默认成员函数这个概念…

【ARM Trace32(劳特巴赫) 使用介绍 2 -- Trace32 cmm 脚本基本语法及常用命令】

文章目录 Trace32 CMM 概述1.1 Trace32 系统命令 SYStem1.1.1 Trace32 SYStem.CONFIG1.1.2 SYStem.MemAccess1.1.3 SYStem.Mode1.1.3.1 TRST-Resets the JTAG TAP controller and the CPU internal debug logic1.1.3.2 SRST- Resets the CPU core and peripherals 1.2 Trace32 …

Azure - 自动化机器学习AutoML Azure使用详解

目录 一、AutoML是如何工作的?二、何时考虑AutoML?三、AutoML助力训练与集成过程四、实战案例五、总结 自动化机器学习,简称为AutoML,旨在将机器学习模型的开发中繁琐且重复的任务自动化。这使得数据科学家、分析师以及开发人员能…