0. 简介

作为常用的配准方法,ICP和NDT两种匹配被广泛应用于激光雷达的点云配准方法中。我们知道IPC的匹配主要是描述了点到点的匹配方法,而无法胜任点到面以及面到面的匹配,而本博客主要就是将向读者分析《​​Generalized-ICP​​》这篇论文,GICP可以通过点到点的距离作为损失函数求解point-to-point的损失函数,点到局部目标点局部拟合的平面距离作为point-to-plane的损失函数,而文中主要提到的plane-to-plane损失函数则是假设点云具有平面特征,这意味着在3D空间处理采样2D流形。

1. GICP统一模型

GICP引入了概率信息(使用协方差阵),提出了ICP的统一模型。本文方法的核心思想是如何从概率的角度去看待和推导出ICP算法的目标函数。这里我们直接看原文就好,原文提到:
假设有两个匹配好的点集,经典论文阅读之-GICP(ICP大一统)_gicp , 且 经典论文阅读之-GICP(ICP大一统)_gicp_02经典论文阅读之-GICP(ICP大一统)_gicp_03

再假设两个点云中的每个点,都是服从高斯分布的,其原因是由于测量等环节的误差,每个点的位置的测量值实际上是和真值经典论文阅读之-GICP(ICP大一统)_点云_04存在偏差
经典论文阅读之-GICP(ICP大一统)_点到点_05

对于经典论文阅读之-GICP(ICP大一统)_点云_04有:

经典论文阅读之-GICP(ICP大一统)_点到点_07

经典论文阅读之-GICP(ICP大一统)_损失函数_08(注意有上标经典论文阅读之-GICP(ICP大一统)_点到点_09)是理想中的correct rigid transform。代表了两个点云真实的转换关系,我们需要一个目标函数来寻找出最佳的经典论文阅读之-GICP(ICP大一统)_损失函数_08,以下是目标函数的推导过程:

首先定义残差经典论文阅读之-GICP(ICP大一统)_损失函数_11经典论文阅读之-GICP(ICP大一统)_点云_12代表了对原始点云使用经典论文阅读之-GICP(ICP大一统)_点云_13做转换后,第经典论文阅读之-GICP(ICP大一统)_gicp_14个点对的有向距离。

它是由分布采样而来

经典论文阅读之-GICP(ICP大一统)_论文阅读_15

其中的等号变换可以参考这篇文章。

因为经典论文阅读之-GICP(ICP大一统)_gicp_16都被我们假设为独立的、服从高斯分布的随机变量,所以将上式中的经典论文阅读之-GICP(ICP大一统)_点云_13替换为经典论文阅读之-GICP(ICP大一统)_损失函数_08,则可以变为:

经典论文阅读之-GICP(ICP大一统)_点到点_19

接下来就是这篇文章的重点, 经典论文阅读之-GICP(ICP大一统)_点云_13可以被看作 经典论文阅读之-GICP(ICP大一统)_论文阅读_21的概率分布中待估计的分布参数,借助最大似然估计(MLE)的思想,我们寻找一个是的当前样本 经典论文阅读之-GICP(ICP大一统)_点云_22出现概率最大的经典论文阅读之-GICP(ICP大一统)_点云_13
经典论文阅读之-GICP(ICP大一统)_论文阅读_24

这一部分是执行了取log的操作,然后进一步化简

经典论文阅读之-GICP(ICP大一统)_点到点_25

上面的式子是参考了​​Multivariate normal distribution​​​的取对数以及代入的方法。
对于多元常态分布经典论文阅读之-GICP(ICP大一统)_点云_26,其概率密度函数可以表示为
经典论文阅读之-GICP(ICP大一统)_损失函数_27
对上面的式子取log可以得到:
KaTeX parse error: \cr valid only within a tabular/array environment
代入经典论文阅读之-GICP(ICP大一统)_点云_28,得到:
经典论文阅读之-GICP(ICP大一统)_论文阅读_29
这样也就得到了我们上面的输出结果。这里的结果如果发现正态分布的协方差矩阵的行列式为常数时,则只需要优化最后一项就可以了。最后一项的二次型又被称作马哈拉诺比斯距离(马氏距离),极大似然估计等价于最小化样本点与均值之间的马氏距离。更详细的内容可以参考 高翔《视觉SLAM14讲》6.1 状态估计问题 。

这一部分则是对上一步的进一步化简,在 经典论文阅读之-GICP(ICP大一统)_论文阅读_30的情況下经典论文阅读之-GICP(ICP大一统)_gicp_31

经典论文阅读之-GICP(ICP大一统)_损失函数_32

然后又因为​​三维刚体变换矩阵​​中的​​旋转矩阵​​​行列式值为1,平移矩阵行列式值也为1。又因为经典论文阅读之-GICP(ICP大一统)_点云_13是旋转平移矩阵,可以拆成旋转矩阵和平移矩阵的乘积。且经典论文阅读之-GICP(ICP大一统)_gicp_34,所以有矩阵的行列式值经典论文阅读之-GICP(ICP大一统)_论文阅读_35,因此经典论文阅读之-GICP(ICP大一统)_gicp_36

经典论文阅读之-GICP(ICP大一统)_gicp_37

照​​视觉十四讲​​​所说,这里对经典论文阅读之-GICP(ICP大一统)_点云_13做优化。其中第一项为常数,则可以忽略,其中经典论文阅读之-GICP(ICP大一统)_点到点_39可以​​​参考这个推导​​。

然后舍去负号,则可以将上式化简为论文中的公式2:
经典论文阅读之-GICP(ICP大一统)_论文阅读_40

到此为止我们学习了GICP中最主要的公式推导公式了。

2. ICP应用

这里我们直接参照keineahnung2345的文章。文中介绍了三种ICP的推导,这一节要借助上文的结论。

2.1 point-to-point

传统的点到点ICP可以用GICP的框架表示如下
经典论文阅读之-GICP(ICP大一统)_论文阅读_41
验证:
经典论文阅读之-GICP(ICP大一统)_论文阅读_42
可以看出其目标为最小化点对间距离的平方和,也就是点到点ICP更新公式

2.2 point-to-plane

首先定义一个为正交的投影矩阵经典论文阅读之-GICP(ICP大一统)_点云_43,有以下性质经典论文阅读之-GICP(ICP大一统)_损失函数_44
其中经典论文阅读之-GICP(ICP大一统)_点云_43会将向量投影到目标点云经典论文阅读之-GICP(ICP大一统)_点云_46中的第经典论文阅读之-GICP(ICP大一统)_gicp_14经典论文阅读之-GICP(ICP大一统)_gicp_03法向量的局部平面上,因此经典论文阅读之-GICP(ICP大一统)_点云_49也就是转换后的经典论文阅读之-GICP(ICP大一统)_gicp_02经典论文阅读之-GICP(ICP大一统)_gicp_03所在平面的距离。
验证:
经典论文阅读之-GICP(ICP大一统)_论文阅读_52

和GICP比较我们就可以发现关系为

经典论文阅读之-GICP(ICP大一统)_损失函数_53

2.3 plane-to-plane

这里是GICP专门提出的一种方法,即相对于点到点和点到面加入概率模型(协方差阵)

平面到平面算法的做法是,假设点云具有平面特征,这意味着在3D空间处理采样2D流形。 由于现实世界的曲面至少是分段可微的,我们可以假设我们的数据集是局部平面的。此外,由于我们从两个不同的角度对流形进行采样,因此通常不会对完全相同的点进行采样(即,对应关系永远不会是精确的)。 从而导致采样点在局部拟合的平面方向上的不确定性较大,但是在法向量方向上不确定性较小。

为此,每个测量点仅提供沿其曲面法线的约束。为了对这种结构进行建模,我们考虑每个采样点沿其局部平面以高协方差分布,而在曲面法线方向(垂直于平面方向)以极低协方差分布(即点云法线方向不在局部平面上)。假设局部拟合平面上某一点的法向量经典论文阅读之-GICP(ICP大一统)_论文阅读_54是沿X轴的,则该点协方差矩阵变为:

经典论文阅读之-GICP(ICP大一统)_论文阅读_55

经典论文阅读之-GICP(ICP大一统)_gicp_56为沿着法线方向极小的常数。

因为实际上法向量并不一定是沿经典论文阅读之-GICP(ICP大一统)_gicp_57轴方向,所以需要进行坐标转换。假设 经典论文阅读之-GICP(ICP大一统)_点到点_58对应的法向量分别为经典论文阅读之-GICP(ICP大一统)_损失函数_59,则它们对应的协方差阵为:
经典论文阅读之-GICP(ICP大一统)_损失函数_60