PCL 筛选对应点对(距离筛选+中值筛选+法线一致性筛选+ICP重叠率估计筛选+一对一删除重复点对)(Registration_CorrespondenceRejector)

PCL专栏目录及须知

注意:本文较长,包括PCL中大多数筛选对应点对的方法,该方法均用于提高配准的精确性和减少可能的误匹配。因方法大多简单,合并为一个文章。目录如下。

目录

1.根据距离筛选对应点对

2.根据中值筛选对应点对

3.一对一删除重复点对

4.根据法线一致性筛选对应点对

5.根据ICP重叠率估计筛选对应点对

6.完整代码


如何寻找对应点对

本文基于寻找到对应点对之后,对寻找到的对应点对

pcl::CorrespondencesPtr correspondences(new pcl::Correspondences)做二次筛选。

如果完全不会PCL,想直接拷贝使用,文末附有完整代码

用于下方各筛选方法测试的原始点对关系如下图。

1.根据距离筛选对应点对

1.1 原理

基于距离阈值来删除不符合指定距离条件的点云对应点对。

用户可以通过设置距离阈值来删除不符合距离阈值的点对,通常距离阈值是一个正数,表示两点之间的最大距离。如果两个点之间的距离超过了这个阈值,它们将被删除。

1.2 代码

(1)头文件

#include <pcl/registration/correspondence_rejection_distance.h>			// 根据距离筛选对应点对

(2)示例代码

// 基于距离筛选对应关系
	pcl::CorrespondencesPtr  correspondencesRejDis(new pcl::Correspondences);
	pcl::registration::CorrespondenceRejectorDistance corrRejDis;
	corrRejDis.setInputCorrespondences(correspondences);					// 输入对应关系
	corrRejDis.setMaximumDistance(0.9);										// 对应关系之间的最大距离阈值
	corrRejDis.getCorrespondences(*correspondencesRejDis);						// 输出筛选后的对应关系

	std::cout << "对应点对数:" << correspondences->size() << std::endl;
	std::cout << "基于距离筛选后剩余点对数:" << correspondencesRejDis->size() << std::endl;

1.3 结果展示

2.根据中值筛选对应点对

2.1 原理

基于对应关系之间的中值距离阈值的点对对应关系的筛选。

如果一对对应点的距离大于中值的某个倍数(阈值),则该点对对应关系将被删除,通过排除这些异常对应关系,可以提高配准的精度,降低对配准结果的干扰。

2.2 代码

(1)头文件

#include <pcl/registration/correspondence_rejection_median_distance.h>			// 根据中值筛选对应点对

(2)示例代码

// 基于中值筛选对应关系
	pcl::CorrespondencesPtr  correspondencesRejMedianDistance(new pcl::Correspondences);
	pcl::registration::CorrespondenceRejectorMedianDistance corrRejMedianDistance;
	corrRejMedianDistance.setMedianFactor(1);														// 中值阈值
	corrRejMedianDistance.setInputCorrespondences(correspondences);									// 输入对应关系
	corrRejMedianDistance.getCorrespondences(*correspondencesRejMedianDistance);					// 输出筛选后的对应关系

	std::cout << "对应点对数:" << correspondences->size() << std::endl;
	std::cout << "基于中值筛选后剩余点对数:" << correspondencesRejMedianDistance->size() << std::endl;

2.3 结果展示

3.一对一删除重复点对

3.1 原理

从现有点对中筛选出一对一的对应点关系,消除对应关系中重复匹配索引的对应点。

3.2 代码

(1)头文件

#include <pcl/registration/correspondence_r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值