这里只讲最基本的ICP,不涉及过多的转换公式之类的,自己看了两个小时,看了一堆文章,看过之后还是感觉自己不能掌握,通过看源码想明白了记录一下。
首先ICP是干什么的:ICP是一种点集对点集的配准方法,改算法计算如何把一个数据集中的点云经过平移旋转,使其与另一个数据集中的点云重合.
定义两个点集:
旋转矩阵R和平移向量t
误差函数:
I:Iterative ,迭代的是什么,迭代的是旋转矩阵R和平移向量t,我们需要使用迭代方法计算他们的增量。
C: closest,最近的,定义两个点集中对应点的距离最近,可以使用欧式距离
算法步骤:
1.设定一个初始的R,t
2.根据欧式距离计算对应的最近点
3.根据误差函数,最近点对,使用迭代方法比如LM计算R和t的增量
4.对R,t进行更新,重新计算误差函数
5.对误差函数进行判断,如果小于阈值或者超过迭代次数则退出,否则重回3继续使用LM方法计算R和t的增量。
总结:
感觉就是一个迭代优化算法,里面有很多可以改动的东西,比如如何判断最近点,用什么迭代方法之类的。