在pcl中使用icp算法

时间:2016-01-26 21:07:50

标签: c++ point-cloud-library

我试图在pcl库中使用icp算法,并且几乎没有问题:

  1. 我应该像这样生成icp:

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

    pcl::PointXYZRGB. 
    
  2. 最后的icp得分为0.

  3. 我可以做些什么来帮助它成功吗?

2 个答案:

答案 0 :(得分:0)

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

    的内容

    pcl :: PointCloud Final;

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

答案 1 :(得分:-1)

  1. 您可以在此处查看示例代码及解释:
  2. 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)