文章目录
- 1经典流程
- 2opals流程
- 3pcl流程
- 4最终流程:
- 情况A:
- 情况B:
- 2经典论文
1经典流程
根据经典论文《Efficient variants of the ICP algorithm》的描述,icp分为以下6个过程:
- Selection :对点云进行处理,选择合适的点云进行配准
- Matching :对基准点云和待配准点云进行最近邻点匹配
- Weighting :对匹配对进行加权
- Rejecting :匹配对中存在一些错误匹配对,需要根据一定法则去除
- error metric:选择误差度量,如点到点,点到面度量
- Minimizing :将匹配对利用svd,最小二乘等方法求解R,T参数
2opals流程
但是在实践中,发现上述流程存在一些不足:
发现opalsICP整体流程要更完整一些:
这里增加final overlap 寻找点云重叠区域(有必要的:如果点云没有重叠度,不能应用ICP算法,并且利用重叠区域求解ICP R T会增加准确度,减少计算量),同时增加了transform阶段(即:利用迭代求解的R T更新点云),此外流程图中还指明了迭代的过程,如下:
3pcl流程
opalsicp流程,仍然存在一些不足:
第一步应该是根据初始R T,将点云进行变换(即先进行transform过程),而后再寻找重叠区域等。
PCL icp.hpp computeTransformation()
函数 和 trimmed.icp.h align()
函数,均利用R T初值对点云进行了变换。
4最终流程:
综上:总结icp最终流程如下:
情况A:
当初始R T接近真实R T时。在这种情况下:每次迭代求解的R T对于点云重叠区域变化影响很小(即,前一次迭代的R T的重叠区域和后一次迭代R T的重叠区域非常接近),几乎不影响ICP计算的效率。此时transform的对象是selection后的点云,而非整个点云。因此每次迭代若不收敛,则回到matching阶段。这种情况是比较常见的,因为ICP算法,要求初值必须比较接近真值,属于精配准,此时icp配准流程为:
情况B:
当给定的初值R T与真实值差异比较大时。此时导致迭代前后两次的RT差异较大,导致两次迭代重叠区域会变换比较大,影响重叠区域的准确性,从而影响匹配对的数量和准确性。此时transform的对象是整个点云,而非selection后的点云。因此需要每次迭代回到find overlap阶段:
2经典论文
点到点icp《Method for registration of 3-D shapes》1991
点到面icp《Object modelling by registration of multiple range images》1992
线性求解点到面icp《Linear Least-Squares Optimization for Point-to-Plane ICP Surface Registration》2004
trimmed icp《The Trimmed Iterative Closest Point algorithm》2003
gicp《Generalized-ICP》2009
sparse icp《Sparse Iterative Closest Point》2013
nicp《NICP: Dense normal based point cloud registration》2015
goicp《Go-ICP: A Globally Optimal Solution to 3D ICP Point-Set Registration》2016
Symmetrized ICP《A symmetric objective function for ICP》2019
Voxelized GICP《Voxelized GICP for Fast and Accurate 3D Point Cloud Registration》2021