当前位置: 首页 > news >正文

相机雷达外参标定综述“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

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

总结

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

在这里插入图片描述

相关文章:

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

相机雷达外参标定综述--Automatic targetless LiDAR–camera calibration: a survey 前言1 Introduction2 Background3 Automatic targetless LiDAR–camera calibration3.1 Information theory based method(信息论方法)3.1.1 Pairs of point cloud and image attributes(属性…...

【Java基础-27】Java中的访问修饰符:分类、作用及应用场景

在Java编程中,访问修饰符(Access Modifiers)是控制类、方法、变量和构造函数访问权限的关键工具。通过合理使用访问修饰符,可以有效地封装代码,保护数据,并确保代码的安全性和可维护性。本文将详细介绍Java…...

Redis+注解实现限流机制(IP、自定义等)

简介 在项目的使用过程中,限流的场景是很多的,尤其是要提供接口给外部使用的时候,但是自己去封装的话,相对比较耗时。 本方式可以使用默认(方法),ip、自定义参数进行限流,根据时间…...

SAP从入门到放弃系列之委外分包(Subcontracting)-Part1

以前写过一篇委外相关的文章,没有很详细的写。只是一个概念的概述ERP实施-委外业务-委外采购业务 最近看PA教材,遇到了这块内容,就再详细的整理一下SAP关于委外的理论知识。 文章目录 概述分包和物料需求计划 (MRP)委外分包订单分包委外业务…...

nlp新词发现——浅析 TF·IDF

传统nlp任务处理文本及其依赖已有的词表,只有在词表里出现的词才能被识别并加以处理。但这也带来了一些问题: 假设没有词表,如何从文本中发现新词? 随着时间推移,新词会不断出现,固有词表会过时&#xff0…...

WebGL2示例项目常见问题解决方案

WebGL2示例项目常见问题解决方案 webgl2examples Rendering algorithms implemented in raw WebGL 2. [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/we/webgl2examples 项目基础介绍 WebGL2示例项目(https://github.com/tsherif/webgl2examples.gi…...

鸿蒙元服务从0到上架【第三篇】(第二招有捷径)

第一招:开始发布元服务 AppGallery 上传通过IDE生成的图标,后面按照步骤填写 后台有隐私政策链接生成处,前往填写生成 第二招:用户协议 对于没有服务器或者是需要极速开发的开发者,可通过gitee生成用户协议&…...

Jimureport h2命令执行分析记录

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

vue 集成 webrtc-streamer 播放视频流 - 解决阿里云内外网访问视频流问题

资料&#xff1a; 史上最详细的webrtc-streamer访问摄像机视频流教程-CSDN博客 webrtc目录 前端集成 html文件夹里的webrtcstreamer.js&#xff0c;集成到前端&#xff0c;可以访问webrtc&#xff0c;转换rtsp为webrtc视频流&#xff0c;在前端video中播放 <videoref&quo…...

进网许可认证、交换路由设备检测项目更新25年1月起

实施时间 2025年1月1日起实施 涉及设备范围 核心路由器、边缘路由器、以太网交换机、三层交换机、宽带网络接入服务器&#xff08;BNAS&#xff09; 新增检测依据 GBT41266-2022网络关键设备安全检测方法交换机设备 GBT41267-2022网络关键设备安全技术要求交换机设备 GB/…...

Provides transitive vulnerable dependency maven 提示依赖存在漏洞问题的解决方法

问题描述 如下图所示&#xff0c;对于 java 项目某些依赖&#xff0c;IDEA 提示&#xff0c;引用了含有漏洞的依赖。如果是单个依赖&#xff0c;可以考虑直接升级版本即可。但是对于传递性依赖&#xff0c;比如 flink 项目中&#xff0c;依赖的部分模块&#xff0c;它们自己依…...

WebAuthn 项目常见问题解决方案

WebAuthn 项目常见问题解决方案 webauthn Webauthn / passkeys helper library to make your life easier. Client side, server side and demo included. [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/webaut/webauthn 项目基础介绍 WebAuthn 项目是一个开源…...

LeetCode 844. 比较含退格的字符串 (C++实现)

1. 题目描述 给定 s 和 t 两个字符串&#xff0c;当它们分别被输入到空白的文本编辑器后&#xff0c;如果两者相等&#xff0c;返回 true 。# 代表退格字符。 注意&#xff1a;如果对空文本输入退格字符&#xff0c;文本继续为空。 示例 1&#xff1a; 输入&#xff1a;s …...

Python8-写一些小作业

记录python学习&#xff0c;直到学会基本的爬虫&#xff0c;使用python搭建接口自动化测试就算学会了&#xff0c;在进阶webui自动化&#xff0c;app自动化 python基础8-灵活运用顺序、选择、循环结构 写一些小练习题目1、给一个半径&#xff0c;求圆的面积和周长&#xff0c;…...

C++ STL vector基本原理和用法

文章目录 基本原理1. 数据存储结构2. 内存管理机制3. 迭代器实现原理4. 元素访问原理5. 插入和删除元素原理 常见用法1. 概述2. 包含头文件3. 定义和初始化4. 常用成员函数5. 迭代器6. 内存管理与性能特点7. 应用场景 基本原理 以下是关于 std::vector 的基本原理讲解&#xf…...

【计算机视觉基础CV-图像分类】05 - 深入解析ResNet与GoogLeNet:从基础理论到实际应用

引言 在上一篇文章中&#xff0c;我们详细介绍了ResNet与GoogLeNet的网络结构、设计理念及其在图像分类中的应用。本文将继续深入探讨如何在实际项目中应用这些模型&#xff0c;特别是如何保存训练好的模型、加载模型以及使用模型进行新图像的预测。通过这些步骤&#xff0c;读…...

【人工智能-初级】基于用户的协同过滤推荐算法

文章目录 1. 数据集2. 实验代码3. 代码解释4. 实验结果5. 评估基于用户的协同过滤算法是一种常见的推荐算法,它的核心思想是根据用户之间的相似性来进行推荐。 实验案例: 使用的是电影推荐数据集 MovieLens,实验中我们会通过用户评分数据计算用户之间的相似性,并使用基于用户…...

如何识别钓鱼邮件和诈骗网站?(附网络安全意识培训PPT资料)

识别钓鱼邮件和诈骗网站是网络安全中的一个重要环节。以下是一些识别钓鱼邮件和诈骗网站的方法&#xff1a; 识别钓鱼邮件&#xff1a; 检查发件人地址&#xff1a; 仔细查看发件人的电子邮件地址&#xff0c;看是否与官方域名一致。 检查邮件内容&#xff1a; 留意邮件中是否…...

Rust 在前端基建中的使用

摘要 随着前端技术的不断发展&#xff0c;前端基础设施&#xff08;前端基建&#xff09;的建设已成为提升开发效率、保障产品质量的关键环节。然而&#xff0c;在应对复杂业务场景与高性能需求时&#xff0c;传统的前端技术栈逐渐暴露出诸多不足。近年来&#xff0c;Rust语言…...

【人工智能】基于Python和OpenCV实现实时人脸识别系统:从基础到应用

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着人工智能和计算机视觉的快速发展,人脸识别技术已广泛应用于监控、安全、社交媒体、金融和医疗等领域。本文将介绍如何利用Python和Ope…...

Python 自动化 打开网站 填表登陆 例子

图样 简价&#xff1a; 简要说明这个程序的功能&#xff1a; 1. **基本功能**&#xff1a; - 自动打开网站 - 自动填写登录信息&#xff08;号、公司名称、密码&#xff09; - 显示半透明状态窗口实时提示操作进度 2. **操作流程**&#xff1a; - 打开网站后自动…...

【Chrome】浏览器提示警告Chrome is moving towards a new experience

文章目录 前言一、如何去掉 前言 Chrome is moving towards a new experience that allows users to choose to browse without third-party cookies. 这是谷歌浏览器&#xff08;Chrome&#xff09;关于隐私策略更新相关的提示 提示&#xff1a;以下是本篇文章正文内容&…...

网络下载ts流媒体

网络下载ts流媒体 查看下载排序合并 很多视频网站&#xff0c;尤其是微信小程序中的长视频无法获取到准确视频地址&#xff0c;只能抓取到.ts片段地址&#xff0c;下载后发现基本都是5~8秒时长。 例如&#xff1a; 我们需要将以上地址片段全部下载后排序后再合成新的长视频。 …...

iDP3复现代码模型训练全流程(一)——train_policy.sh

iDP3 核心脚本包括三个&#xff1a;deploy_policy.sh、vis_dataset.sh、train_policy.sh&#xff0c;分别代表了部署、预处理和训练&#xff0c;分别作为对应 py 脚本的参数设置前置环节 训练环节仅需运行指令&#xff1a; # 3d policy bash scripts/train_policy.sh idp3 gr1…...

重温设计模式--单例模式

文章目录 单例模式&#xff08;Singleton Pattern&#xff09;概述单例模式的实现方式及代码示例1. 饿汉式单例&#xff08;在程序启动时就创建实例&#xff09;2. 懒汉式单例&#xff08;在第一次使用时才创建实例&#xff09; 单例模式的注意事项应用场景 C代码懒汉模式-经典…...

【人工智能】Python中的机器学习管道:如何用scikit-learn构建高效的ML管道

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在机器学习项目中,数据预处理、特征工程、模型训练与评估是不可或缺的环节。随着项目规模的扩大和复杂度的增加,手动管理这些步骤不仅繁琐…...

Redis存在安全漏洞

Redis是美国Redis公司的一套开源的使用ANSI C编写、支持网络、可基于内存亦可持久化的日志型、键值&#xff08;Key-Value&#xff09;存储数据库&#xff0c;并提供多种语言的API。 Redis存在安全漏洞。攻击者利用该漏洞使用特制的Lua脚本触发堆栈缓冲区溢出漏洞&#xff0c;从…...

Scala图书管理系统

项目创建并实现基础UI package org.appimport scala.io.StdInobject Main {def main(args: Array[String]): Unit {var running truewhile (running) {println("欢迎来到我的图书管理系统&#xff0c;请选择")println("1.查看所有图书")println("2…...

【数据可视化案列】白葡萄酒质量数据的EDA可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…...

Postman接口测试:全局变量/接口关联/加密/解密

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 全局变量和环境变量 全局变量&#xff1a;在postman全局生效的变量&#xff0c;全局唯一 环境变量&#xff1a;在特定环境下生效的变量&#xff0c;本环境内唯一 …...