文章目录

  • 1经典流程
  • 2opals流程
  • 3pcl流程
  • 4最终流程:
  • 情况A:
  • 情况B:
  • 2经典论文


1经典流程

根据经典论文《Efficient variants of the ICP algorithm》的描述,icp分为以下6个过程:

  1. Selection :对点云进行处理,选择合适的点云进行配准
  2. Matching :对基准点云和待配准点云进行最近邻点匹配
  3. Weighting :对匹配对进行加权
  4. Rejecting :匹配对中存在一些错误匹配对,需要根据一定法则去除
  5. error metric:选择误差度量,如点到点,点到面度量
  6. Minimizing :将匹配对利用svd,最小二乘等方法求解R,T参数

2opals流程

但是在实践中,发现上述流程存在一些不足:

发现opalsICP整体流程要更完整一些:

这里增加final overlap 寻找点云重叠区域(有必要的:如果点云没有重叠度,不能应用ICP算法,并且利用重叠区域求解ICP R T会增加准确度,减少计算量),同时增加了transform阶段(即:利用迭代求解的R T更新点云),此外流程图中还指明了迭代的过程,如下:

python icp配准 pcl icp 匹配_计算机视觉

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配准流程为:

python icp配准 pcl icp 匹配_点云_02

情况B:

当给定的初值R T与真实值差异比较大时。此时导致迭代前后两次的RT差异较大,导致两次迭代重叠区域会变换比较大,影响重叠区域的准确性,从而影响匹配对的数量和准确性。此时transform的对象是整个点云,而非selection后的点云。因此需要每次迭代回到find overlap阶段:

python icp配准 pcl icp 匹配_迭代_03

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