Chapter 6. The normal-distributions transform(一)
这一章详细讲解了NDT算法,以及NDT是怎样应用到扫描配准上的。
6.1 NDT for representing surface
用NDT算法来表示光滑表面,第一步是将扫描所占用的空间细分为网格单元(2D情况下为正方形,3D情况下为立方体)。根据单元内的点分布计算每个单元的PDF(probality distribution function 概率分布函数)。每个细胞中的PDF可以被解释为单元内表面点 x ⃗ \vec{x} x的"生成过程"。换句话说,假定 x ⃗ \vec{x} x的位置是通过从这个分布中提取而生成的。假设参考扫描表面点的位置是由D维正态随机过程产生的,则测量 x ⃗ \vec{x} x的似然函数为:
p ( x ⃗ ) = 1 ( 2 π ) D / 2 ∣ Σ ∣ exp ( − ( x ⃗ − μ ⃗ ) T Σ − 1 ( x ⃗ − μ ⃗ ) 2 ) p(\vec{x}) = \frac{1}{(2\pi)^{D/2}\sqrt{|\Sigma|}} \exp(-\frac{(\vec{x} - \vec{\mu})^T\Sigma^{-1}(\vec{x} - \vec{\mu})}{2}) p(x)=(2π)D/2∣Σ∣1exp(−2(x−μ)TΣ−1(x−μ))
其中 μ \mu μ和 Σ \Sigma Σ分别是扫描表面中由 x ⃗ \vec{x} x组成的网格中的均值向量和协方差矩阵:
μ ⃗ = 1 m ∑ m = 1 m y k ⃗ , \vec{\mu} = \frac{1}{m} \sum_{m=1}^m \vec{y_k} , μ=m1m=1∑myk, Σ = 1 m − 1 ∑ k = 1 m ( y k ⃗ − μ ⃗ ) ( y k ⃗ − μ ⃗ ) T \Sigma = \frac{1}{m-1} \sum_{k=1}^m (\vec{y_k} - \vec{\mu})(\vec{y_k} - \vec{\mu})^T Σ=m−11k=1∑m(yk−μ)(yk−μ)T
其中: y k = 1 , . . . , m ⃗ \vec{y_{k=1, ..., m}} yk=1,...,m,是网格单元中包含的参考扫描点的位置。正态分布给出了具有连续导数的点云的分段光滑表示。每个PDF可以看作局部表面的近似图像,描述表面的位置以及它的方向和平滑度。二维激光扫描及其相应的正态分布如图6.1所示。图6.2显示了矿井隧道扫描的3D正常分布。
在一维的情况下,在一维情况下,正态分布的随机变量 x x x具有一定的期望值 μ \mu μ,并且关于该值的不确定性用方差 σ \sigma σ表示。方程为:
p ( x ⃗ ) = 1 σ 2 π exp ( − ( x − μ ) 2 2 σ 2 ) p(\vec{x}) = \frac{1}{\sigma\sqrt{2\pi}} \exp(-\frac{(x - \mu)^2}{2\sigma^2}) p(x)=σ2π1exp(−2σ2(x−μ)2)
在多维情况下,均值和方差用均值向量 μ ⃗ \vec{\mu} μ和协方差矩阵 Σ \Sigma Σ来描述。**协方差矩阵的对角元素表示每个变量的方差,非对角元素表示变量的协方差。**图6.3显示了一维、二维和三维中的正态分布。
在2D和3D情况下,表面取向和平滑度可以通过协方差矩阵的特征向量和特征值来评估。特征向量描述分布的主成分,即一组与变量协方差的主方向相对应的正交向量。取决于方差的比例,2D正态分布可以是点状(如果方差相似)或线状(如果一个比另一个大得多),或者介于两者之间。在图6.4所示的3D情况下,正态分布可以描述一个点或球(如果方差的幅度在所有方向上都相似)、一条线(如果一个方向的方差远大于其他两个方向的方差)或一个平面(如果一个方向的方差远小于另外两个方向的方差)。
6.2 NDT 扫描配准
当使用NDT进行扫描配准时,目标是找到当前扫描的姿态,使得当前扫描的点位于参考扫描表面上的可能性最大化。待优化的参数,即当前扫描的姿态估计的旋转和平移,可以编码为向量 p ⃗ \vec{p} p。当前扫描表示为点云 χ = { x 1 , … , x n } \chi = \lbrace x_1,…,x_n \rbrace χ={
x1,…,xn}。假设存在空间变换函数 T ( p ⃗ , x ⃗ ) T(\vec{p},\vec{x}) T(p,x),该函数通过姿态 p ⃗ \vec{p} p在空间中移动点 x ⃗ \vec{x} x。给定扫描点(例如,等式6.1)的一些PDF p ( x ⃗ ) p(\vec{x}) p(x),最佳姿态 p ⃗ \vec{p} p应该是使似然函数最大化的姿态 p ⃗ \vec{p} p
Ψ = Π k = 1 n p ( T ( p ⃗ , x k ⃗ ) ) \Psi = \Pi_{k=1}^n p(T(\vec{p},\vec{x_k})) Ψ=Πk=1np(T(p,xk))
或者说,使得负对数似然最小的 Ψ \Psi Ψ:
− log Ψ = − ∑ k = 1 n log ( p ( T ( p ⃗ , x k ⃗ ) ) ) -\log{\Psi} = -\sum_{k=1}^n \log{(p(T(\vec{p},\vec{x_k})))} −logΨ=−k=1∑nlog(p(T(p,xk)))
PDF不一定局限于正态分布。任何可以局部的描述表面点的结构并对离群值鲁棒的PDF都是合适的。正态分布的负对数似然对于远离平均值的点没有界限地增长。因此,扫描数据中的异常值可能对结果有很大的影响。在本工作中(如Biber、Fleck和Straer[8]的文章),同时使用了正态分布和均匀分布:
p ( x ⃗ ) = c 1 exp ( − ( x ⃗ − μ ⃗ ) T Σ − 1 ( x ⃗ − μ ⃗ ) 2 ) + c 2 p o p(\vec{x}) = c_1\exp(-\frac{(\vec{x} - \vec{\mu})^T\Sigma^{-1}(\vec{x} - \vec{\mu})}{2}) + c_2p_o p(x)=c1exp(−2(x−μ)TΣ−1(x−μ))+c2po
其中, p o p_o po是异常值的预期比率。利用这个函数,离群值的影响是有界的。如图6.5所示。常数 c 1 c_1 c1和 c 2 c_2 c2可以通过要求 p ( x ⃗ ) p(\vec{x}) p(x)的概率质量等于单元所跨越的空间中的一个来确定。(没看懂)
对第一种待优化的对数似然函数的求和由形式来说,它们没有简单的一阶和二阶导数。然而,由图我们可以看出对数似然函数反过来可以用高斯函数来近似。在 p ( x ⃗ ) p(\vec{x}) p(x)中,令: x = 0 x=0 x=0, x = σ x=\sigma x=σ和 x = ∞ x=\infty x=∞:
d 3 = − log ( c 2 ) d_3 = -\log(c_2) d3=−log(c2) d 1 = − log ( c 1 + c 2 ) − d 3 d_1 = -\log(c_1+c_2) - d_3 d1=−log(c1+c2)−d3 d 2 = − 2 log ( ( − log ( c 1 exp ( − 1 / 2 ) + c 2 ) − d 3 ) / d 1 ) d_2 = -2\log ((-\log(c_1\exp(-1/2) + c_2) - d_3) / d_1) d2=−2log((−log(c1exp(−1/2)+c2)−d3)/d1)
使用这种高斯近似,从当前扫描的一个点对NDT得分函数(score function)的影响是:
p ~ ( x k ⃗ ) = − d 1 exp ( − d 2 2 ( x k ⃗ − μ k ⃗ ) T Σ k − 1 ( x k ⃗ − μ k ⃗ ) ) \tilde{p}(\vec{x_k}) = -d_1\exp(-\frac{d_2}{2}(\vec{x_k} - \vec{\mu_k})^T\Sigma^{-1}_k(\vec{x_k} - \vec{\mu_k})) p~(xk)=−d1exp(−2d2(xk−μk)TΣk−1(xk−μk))
其中 μ k ⃗ \vec{\mu_k} μk和 Σ k \Sigma_k Σk是 x k ⃗ \vec{x_k} xk所处的NDT网格的平均值和协方差。这个NDT得分函数具有更简单的导数,但是当用于优化时仍然表现出相同的一般性质。注意,方程中省略了 d 3 d_3 d3项。当使用NDT进行扫描配准时,它不是必需的,因为它仅向得分函数添加常数偏移,并且不改变其形状或优化它的参数。
给定一个点集 χ = { x 1 ⃗ , . . . , x n ⃗ } \chi = \lbrace\vec{x_1},...,\vec{x_n}\rbrace χ={ x1,...,xn},一个位姿 p ⃗ \vec{p} p,和一个变换函数 T ( p ⃗ , x ⃗