点云传统配准算法 粗略大概

六自由度:坐标x,y,z和绕x,y,z轴的旋转。
点云配准就是找到变换矩阵 T T T
点云配准一般分为两步:粗配准+细配准。

FCR (fast global registration)

还是建立在特征匹配的基础上的。特征用的是FPFH。
FPFH(Fast Point Feature Histogram):思想是计算点云中的每个点的一个领域里面的点的法向量、曲率等几何特征,投影到一个特定的方向,形成一个直方图。这个图可以反映点的局部表面信息,如凹凸性、曲率等等。
优点:速度快,鲁棒性强。
这就是FCR之所以"fast"的原因之一。

有特征之后,用向量二范数计算特征距离。
a r g   m i n p j ∈ P ∣ ∣ f ( p j ) − f ( q i ) ∣ ∣ 2 2 arg\ \underset{p_j\in P}{min}||f(p_j)-f(q_i)||^2_2 arg pjPmin∣∣f(pj)f(qi)22

计算一次即可,这就是FCR之所以"fast"的原因之二。

点云最麻烦的就是噪声,FGR这里用了一个双向校验(dual validation)。没细看,不太懂。

应用:实时性要求高的场景。

ICP (Iterative Closest Point)

ref

细配准算法。过于经典的算法。面试的时候问了,我根本没看过,可惜了。

  • 在P Q中分别选择一些关键点。
  • 设定初始变换矩阵 R 0 , T 0 R_0,T_0 R0,T0
  • 迭代优化:
    1 估计对应点。先使用 R 0 , T 0 R_0,T_0 R0,T0或者上一轮迭代的 R t − 1 , T t − 1 R_{t-1},T_{t-1} Rt1,Tt1变换矩阵。然后在关键点中 估计对应点。直接比较最近的点很笨。加速的方法:(1)设定阈值,只要距离小于阈值就认为找到了对应点。(2)或者用ANN(Approximate Nearest Neighbor)加速查找(好像是KD-tree)。没细看。
    2 求解 平移矩阵 Translation, 旋转矩阵 Rotation。
    迭代 12 即可。终止条件是最大迭代次数、loss小于阈值a、 R k , T k R_k,T_k Rk,Tk变化量小于阈值b。

GICP

你可能感兴趣的:(算法岗面经,算法,面试)