2

针对高分辨率雷达和相机的无标定板的像素级外参自标定方法

 2 years ago
source link: https://zhuanlan.zhihu.com/p/419737687
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

针对高分辨率雷达和相机的无标定板的像素级外参自标定方法



v2-969b83a9422c1f64d061dd7989ecb0dd_720w.jpg

介绍:固态激光雷达和相机的外参标定系统

摘要

这是今年的一篇针对高分辨率的固态激光雷达(非重复性扫描型)或者多线的激光雷达和相机在无标定板的环境中自动化外参标定的一篇文章。本文的方法不需要基于巧克力板,只依赖两个传感器采集的环境中的线特征就可以得到像素级精度的标定结果。在理论层面,作者分析了边缘特征提供的约束和边缘特征在场景中的分布对标定精度的影响。同时,作者分析了激光雷达的测量原理,并提出了一种基于点云体素分割和平面拟合的高精度的激光雷达点云边缘特征提取的方法。由于边缘特征在自然场景中很丰富,所以作者在室内和室外多个数据集上进行了实验并取得了不错的效果。代码已经开源https://github.com/hku-mars/livox_camera_calib

作者:Liam|来源:微信公众号:3D视觉工坊

介绍

雷达和相机是自动驾驶车辆中常用的传感器。雷达可以直接测量环境的三维信息,所以经常被用在障碍物检测、跟踪和建图。相机可以提供丰富的颜色信息,而且能和雷达的数据互补。随着雷达的分辨率快速增长,对于精准的外参的需求也增加了。基于激光和视觉可以进行构建稠密的点云图,点云着色和精准的3D测量。当前的标定方法还是主要基于标定板或者特殊的图像标志,通过检测、提取和匹配在图像和点云中的特征然后基于最小二乘的方法计算。传统的激光雷达如velodybe这种采用重复扫描和机械结构造成点云稀疏且噪声很大,这样可能导致代价函数产生不稳定的结果。固态激光雷达例如livox可以很好的利用非重复性扫描的特性产生稠密的点云。但由于标定的target常常放在离标定的传感器不远的地方,这就造成了在场景深度比较大的场景中,外参的标定结果可能会很差。例如在大场景中的点云着色。此外,基于特定标定目标的方法也是相对来说比较麻烦的,我们其实还是喜欢基于自然场景中的信息进行标定。为了解决上述的问题,本文提出了一个不基于target的像素级的自动化标定的方法。系统通过检测图像和点云中的线特征,最小化重投影误差得到得到准确的外参。系统可以应用在室内或者室外的场景中,并且这种不对场景提出需求的方法可以允许我们在数据采集的任何时刻进行标定。具体来说,本文的贡献主要有:

  • 作者自信的研究了lidar的测量原理,研究结果表明常用的基于深度不连续的边缘特征提取的方法不准确也不可靠。作者提出了新颖可靠的深度连续边缘的特征提取算法。
  • 作者在室内和室外对本文的方法进行了评测,结果标定的结果都很准确,并在自然场景中实现了像素级的标定结果。除此之外,本文的方法同时适用与固态和传统的机械雷达。
  • 作者开源了标定的代码。

相关工作

外参标定的方法主要分为两种,基于目标和自然场景标定的方法。他们之间最大的区别是如何在传感器数据中定义和检测特征。一些几何的物体和棋盘格是最常用的标定目标,因为他们对平面的法向量进行了明确的约束,而且使问题公式化起来很简单。但是由于需要额外的准备造成这种方法不实用,尤其是在需要动态变换的环境中。基于标定目标的方法主要有:

  • Unified intrinsic and extrinsic camera and lidar calibration under uncertainties(2020, ICRA)
  • Analytic plane covariances construction for precise planarity-based extrinsic calibration of camera and lidar(2020, ICRA)
  • Automatic extrinsic calibration of a camera and a 3d lidar using line and plane correspondences(2018, IROS)

Targetless的方法不用检测已知形状的特殊的标定物体,而是直接利用存在于自然场景中的线特征或者面特征进行标定。在Camvox: A low-cost and accurate lidar-assisted visual slam system中作者第一次把激光点投影到图像平面上(colormap),然后基于深度和反射强度给点上色。然后从上色的图中提取2D的线特征并和在图像中提取的线特征进行匹配。相似的,Automatic targetless extrinsic calibration of a 3d lidar and camera by maximizing mutual information中作者通过最大化图像和colormap的互信息来得到准确的外参。也有一些作者直接在点云中基于深度的不连续性检测3D边缘特征,然后把3D的边缘特征投影到2D的图像平面上来计算残差。由于基于连续性检测的方法不能保证激光点云严格的落在边缘上,所以边缘检测的精度比较差。也有一些基于运动的方法,例如:Extrinsic calibration of multiple lidars of small fov in targetless environments和Online targetless end-to-end camera-lidar self-calibration都是基于运动的方式来计算外参,然后再基于环境信息优化这个外参,但是这种基于运动的方法需要比较强的激励。本文的方法是Targetless的方法,本文直接利用了点云中检测的3D的线特征,这样就没有遮挡的问题了;同时本文提出了一个更准确和可靠的边缘特征提取的方法;本文只基于单个的一对雷达的扫描就可以得到不错的结果。

方法

A. 概述

下图定义了对应的坐标系:雷达系L,相机系C和2D的图像平面。同时认为激光是视觉之间的外参是一个未知量。由于环境中存在大量的边缘特征,本文的方法基于边缘特征对齐雷达和图像。

上图也表明了单个边的约束。可以看出来,雷达相对于相机的一些自由度的位姿是不能得到的:

  • 沿着边缘的平移量;
  • 垂直于边缘的平移量
  • 绕边缘点和焦点构成的平面的法向量的旋转
  • 绕边缘方向的旋转

实际上,一个边缘特征可以构建两个关于外参的有效的约束。为了获得足够的外参的约束,作者检测了不同位置的不同朝向的边缘特征。

B.边缘特征检测和匹配

1)边缘检测:一些存在的工作把点云投影到图像平面,然后从投影的点云中检测特征,例如边缘特征和互信息关联。利用投影后的点检测特征的一个问题是由于遮挡引起的多值和零值的问题,如下图a所示。如果相机在激光雷达的上方,A部分就会因为遮挡导致相机看得到但是激光看不到,结果导致没有点投影到这部分,深度值全部都是0;另外B部分激光雷达看得到但是相机看不到,这就导致这部分点干扰前景点的投影。这就导致前景点和背景点都投影到了图像的相同区域,一个地方有多个深度值。这种现象对于低分辨率的LIDAR可能不明显,但是在高分辨率的雷达中很明显。这种问题会导致在投影的点云中提取错误的特征,或者造成和图像中特征匹配错误的匹配。

为了避免投影造成的零值或者多值问题,作者之间在点云上检测边缘特征。这里主要有两种边:深度连续的和深度不连续的,如上图4所示。深度不连续的边指的前景后背景物体深度有跳变的地方;而深度连续的边指平面上深度连续的连接线。很多存在的方法都是基于深度是否连续来提取线特征,因为可以很容易基于点的深度来检测。但是在研究了lidar的测量原理后,作者认为这种方法在高精度的标定中是不可靠,不准确的。像下图,实际的激光脉冲不是理想的点,而是具有一定发散角的光束。当从前景物体扫描到背景物体时,一部分激光脉冲被前景物体反射,而其余的则被背景反射,产生两个反射脉冲到激光接收器。在前景物体反射率高的情况下,第一个脉冲的信号将占主导地位,使光束中心线偏离前景物体,这也会导致前景物体的错点超出实际边缘。当从前景物体扫描到背景物体时,一部分激光脉冲被前景物体反射,而其余的则被背景反射,产生两个反射脉冲到激光接收器。在前景物体反射率高的情况下,第一个脉冲引起的信号将占主导地位,即使光束中心线偏离前景物体,这也会导致前景物体的假点超出实际边缘。这两种现象都会错误地使前景物体膨胀,并在边缘提取和校准中造成重大错误。

为了避免前景点膨胀或者错点导致的深度不连续的边缘,本文提取深度连续的边。像上图6显示的过程:

  • 首先把点云划分为大小一定的体素(室内0.5m,室外1m);
  • 对于每个体素,反复使用 RANSAC 来拟合和提取体素中的平面;
  • 然后,保存在一定角度范围内的平面对(例如,[30°, 150°])并求解平面相交线(即深度连续边)。

如图 6 所示,本文的方法能够在一个体素内提取多条相互垂直或平行的相交线。此外,通过选择合适的体素的尺寸,我们可以检测出来曲线边缘。下图显示了在外参正确的情况下提取场景中深度连续和不连续的边。不连续的边的提取是基于Bundle adjustment for lidar mapping中介绍的曲率的概念做的。可以看出来,深度连续边的噪声更小,更准确。对于图像中的线特征,可以直接基于Canny算法。把检测出来的线特征保存成2Dtree的格式用于快速的索引匹配。

2)匹配:检测出来的激光的边缘特征需要和视觉的边缘特征匹配。对于每一个雷达边缘,采样边缘上的点,每一个采样点通过当前估计出来的(可能不是最准的)外参投影到相机平面:



利用刚体变换可以得到激光点在相机坐标系下的位置,然后利用针孔模型把相机坐标系下的点投影到图像平面上,得到激光点在图像上的位置:

最后根据相机的内参标定参数,得到相机的畸变系数,去畸变后激光点在图像中的位置为:

然后利用图像中的边缘像素构成的kd-tree搜出来k个最近的点,可以得到一个集合Q,然后计算:

可以得到均值和方差,然后利用边缘上的一点q和由协方差矩阵的最小特征值对应的特征向量得到边缘特征方向n得到边缘特征的表达式。同时,作者也把边缘特征的方向投影到了图像平面并验证其和计算得到的n的正交性(一个线段方向,一个法向量)。这也可以快速的去除那些距离很近但是又不平行的错误匹配。下图显示了提取的 LiDAR 边缘特征(红线)、图像边缘特征(蓝线)和匹配(绿线)。

C. 外参标定

1)测量噪声:提取得到的雷达边缘点和对应的图像边缘特征(q,n)受到测量噪声的影响,设满足零均值高斯分布的w是图像中边缘特征的噪声,方差为1.5(由于像素的离散性)。同样的,激光点云的边缘特征也有测量噪声。在实际的测量中,激光雷达通过扫描电机中编码器的方向和激光点的飞行时间来测量深度信息。设ωi表示测量得到的电机轴向方向,而δωi ∼ N (0_2*1 , Σωi )表示ωi在切平面上的测量噪声(如上图所示),然后利用“田”运算通过测量得到真实的测量角:

其中N(ωi)=[N1,N2]是 ωi 处切平面的正交基,x表示叉乘对象的协方差矩阵。田s2操作表示的是在切平面ωi的δωi范围内的单位向量。同样的,di是深度测量的结果,他也受一个零均值的高斯噪声δdi的影响,真值可以表示为:

把这个结果和上边由于电机编码器噪声引入的误差结合起来可以得到:



该噪声模型将用于产生一致的外部校准。2)标定公式化和优化:LPi是激光点云中检测到的边缘上的一个点,ni是和激光边缘对应的图像边缘的法向量,qi是激光边缘对应的图像边缘上的一点(均值)。把激光点的噪声加上,如果利用真值的外参把点投影到图像平面上应该在图像的对应线特征上,所以:

其中w是图像和激光点的噪声,都服从零均值的高斯分布。这个公式可以看图9,第一部分是激光点投影到图像平面,第二部分是图像上边缘特征的一点,相减后投影到ni方向上就是ri。公式9表明了一个激光线特征上的点可以提供一个约束,这和我们上边介绍的是一样的,一个线特征上有两个独立的点,可以提供两个约束。此外,公式9就是一个关于外参的残差方程,其中包含测量量,激光点,视觉线特征和一些未知的噪声量。这个非线性的方程可以迭代的求解。

这里其实就是外参给的扰动,我们不断的寻找让残差下降的方向迭代求解。把公式9和10可以得到残差的方程:

这里的公式推导也比较简单,对于T直接左乘一个扰动就可以得到JT,对于w就按正常的求导过程就可以。其中ri是图9b中介绍的那样。公式11给出了一个边缘特征提供的约束,把N个边缘整合到一起可以得到:

公式13可以写成:

公式说明,这里是高斯分布的线性变换,可以参考状态估计中相关的知识。根据公式14,就可以构建关于外参的极大似然估计了(包括最小的方差):

这个优化问题的解是:

这里就是一个把公式15展开求解优化量的过程。其中外参可以由下式更新:

利用公式16和更新的公式,我们就可以迭代的求解真实的外参了。迭代的终止条件是变化量小于某个阈值。3)标定的不确定度:除了估计外参,我们也可以得到外参的不确定度。这样可以知道当前的标定结果和真值之间的误差。为了得到不确定度,我们需要把公式13都乘上一个量,然后求解得到的对应的变化量:

这就表明 δT,外参真值和估计结果的误差,并在切空间中参数化后,满足以 δT*为均值的高斯分布,当收敛时, δT接近0,协方差为:

D. 边的分布对标定结果的影响

公式12中JT表示的是外参的变化对残差的影响。当有很少或者边的分布很不好(同一个方向,在一个小的区域内),JT就会很小导致不确定度增大(公式19中JT在分母上)。从这个角度来说,利用协方差矩阵可以直接得到环境的质量好坏。不考虑相机畸变,利用针孔的投影模型可以得到:

其中XYZ是雷达的边缘点在相机系下的表示。从结果表示靠近图像中心的点的导数是比较小的。因此边缘特征在图像中均匀分布是比较好的。另外由于激光的测量噪声随着深度的增加而增加,所以场景的深度最好适中。

E. 标定初始化和粗对齐

本文提出的基于优化的方法在有一个比较好的初值的时候可以得到很准的标定的结果。为了保证算法收敛到最优值,作者把通过最大化以下定义的边缘匹配百分比 (P.C.) 来粗略校准外参的初始化步骤集成到了算法的pipeline中:

其中分子是匹配到的雷达边,分母是雷达边的总个数。匹配基于投影到图像平面后的LiDAR 边缘点与其最近边缘的距离和方向(参见第 III-B.2 节)。粗配准是通过在给定范围内旋转(网格大小 0.5 度)和平移(网格大小 2cm)的替代网格搜索来执行的。

实验和结果

作者在室内和室外各个场景中都进行了实验,根据图片看标定后数据对齐的效果都很好,标定的速度也很快。

我也在实际的环境中做了实验,感觉精度还是很准的,其中在安装的时候我们是有一个大概的外参初值的,这个对优化问题的求解很重要,所以我们最好手动给:

下一步就是标固态和机械雷达了。

参考文献:[1] Yuan C , Liu X , Hong X , et al. Pixel-level Extrinsic Self Calibration of High Resolution LiDAR and Camera in Targetless Environments[J]. 2021.

备注:作者也是我们「3D视觉从入门到精通」特邀嘉宾:一个超干货的3D视觉学习社区本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术
2.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
3.国内首个面向工业级实战的点云处理课程
4.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
5.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
6.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
7.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

更多干货
欢迎加入【3D视觉工坊】交流群,方向涉及3D视觉、计算机视觉、深度学习、vSLAM、激光SLAM、立体视觉、自动驾驶、点云处理、三维重建、多视图几何、结构光、多传感器融合、VR/AR、学术交流、求职交流等。工坊致力于干货输出,为3D领域贡献自己的力量!欢迎大家一起交流成长~
添加小助手微信:CV_LAB,备注学校/公司+姓名+研究方向即可加入工坊一起学习进步。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK