PCL如何使用ICP(iterative closest point)算法

ICP介绍

假如一个点云只是另一个点云的刚性变换的话,可以通过不断缩小两个点云点之间的距离得到两个点云之间的刚性变换矩阵,从而使两个点云可以完全拼接在一起,而这种迭代最近点的算法就是ICP.

Why ICP 算法?

ICP主要用在2D重建,机器人定位并实现最佳路径规划以及3D模型的registration等应用场合。

如何使用PCL里的ICP算法?

 1. 添加必要头文件:

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/registration/icp.h>  

 2. 如下代码示例所示:实例化icp并设定参数,setInputSource指定变换前的点云,setInputTarget指定InputSource变换后的点云,新定义的Final点云用来存储应用ICP算法之后所得到的点云结果,如果变换前后点云正确Align的话(即变换点云通过刚性变换之后几乎和变换后点云完全重合),则 icp.hasConverged() = 1 (true),然后输出fitness得分和其他一些相关信息。

  pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
  icp.setInputSource(cloud_in);
  icp.setInputTarget(cloud_out);
  pcl::PointCloud<pcl::PointXYZ> Final;
 
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值