相机雷达外参标定综述“Automatic targetless LiDAR–camera calibration: a survey“

相机雷达外参标定综述--Automatic targetless LiDAR–camera calibration: a survey

  • 前言
  • 1 Introduction
  • 2 Background
  • 3 Automatic targetless LiDAR–camera calibration
    • 3.1 Information theory based method(信息论方法)
      • 3.1.1 Pairs of point cloud and image attributes(属性对)
      • 3.1.2 Statistical similarity measure
      • 3.1.3 Optimization methods
      • 3.1.4 Summary of information theory based methods
    • 3.2 Feature based methods(特征法)
      • 3.2.1 Feature extraction
      • 3.2.2 Feature matching strategies
      • 3.2.3 Summary of feature based methods
    • 3.3 Ego‑motion based methods(运动估计法)
      • 3.3.1 Hand‑eye based methods(手眼标定法)
      • 3.3.2 3D structure estimation based methods(3D结构重建的方法)
      • 3.3.3 Other Methods
      • 3.3.4 Summary of ego‑motion based methods
    • 3.4 Learning based methods(深度学习方法)
      • 3.4.1 End-to-end methods(端到端方法)
      • 3.4.2 Hybrid‑learning methods(混合学习方法)
      • 3.4.3 Summary of learning based methods
  • 总结

前言

毕设的工作和相机雷达外参标定其实有些关联,加上在秋招面试的时候其实也被问到了很多次相机-雷达外参标定的内容,所以这里找了一篇时间比较近的综述文章,来对相机雷达标定的各种方法来进行一个了解。
本文没有对文章进行完全的翻译,而是对一些内容进行了自己的理解和翻译,如有错误烦请指出

文章链接:Automatic targetless LiDAR–camera calibration: a survey

1 Introduction

文章把无目标相机类大外参标定分成了四类:
(1) 基于信息论的方法,测量相机和雷达两种模态之间的共同属性的联合直方图之间的统计相似性(原文:information theory based methods that measure the statistical similarity between joint histogram values of several common properties between the two modalities,没完全理解,后面结合具体再看)
(2) 特征法:基于外部环境中的几何、语义或者运动特征来进行
(3) ego-motion方法,其实就是基于传感器自身的运动来进行的
(4) 基于神经网络的深度学习方法

2 Background

首先第一点是,这里提到的外参标定单指空间上的外参标定,实际上时间同步也可以算一种外参标定,但是在这篇文章里首先默认时间同步被实现处理好了;和时间同步类似的,相机内参也被认为事先标定好了

之后先是关于相机-雷达之间的外参的介绍,这里是比较基础的内容了,所以就只放一张文章中的图片了

在这里插入图片描述

然后是比较重要的一部分,介绍了相机雷达外参标定的分类准则。这里的分类针对的还不是automatic targetless methods,还是针对整个相机雷达的标定方法,所以这里的分类准则主要就是基于是否需要标定板以及是否需要人为介入

  • Manual target-based

这种方法就是需要人为来构建图像和点云之间标定板之间的联系(指的也就是人工选出来),比较常用的标定板包括:棋盘格,ArUco码,定制的一些平面标靶以及普通的盒子等等。通过人为介入,我的理解就是可以构建出这些标定板在点云和图像之间的同名点,也就构建出了约束,然后基于最小二乘优化就可以求解了

  • Automatic target-based

和上一种方法相比,这里的区别就在于无需人为干预,私以为,这里更关键的部分应该在标靶的自动提取上,但文章这里没有做什么介绍,只是介绍了一些工作:
“Automatic camera and range sensor calibration using a single shot.” – 看起来是有多个标定板,所以可以实现一次拍摄的标定
“Automatic LiDAR-camera calibration of extrinsic parameters using a spherical target.” – 这个用到了球形靶标,通过点云和图像检测球面,然后拟合球心,根据球心构建约束

  • Manual targetless

外参在类似于自动驾驶的场景中可能需要在线微调,这里的manual指的是手动指定点云和图像之间的关系,其实我觉得这个也算一种“标靶”,只不过这个标靶不再是实物的形式,而变成了人为定义的“规则”。

  • Automatic targetless

文章的重点,这种方法依旧要依赖于外部的环境,但这里没有明确的标靶也没有人为指定的规则。因为这是文章的主题,所以在这一小节只是简单引入,也介绍了常见的几种具体的分类方法:离线VS在线,人为标定VS自动标定等等。

3 Automatic targetless LiDAR–camera calibration

首先回顾一下前文提到的四种分类:其中信息论法、特征法和运动估计法其实都是从环境中提取信息的,深度学习法则是从隐式的信息中获取标定的方法的。基于这四种方法分类,一是出于如何利用周围环境的信息进行校准考虑。二是,这四个类别还为不同的应用场景提出了校准方法。
信息论方法 – 环境中特征比较少,让3D点云投影和整张图像的相似性(similarity)最大
特征法 – 环境中能提供较多的语义或者几何约束
运动估计法 – 传感器都在运动
深度学习法 – 需要较多的计算资源

3.1 Information theory based method(信息论方法)

基于信息论的方法通过最大化 LiDAR 传感器和相机之间的相似变换来估计外部参数,该相似变换通过各种信息度量来衡量。基本原理可以表示为:
T ∗ = argmax ⁡ T  IM ( p r o j T ( P L ) , p C ) T^* = \underset{T}{\operatorname{argmax}} \text{ IM}(proj_T(\mathbf{P}_L), p_C) T=Targmax IM(projT(PL),pC)
这里需要注意的是, I M IM IM在这里指的是投影后的点云和图像之间能反映相似性的指标(有点蹩脚)。那么这种方法可以大致分为三个步骤:

  1. 雷达点云投影至图像平面
  2. 统计相似性(IM指标),所以这里的核心就是这个指标的选取了?
  3. 全局优化

在这里插入图片描述

这里也是先简单介绍了下所谓的“属性相似性分布”:比如反射率高的雷达点云对应着图像中的明亮表面,还有可以提取梯度幅度和方向等等。

3.1.1 Pairs of point cloud and image attributes(属性对)

以下都以“点云属性 - 图像属性”

  • 反射率 – 灰度值
    当摄像机和激光雷达同时观察环境时,激光雷达点云的反射率和图像的灰度强度之间会存在统计相似性,因为这两个属性主要取决于物体的相同表面属性。类似的还可以把图像属性换成:Hue(色调),可见光波长,颜色等等,这些特性都是基于物体表面的属性的。
  • 表面法线 – 灰度值
    在给定光源的情况下,表面法线也是影响图像中相应像素灰度的重要指标,根据雷达点云估计表面发现的方法有很多,给定一个点的法向量之后,还可以计算出水平面之间的对应角度。(主要参考文献来自于:Zachary Taylor)因为我们平常都会默认光线是来自上方的,这个角度对灰度影响其实很大,也就意味着表面法线和灰度强度之间存在着统计关系。
  • 梯度量级和方向 – 梯度量级和方向
    这个属性对的依据来自于:如果图像上一个区域的像素与周边有比较明显的区别,那么对应到点云深度上应该也是一样的,反过来也是。这种相关性是存在的,因为这些强度的变化通常代表背景与检测到的材料或物体之间的差异。图像的梯度的话比较好办,用Sobel算子,点云的梯度的话则依旧是以Zachary Taylor的文献为例,将每个像素投影到球体上,然后根据 Taylor 等人提出的算法,使用其最近的 8 个邻居计算梯度。
  • 3D语义 – 2D语义
    理论上3D点的语义标签与其对应的图像标签应该是相同的,所以利用这种信息理论上是可以进行数据关联的;在分割任务中,可以使用神经网络模型分别预测图像和点云中的逐点语义标签。(直观感觉这种方法不太适合标定呢?后面再看看)
    补充:后面又看了下,这里的语义后面被归到了语义质心,所以还是没有问题的。
  • 多种3D-2D属性对的结合
    一些方法发现,使用混合特征有利于提高算法在不同环境下的鲁棒性,而不是依赖一对特定的 3D-2D 属性来估计像素相似度 (Irie et al 2016)。它们使用一组组合的 3D-2D 属性对来计算相似度测量值,并为每个属性对分配适当的权重。这些属性集通常是上述一些属性对的组合,例如点云中的反射率、表面法线和梯度,以及图像中的灰度强度和梯度。它们使用一组组合的 3D-2D 属性对来计算相似度测量值,并为其分配适当的权重。

3.1.2 Statistical similarity measure

依据上面的属性对,就可以利用不同的特性来衡量点云和图像之间的统计相似性了(更高的统计值可以认为有更好的联系),文章接下来总结了一些常用的统计特性

  • Mutual Information(MI)

这个指标也是临时去搜了下,还是根据wiki两个随机变量的互信息(mutual Information,MI)度量了两个变量之间相互依赖的程度。具体来说,对于两个随机变量,MI是一个随机变量由于已知另一个随机变量而减少的“信息量”(单位通常为比特)。互信息的概念与随机变量的熵紧密相关,熵是信息论中的基本概念,它量化的是随机变量中所包含的“信息量”。
OK,依旧没完全理解,先接着往下看,MI定义的计算公式为:

M I ( X , Y ) = H ( X ) + H ( Y ) − H ( X , Y ) MI(X,Y) = H(X) + H(Y) - H(X,Y) MI(X,Y)=H(X)+H(Y)H(X,Y)

这里分别是个体的熵和联合的熵,这个计算公式还是比较经典:

H ( X ) = − ∑ x ∈ X p X ( x ) log ⁡ p X ( x ) H ( Y ) = − ∑ y ∈ Y p Y ( y ) log ⁡ p Y ( y ) H ( X , Y ) = − ∑ x ∈ X ∑ y ∈ Y p X Y ( x , y ) log ⁡ p X Y ( x , y ) \begin{aligned} H(X) &= -\sum_{x\in X} p_X(x)\log p_X(x) \\ H(Y) &= -\sum_{y\in Y} p_Y(y)\log p_Y(y) \\ H(X,Y) &= -\sum_{x\in X}\sum_{y\in Y} p_{XY}(x,y)\log p_{XY}(x,y) \end{aligned} H(X)H(Y)H(X,Y)=xXpX(x)logpX(x)=yYpY(y)logpY(y)=xXyYpXY(x,y)logpXY(x,y)

当然这么敢说太抽象了,文章简单描述了下:在实际应用中,我们可以使用例如每个 LiDAR 点的反射率值和每个图像像素的强度作为两个随机变量 X 和 Y。然后可以使用诸如核密度估计 (KDE) 之类的方法来估计两个随机变量的概率分布。 总之就是选择一种统计指标,然后计算两个变量的MI指标就可以。

  • NMI(Normalized MI)

MI可能会被点云和图像包含的总信息量影响,这种时候外参标定回受影响,NMI是把MI值进行的归一化,计算公式变成了:

N M I ( X , Y ) = H ( X ) + H ( Y ) H ( X , Y ) NMI(X,Y) = \frac{H(X) + H(Y)}{H(X,Y)} NMI(X,Y)=H(X,Y)H(X)+H(Y)

  • Gradient Orientation Measure(GOM)

梯度方向测量,计算的是两幅图像之间的梯度方向的对齐程度。这里梯度的值也被看作权重值,与MI相比,因为GOM使用的是梯度,所以它会考虑相邻点的值和图像中存在的几何形状。

  • Normalised Information Distance (NID)

归一化信息距离,2004年由Li Ming等人提出,在多传感器领域可用于不同传感器之间的匹配,是一种相似性度量。相比于MI,NID不会使用全部的图像信息,不会犹豫丰富纹理区域之间的匹配而影响到全局图像的配准上。

  • Bagged Least-squares Mutual Information (BLSMI)

这个指标直接没怎么看懂。。这里先放一下翻译文字,BLSMI (由Irie等人在2016年提出) 是一种组合方法,它结合了基于核的依赖估计器和通过自助法聚合(bagging)实现的降噪技术。与普通的互信息(MI)相比,BLSMI的一个主要优势在于它对异常值具有更强的鲁棒性,这是因为其计算过程中不包含对数运算。看起来这个是和机器学习结合的一个指标?

  • Mutual Information and Distance between Histogram of Oriented Gradients (MIDHOG)

这是一个结合指标,一部分是NMI,另一部分就是 Distance between Histogram of Oriented Gradients (DHOG,方向梯度直方图之间的距离),衡量的也是图像之间的关联性。

M I D H O G = ( 2.0 − N M I ) + α ⋅ D H O G MIDHOG = (2.0 - NMI) + \alpha \cdot DHOG MIDHOG=(2.0NMI)+αDHOG

当应用于纹理较少的图像时,DHOG 的表现比 NMI 好得多。然而,对于纹理较多的图像,NMI 的结果更准确。 因此,MIDHOG 能够通过继承 MI 和 DHOG 的属性来处理不同的场景。

  • Mutual Information Neural Estimation (MINE)

也是看不太懂的一个指标,使用神经网络来估计高维随机变量之间的MI。MINE 可扩展、灵活,并且完全可以通过反向传播进行训练,可用于互信息估计、最大化和最小化。MINE 使用 Donsker-Varadhan (DV) 对偶将 MI 表示为

I ( X , Y ) = sup ⁡ θ ∈ Θ E P ( X , Y ) [ F θ ] − log ⁡ ( E P ( X ) P ( Y ) [ e F θ ] ) I(X,Y) = \sup_{\theta\in\Theta} \mathbb{E}_{P(X,Y)}[F_\theta] - \log(\mathbb{E}_{P(X)P(Y)}[e^{F_\theta}]) I(X,Y)=θΘsupEP(X,Y)[Fθ]log(EP(X)P(Y)[eFθ])

其中 F / t h e t a F_/theta F/theta是神经网络参数化的函数 / t h e t a /theta /theta就是神经网络的参数。

3.1.3 Optimization methods

这部分就是总结了一些现有的优化方法,不乏一些耳熟能详的名字:

  • Barzilai–Borwein steepest descent method:Barzilai-Borwein 最速下降法是一种梯度法,其步长在成本函数梯度的方向上自适应。
  • Nelder–Mead downhill simplex method:Nelder-Mead 方法是一种直接搜索方法,常用于求解导数未知的非线性优化问题。
  • Levenberg–Marquardt algorithm:Levenberg-Marquardt算法是一种常用的解决非线性最小化问题的迭代算法。
  • Particle swarm optimization:粒子群优化是一种全局优化算法。它的工作原理是将初始粒子群随机放置在搜索空间中,然后迭代优化以解决问题。
  • Broyden–Fletcher–Goldfarb–Shanno (BFGS) quasi-Newton method:BFGS 拟牛顿法是一种基于梯度的算法,用于最大化目标函数。
  • The Bound Optimization BY Quadratic Approximation (BOBYQA) algorithm:BOBYQA 算法 (Powell 2009) 是一种确定性的、无导数的优化算法,依赖于迭代构造的二次近似。

3.1.4 Summary of information theory based methods

这部分总结直接看表吧(这里就截图了):

在这里插入图片描述
在这里插入图片描述

我看下来觉得这部分的核心其实就在于:构建出来图像和点云投影后的图像之间的全局关联,所以这里选择的一些特性其实我觉得也算是一种变样的特征,然后进行数据关联后再进行外参估计的这样一个过程,给我的直观感觉比较复杂。

3.2 Feature based methods(特征法)

特征法顾名思义,这里直接进行特征的提取和匹配,不再进行统计量的计算过程。常用的特征可以被归结为三类:几何特征、语义特征和运动特征,这些特征需要从雷达点云和图像上进行提取。具体来说,几何特征由环境中的一组几何元素(如点或边)构成。语义特征是高级表示,通常指定环境中的语义感知组件,例如天际线(skyline)、汽车和电线杆。运动特征描述移动物体的特征,包括姿势、速度、加速度等。特征法也可以大致分为三个步骤:特征提取、特征匹配和变换估计

  1. 特征提取:从点云和图像中提取稳定且独特的特征,这些特征通常表示周围环境中的特定几何或语义元素。
  2. 特征匹配:特征匹配旨在提供从点云中提取的特征与图像之间的对应关系。为此,应用了各种特征描述符以及特征之间的空间关系。
  3. 变换估计:此步骤根据特征匹配提供的特征对应关系估计 LiDAR 相机校准的转换关系,即外参。常用的算法包括矩阵奇异值分解(SVD)等。

特征法外参估计的一个大致流程图如下:

在这里插入图片描述

3.2.1 Feature extraction

特征提取的方法有很多了,但在相机雷达标定这种场景下,要使用的是一对用于点云和图像的特征提取方法。和信息论方法相似,也是按照"点云方法 – 图像方法"进行的总结,然后将这些特征对分成了三类:分别使用几何特征、语义特征和运动特征。

首先是几何特征,通常使用特征点或者边缘特征,一是特征点(其实是points of interest,我感觉就翻译成特征点就可以了),这里值得注意的一点是,说是提取点云的特征,但看起来大部分办法也是把点云投影到图像后再对投影图像做的特征提取

  • Förstner operator–Förstner operator:Förstner 算子 是一种快速算子,用于检测和精确定位不同的点和角点。该算法以亚像素精度从图像中提取连接点和圆形点。可以通过将点投影到距离图像中并应用 Förstner 算子来提取 LiDAR 点云中的兴趣点。
  • Corner–Corner:在城市场景的数据中可以自然地找到角点。这些边缘可以通过边缘检测器(如 Sobel 算子)检测出来。与上述 Förstner 算子的情况类似,角点特征提取可以在相机图像和点云投影强度图像上执行。
  • SIFT–SIFT:尺度不变特征变换 (SIFT)是一种流行的特征点,用于检测和匹配图像中的局部特征。使用 SIFT,提取的点特征对于图像平移、缩放和旋转具有不变性,并且对于光照变化和仿射或 3D 投影具有部分不变性。有几种 SIFT 变体可用于点特征提取。例如,加速稳健特征 (SURF) 是 SIFT 的更快版本,仿射 SIFT (ASIFT)将 SIFT 方法扩展为完全仿射不变。对于图像和点云,基于 SIFT 或其变体的兴趣点提取是在原始图像和投影图像上执行的。

除了特征点,边缘特征也是很常用的一种,点云和图像中的这些边缘包含有用的环境几何信息,特别是对于点特征提取并不稳定性的环境。

  • Depth discontinuity—Intensity difference:利用深度不连续性可以提取 LiDAR 点云中的边缘。具体而言,通过计算相邻点之间的深度差异并滤除差异值低于预设阈值的点来从点中识别出这些边缘(Levinson and Thrun 2013)。 该思想已广泛应用于各种边缘提取方法(Blaga and Nedevschi 2017;Banerjee et al. 2018;Munoz-Banon et al. 2020;Ma et al. 2021;Wang et al 2018;Xu et al 2019)。该思想可以进一步扩展,首先通过对点云进行上采样生成密集深度图,然后通过计算深度的梯度变化来识别边缘(Castorena et al 2016)。同时,可以通过检测像素强度的形状变化来提取图像中的边缘。通常假设点云中通过深度不连续性提取的边缘与图像中通过强度差异提取的边缘一一对应。
  • Depth discontinuity—Sobel operator:LiDAR点云边缘提取和上面介绍的一样,但头像的边缘特征则换成了Sobel算子(根据灰度值进行图像边缘提取的方法),Sobel 算子结合高斯平滑和微分来计算图像强度函数梯度的近似值。当然,这些年图像的边缘提取方法还包括CANNY以及LSD算法等。(PS:这里所谓的图像边缘提取感觉就是图像线特征提取?)
  • 3D直线检测-LSD:我感觉这里的3D直线检测和边缘提取差别不是很大。。3D 线检测器基于点云分割和 2D 线检测器,针对结构化环境采用简单的 3D 点云段检测算法。图像的话则是用LSD。
  • Depth continuity—Canny detector:前面说的是深度不连续性,这里则是深度连续性。其实两种对应的是不同的边缘,深度不连续对应的往往是前景和背景分割的那种边缘,而深度连续边缘是具有连续变化的深度值的边缘,通常是平面交叉线。通常的提取方法是通过点云体素划分和平面拟合来提取,即将点云划分为给定大小的小体素,然后反复使用 RANSAC 拟合和提取这些体素中的平面 (Yuan et al. 2021)。图像的话则是Canny算子。
  • Depth continuity—L-CNN:这里主要是对文章"LiDAR-Camera Calibration Using Line Correspondences"的解释,建筑物的边缘通常具有尖锐的边缘和明确的线条纹理,这些都可以在点云和图像中轻松提取。通过各种点云分割方法识别相应建筑物的平面。然后,基于这些分割的三维平面,通过线检测算法方便地获得点云中的边缘,即平面相交线。图像方面,可以训练L-CNN的端到端神经模型,以输出包含语义上重要且几何上突出的线和交叉点的矢量化线框。

但是值得注意的是,现实环境往往包含大量相似的几何特征,这会增加激光雷达-相机标定的难度。而语义特征往往可以反应一些高级的特性,包括天际线(skyline)、车辆以及道路线等等。这些信息在不同的传感器下也应该是一直的,所以可以基于这些语义信息约束来进行外参的标定。

  • Skyline–Skyline:天际线是城市环境中天空与其他物体之间的曲线或轮廓。此语义特征在 LiDAR 点云和图像中都很明显,可以提取出来进行校准。天际线的提取也有很多方法,文章做了简单的介绍,这里不再赘述。
  • Lane and Pole–Lane and Pole:车道线和电线杆都是有明显线形的物体,除了检测像素变化一类的提取方法,像BiSeNet-V2这种神经网络也是被广泛使用,并通过CRF算子改进轮廓来进一步完善。
  • 3D Semantic Centroid–2D Semantic Centroid:因为CNN在语义分割方面的突出表现,有很多网络也被用于相机雷达标定中的语义分割了。像"Soic: semantic online initialization and calibration for lidar and camera."文章中,就分别用了PointR-CNN进行点云语义分割和Nvidia Semantic Segmentation进行图像的语义分割。

除了几何特征和语义特征,文章还提到了一种运动特征:比如运动的轨迹。但我觉得这个其实和下面ego-motion的部分更贴合一些啊?先往下看看

3.2.2 Feature matching strategies

上面介绍的特征提取方法都是分别提取到了点云和图像的特征,那么两者之间的匹配就是必不可少的了。文章接下来就是对常见的特征匹配策略进行了总结。

  • Descriptors similarity(描述子相似性):这个一般都是针对特征点的,对每个特征点都可以依据一定的原则进行描述子的计算,当然,这个也是针对点云投影后图像的,匹配方法也有很多了:暴力匹配,最近邻点等。(针对误匹配的主要方法是RANSAC)
  • Spatial geometrical relation(空间几何关系):该类特征匹配策略旨在直接利用空间几何关系和最优化方法建立给定两个特征集的对应关系,尽可能地对齐分布在空间不同位置的特征(如线特征),并假设当这些特征完全对齐时,校准参数达到最优解。
  • Semantic relation(语义关系):这个就没什么好说的了,就是语义信息一致匹配,比如车对车,道路线对道路线。
  • Trajectory relation(轨迹关系):轨迹关联的基本方法是基于匹配具有相同时间戳的两个轨迹中的位置。此外,速度和曲率也可用于匹配这些轨迹。

3.2.3 Summary of feature based methods

也是直接看表吧(依旧是保存成图片了)

在这里插入图片描述

3.3 Ego‑motion based methods(运动估计法)

感觉这里才像是"运动特征法",包括原文也是"In this scope, some methods try to find the correspondence between the trajectories generated by LiDARs and those by cameras",进一步分成了两大类:手眼标定和3D结构估计。

3.3.1 Hand‑eye based methods(手眼标定法)

手眼标定其实在机器人视觉里是一个基本且经典的问题,这里不做详细的介绍。这个问题最后也可以转换成 A X = X B AX = XB AX=XB的形式,其中 A 和 B 分别描述手臂和相机的运动,X 是所需的未知变换矩阵。先简单介绍一些符号表达:
T T T:LiDAR和相机之间的变换矩阵
T L i T_L^i TLi:LiDAR从时间 t i t_i ti t i + 1 t_{i+1} ti+1的运动或变换
T C i T_C^i TCi:相机从时间 t i t_i ti t i + 1 t_{i+1} ti+1的运动或变换
然后就可以直接构造恒等关系:
T C i T = T T L i T_C^iT = TT_L^i TCiT=TTLi
关于手眼标定的可视化描述可见下图:
在这里插入图片描述

手眼标定也可以简单分成三个步骤:

  1. 每种传感器的运动估计:也就是分别估计LiDAR的运动和相机的运动。
  2. 估计外参:根据上面的公式来估计外参,通常会把变换矩阵拆开,先根据 R C i R T = R T R L i R_C^iR_T = R_TR_L^i RCiRT=RTRLi来估计旋转,然后直接把旋转带入来求解平移: ( R C i − I ) t T = R T t L i − t C i (R_C^i - I)t_T = R_Tt_L^i - t_C^i (RCiI)tT=RTtLitCi
  3. 细化外参:根据齐次方程解出来的初值很可能包含误差,因此可以利用一些其他的约束来进一步优化外参,来减小误差。

经典的手眼标定流程如下:
在这里插入图片描述

文章对手眼标定的方法就不像前两种那种"雷达-图像"对应的方式进行了,而是主要针对每个步骤进行的。首先是运动估计方面:

  • LiDAR motion estimation(雷达运动估计):这就是经典问题了,最经典的算法就是ICP了,当然还有变种ICP以及NDT之类的方法,其实这里我感觉就可以看作是LiDAR里程计问题(经典框架比如LOAM)。
  • Camera motion estimation(相机运动估计):也是经典问题,第一种思路就是用SfM解决,另一种也是堪称里程计的方法来解决,比如ORB-SLAM。

然后文章对旋转的表达也进行了分类(经典),还是旋转矩阵、角轴、李代数以及四元数。(关于旋转的表达实在是太经典的问题了,事实上文章对这里的描述还不如很多博客的描述,所以这里也就不再细说了,可以自行查阅)

关于外参细化,其实还是利用环境信息进行了一些约束,比如对齐边缘等等,下面也是分别介绍了几类。

  • Edge alignment(边缘对齐):这里感觉又回到前面特征法那里了。。比如可以提取线特征作为一种约束
  • Intensity matching(强度匹配):这里感觉则是回到信息论法了。。如用强度信息
  • Depth matching(深度匹配):LiDAR 深度图是通过初始外部参数投影 LiDAR 点云生成的,而相机深度图是通过单目深度估计生成的。其原理是 LiDAR 深度图中的任意点应与相机深度图中同一像素坐标处的像素绑定,并且它们的深度值应相同。
  • Color matching(颜色匹配):这个其实有点像光流法的意思,假设点云中的点与两个连续帧中的相机图像具有相同的颜色。首先将点投影到图像上以获得局部像素的对应颜色,然后将相同的点投影到图像的下一帧,时间偏移由估计的运动信息补偿。通过最小化当前帧和前一帧中点的颜色之间的平均差异,可以获得更准确的外参。
  • 3D-2D point matching(3D-2D匹配):看起来就是重投影误差,经典

关于手眼标定的总结如下表(图):

在这里插入图片描述

3.3.2 3D structure estimation based methods(3D结构重建的方法)

这里其实又是SfM,主要介绍了几个工作吧(我觉得这里的分类并不是很好,很多工作都是重叠的):

  1. “Refined non-rigid registration of a panoramic image sequence to a LiDAR point cloud.”
    先用2D图像恢复3D点云,然后把恢复出来的和雷达点云ICP,最后通过SIFT特征点来增加约束。
  2. "Fully automatic registration of image sets on approximate geometry. "
    这篇文章将标定分为粗配准和细配准过程,将ICP算法应用于LiDAR生成的点云得到中间结果后,再用MI来细化结果。
  3. “Automatic extrinsic calibration of monocular camera and LIDAR in natural scenes.”
    这篇文章利用车辆运动中的序列场景信息获取初始外参,该方法利用SfM算法从二维图像序列中计算出三维点,并通过ICP算法将SfM点与LiDAR点配准得到初步结果,然后将三维LiDAR点投影到二维图像平面,利用边缘特征点采用组合优化方法进一步提升外参数的精度。
  4. “Automatic registration of panoramic image sequence and mobile laser scanning data using semantic features.”
    SfM和LiDAR点云密度差距比较大的时候ICP很容易就失败了,这篇文章提出了一种基于从全景图像和点云中提取语义特征的自动配准方法。他们利用GPS和IMU辅助SfM算法获取旋转参数,然后从两个模态中提取车辆,通过最大化相应目标对的重叠面积来估计平移参数。
  5. “Online targetless end-to-end camera-LIDAR self-calibration.”
    这篇文章提出了一种具有对象级配准的外部校准方法。首先,他们使用 SfM 从连续的相机图像生成可用于对齐和配准的点云,然后根据对象检测结果在生成的点云和 LiDAR 点云之间引入目标级对齐。
  6. “On-the-fly camera and lidar calibration.”
    这个主要是对上面工作的扩展,主要针对配准阶段进行了优化。他们在对象级配准步骤之后使用点级 ICP 方法设法减少配准误差,然后引入了一种基于曲线的非刚性点云配准细化步骤,该步骤建立在非均匀有理基样条近似之上。

3.3.3 Other Methods

剩下的还有一些其他的方法,这部分就没再仔细看了(都是有一些特殊性的工作,感觉没有什么拓展性)

3.3.4 Summary of ego‑motion based methods

这部分其实没什么好说的,感觉类似于一种松耦合的方法,分别用相机和LiDAR的信息,然后再想办法把两部分匹配起来。

3.4 Learning based methods(深度学习方法)

3.4.1 End-to-end methods(端到端方法)

这里的端到端指的是:输入点云和图像,直接输出外参
正常的思路是把点云、图像和真实参数直接输入到模型,但是因为数据量很大,所以这个真实参数注定会很麻烦,所以在文章"RegNet: multimodal sensor registration using deep neural networks."中,就引入了一个标定偏差 ϕ m i s − c a l i b \phi_{mis-calib} ϕmiscalib,利用带有误差的外参初值 T i n i t T_init Tinit和相机内参 K K K进行投影,这样就可以获得大量的训练数据了。
端到端的方法的网络结构可以分为三类:

  • (1)Regression(回归):此类别中的方法以 RGB 图片和深度图像作为输入。​​它们的网络通常有两个分支,分别从 RGB 和深度图像中提取特征。然后,通过特征匹配组件融合两种模态的特征。最后,对从两种模态中提取的全局信息进行回归,以获得误校准参数。回归方法的通用架构如下所示。
    在这里插入图片描述

  • (2)RegNet:这是第一个将特征提取、特征匹配和全局回归集成到CNN里的相机雷达外参估计的模型,里面具体使用了NiN模块去提取LiDAR深度图和RGB图像的特征。

  • (2)CalibNet:考虑了几何信息并在模型中引入了 3D 空间变换层。RGB 分支是预训练的 ResNet-18的卷积层,深度分支是类似的网络,但过滤器数量减半。然后将两个输出连接起来并通过全局聚合块。CalibNet 通过最大化图像和点云之间的几何和光度一致性来执行端到端训练。

  • (2)RGGNet:该方法考虑了黎曼几何,并采用深度生成模型来构建容差感知损失函数。RGGNet 不仅考虑校准误差,还关注误差范围内的容差

  • (2)CalibRCNN:结合了CNN和LSTM,两个分支的输出特征被融合,然后输入到 LSTM 层以提取时间特征进行顺序学习。CalibRCNN 不仅在连续帧之间添加了姿势约束,还使用几何和光度损失来提高预测变换参数的校准精度。

  • (2)CalibDNN:这是一个具有一个模型和一次迭代的简单系统,它考虑了变换损失和几何损失,以最大限度地提高多模态数据的一致性。

  • (2)LCCNet:为了匹配深度图像和 RGB 图像之间的特征,构建了成本体积层,而不是直接连接特征。除了平滑的 L1-Loss 作为地面实况的监督外,还在损失函数中添加了点云约束。

  • (3)Calibration Flow:此类别中的方法以 2D 图片和 LiDAR 深度图作为输入。将来自两种模态的图像输入到光流网络中,以预测未校准的深度图与 RGB 图像之间的流动,然后获得云点与图像像素之间的对应关系。最后,可以通过最小化投影误差来优化初始外部参数。CFNet、DXQ-Net等。

  • (4)Keypoints(所以怎么又蹦出来个第四类):网络从输入数据中提取特征描述符,然后为每个 3D 关键点在图像上找到对应的 2D 点。最后,可以估计 LiDAR 和相机之间的外参。如:RGKCNet。

3.4.2 Hybrid‑learning methods(混合学习方法)

混合学习方法仅使用神经网络提取几何、语义特征等信息,而特征关联和外部参数计算过程仍然基于非学习方法。这个方法感觉还挺好的,感觉通过提升标定流程里模块的精度,说不定可以实现整体精度的提升

3.4.3 Summary of learning based methods

深度学习方法需要比较大的数据支撑,目前泛化能力还有待提升。

总结

文章针对现有的一些相机-雷达外参标定的方法进行了综述,整体总结还是非常全面的,但我个人觉得在一些分类上会有一些重叠,当然这和相机-雷达标定本身的性质也有一定关系;同时,由于相机雷达标定的特殊性,这里没有像一些其他领域的综述一样,会放一些数据性的指标,也就是没有量化对比的部分,所以看上去没有那么直观。这里没有对文章进行整体的翻译,还是以了解各类方法为主要目的。推荐大家去仔细翻阅下原文,对相机类大标定的一个大概进展能有比较直观的掌握。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第13篇 冒泡排序__ARM C语言<二>

Q:如何设计ARM C语言程序对数组进行降序排列? A:基本原理也和Nois II C语言程序一样:通过不断的比较和交换数组中的数据元素,最终使得最大的数据“冒泡”排到到数组最末,并逐步缩小待排序的范围直到所有数…

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集AI-FGTM介绍算法流程初始化迭代更新( t 0 t 0 t0 到 T − 1 T - 1 T−1)迭代完成 AI-FGTM代码实现AI-FGTM算法实现攻击效果 代码汇总aifgtm.pytrain.pyadvtest.py 之前已经…

C++程序启动报错和启动失败的常见原因分析与排查经验总结

目录 1、概述 2、程序启动报错的原因分析与排查方法 2.1、程序启动时报找不到依赖的dll库 2.1.1、找不到C/C运行时库 2.1.2、找不到依赖的业务库 2.2、程序启动时报在依赖的dll库中找不到接口 2.3、程序启动时报0xC000007B错误码 3、程序启动不了(启动失败&…

《通义千问AI落地—中》:前端实现

一、前言 本文源自微博客且已获授权,请尊重版权. 书接上文,上文中,我们介绍了通义千问AI落地的后端接口。那么,接下来我们将继续介绍前端如何调用接口以及最后的效果;首先看效果: 上述就是落地到本微博客以后的页面效果…

Python OCR 文字识别

一.引言 文字识别,也称为光学字符识别(Optical Character Recognition, OCR),是一种将不同形式的文档(如扫描的纸质文档、PDF文件或数字相机拍摄的图片)中的文字转换成可编辑和可搜索的数据的技术。随着技…

闯关leetcode——3158. Find the XOR of Numbers Which Appear Twice

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/find-the-xor-of-numbers-which-appear-twice/description/ 内容 You are given an array nums, where each number in the array appears either once or twice. Return the bitwise XOR of all …

深度学习中的并行策略概述:2 Data Parallelism

深度学习中的并行策略概述:2 Data Parallelism 数据并行(Data Parallelism)的核心在于将模型的数据处理过程并行化。具体来说,面对大规模数据批次时,将其拆分为较小的子批次,并在多个计算设备上同时进行处…

shiro权限校验demo

这里通过链式hashmap添加进去接口权限,用安全管理器设置过滤,并且设置登录跳转(登录页面需要自己写,shiro不提供,不像springboot那样智能) 效果如下: 点击add和update均跳转到如下登录页面 那么…

基于单片机的多功能智能小车(论文+源码)

1.系统整体方案 此次多功能智能小车的设计系统,其整个控制电路的框架如下图所示。整个系统采用STC89C52单片机为控制器其中:LCD液晶负责显示当前信息,蜂鸣器负责特殊情况下进行报警提醒,红外遥控模块方便用户进行远程操作小车,电机模块拟采用前驱的方式…

Log4j1.27配置日志输出级别不起效

起因:构建独立版本debezuim使用时,日志一直打印debug信息。 原因:包冲突问题,进行排包操作。 参考log4j日志级别配置完成后不生效 系统一直打印debug日志_log4j不起作用-CSDN博客 1、application.properties logging.configc…

LabVIEW如何学习FPGA开发

FPGA(现场可编程门阵列)开发因其高性能、低延迟的特点,在实时控制和高速数据处理领域具有重要地位。LabVIEW FPGA模块为开发者提供了一个图形化编程平台,降低了FPGA开发的门槛。本篇文章将详细介绍LabVIEW FPGA开发的学习路径&…

shell脚本定义特殊字符导致执行mysql文件错误的问题

记得有一次版本发布过程中有提供一个sh脚本用于一键执行sql文件,遇到一个shell脚本定义特殊字符的问题,sh脚本的内容类似以下内容: # 数据库ip地址 ip"127.0.0.1" # 数据库密码 cmdbcmdb!#$! smsm!#$!# 执行脚本文件(参…

Jimureport h2命令执行分析记录

首先找testConnection接口,前面进行了jimureport-spring-boot-starter-1.5.8.jar反编译查找,接口找到发现请求参数是json var1是JmreportDynamicDataSourceVo类型,也就是如上图的dbSource,根据打印的结果可以知道这里是local cac…

蓝牙协议——音量控制

手机设置绝对音量 使用Ellisys查看如下: 使用Wireshark查看如下: 音量的量程是128,0x44的十进制是68,53%或54%音量的计算如下: 68 / 128 53.125%耳机设置绝对音量

熊军出席ACDU·中国行南京站,详解SQL管理之道

12月21日,2024 ACDU中国行在南京圆满收官,本次活动分为三个篇章——回顾历史、立足当下、展望未来,为线上线下与会观众呈现了一场跨越时空的技术盛宴,吸引了众多业内人士的关注。云和恩墨副总经理熊军出席此次活动并发表了主题演讲…

提高保养效率:4S店预约系统的设计与开发

3.1可行性分析 开发者在进行开发系统之前,都需要进行可行性分析,保证该系统能够被成功开发出来。 3.1.1技术可行性 开发该4S店预约保养系统所采用的技术是vue和MYSQL数据库。计算机专业的学生在学校期间已经比较系统的学习了很多编程方面的知识&#xff…

简单了解函数递归

函数递归 一 了解函数递归二 深入理解函数递归的思想三 函数递归的优缺点 一 了解函数递归 首先&#xff0c;我们通过一个简单的代码来理解函数递归。 #include<stdio.h> int Func() {return Func(n1); } int main() {int n 5;Func(n);return 0; }这个就是函数递归&am…

重温设计模式--设计模式七大原则

文章目录 1、开闭原则&#xff08;Open - Closed Principle&#xff0c;OCP&#xff09;定义&#xff1a;示例&#xff1a;好处&#xff1a; 2、里氏替换原则&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09;定义&#xff1a;示例&#xff1a;好处&#…

GiliSoft AI Toolkit v10.1

Gilisoft AI Toolkit是一个综合性的软件包&#xff0c;为企业和个人提供了一个集成人工智能技术到其工作流程中的解决方案。该软件包包括了多种与人工智能相关的工具&#xff0c;如聊天机器人、光学字符识别(OCR)、文本到语音(TTS)和自动语音识别(ASR)软件。它的目的是通过各种…

四种自动化测试模型实例及优缺点详解

一、线性测试 1.概念&#xff1a; 通过录制或编写对应应用程序的操作步骤产生的线性脚本。单纯的来模拟用户完整的操作场景。 &#xff08;操作&#xff0c;重复操作&#xff0c;数据&#xff09;都混合在一起。 2.优点&#xff1a; 每个脚本相对独立&#xff0c;且不产生…