使用PCL库,寻找两个点云中的对应点

其中PCL库的安装:(要翻墙才可以访问)

推荐参考:http://gyshgx868.github.io/2018/03/06/PointCloud/pcl-install/


目前我所学习到的方法有三种

1.使用pcl::registration::CorrespondenceEstimation

2.使用flann库

3.使用pcl::search::Kdtree


方法一:使pcl::registration::CorrespondenceEstimation

参考代码样例:

建议参考网址:

https://github.com/otherlab/pcl/blob/master/test/registration/test_registration_api.cpp

和https://blog.csdn.net/qq_36501182/article/details/79173161

当然:在建立 

pcl::registration::CorrespondenceEstimation<pcl::PointXYZ, pcl::PointXYZ> corr_est时候,也可以不适用pcl::PointXYZ作为匹配类型,可以使用其他特征比如:pcl::FPFHSignature33等,构建

pcl::registration::CorrespondenceEstimation<pcl::FPFHSignature33, pcl::FPFHSignature33> corr_est

方法二:使用flann库

值得注意的是,PCL库应该是包含了flann库的,所以如果以及安装pcl库,则不需要单独装flann库。这里的例子直接看链接中的即可,个人感觉使用flann库有点麻烦。

参考链接:https://blog.csdn.net/u011091739/article/details/80690647

方法三:使用pcl::search::Kdtree

同样,贴两个参考代码的网址

https://blog.csdn.net/hanshuobest/article/details/50852663

https://github.com/PointCloudLibrary/pcl/blob/master/doc/tutorials/content/sources/iros2011/src/correspondence_viewer.cpp

其中链接一:只针对了某一个点在另一个点云中的对应点匹配,可以作为基础看,没啥难度,这里不讲了。

链接二:推荐,官方案例而且也很好懂,是两个点云之间的匹配。主要关注下面这个函数:

其中可能不懂的点在于LocalDescriptor是什么类型,这里找到他的头文件定义:

https://github.com/PointCloudLibrary/pcl/blob/master/doc/tutorials/content/sources/iros2011/include/typedefs.h


也就是说,通过kdTree是以pcl::FPFHSignature33这个特征作为匹配依据的。

最后:

如果不知道pcl::pcl::FPFHSignature33等特征是什么的小伙伴,建议看看:

http://pointclouds.org/documentation/tutorials/#features-tutorial这篇官方教程里面的Feature部分。讲的很清楚。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容