其中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部分。讲的很清楚。