在 pcl 中使用 icp 算法

Using icp algorithm in pcl

本文关键字:icp 算法 pcl      更新时间:2023-10-16

我正在尝试在 pcl 库中使用 icp 算法,有几个问题:

  1. 我应该像这样生成 ICP 吗:

    pcl::IterativeClosestPoint <``pcl::PointXYZ, pcl::PointXYZ> icp;
    

    或与

    pcl::PointXYZRGB. 
    
  2. 最终ICP得分为0。

我可以做点什么来帮助它成功吗?

  1. 您应该使用提到的第一个选项。它创建迭代关闭点的实例。要保存生成的云,您应该使用类似

    PCL::P ointCloud Final;

  2. 得分为 0 表示算法已收敛。

  1. 您可以在此处查看带有说明的示例代码:

http://pointclouds.org/documentation/tutorials/iterative_closest_point.php

pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
icp.setInputCloud(cloud_in);
icp.setInputTarget(cloud_out);
  1. 低体能分数,如 0,是一个很好的结果,是的。这可以解释为您尝试拟合的两个点云之间的剩余距离。

    2.1. 低适应度分数并不一定意味着 ICP 收敛(如果适应度分数为 0,显然是收敛的,因为它是最佳的)对于任何其他非最佳适应度分数,您可以检查 ICP 是否收敛了以下代码行:

    icp.hasConverged() = 1 (true)