PCL 删除点云中重叠的点(方法二)

260 篇文章 7988 订阅 ¥19.90 ¥99.00
该博客介绍了PCL库中删除点云重复点的算法原理,通过设定距离阈值,若点在该范围内有其他点则视为重复。主要涉及PCL的KD树以及C++中的唯一值容器数据结构在去重过程的应用。并提供了代码实现和结果展示。
摘要由CSDN通过智能技术生成
pcl库提供了多种方法删除点云的重复。其最常用和简单的方法是使用pcl::removeNaNFromPointCloud函数来删除NaN(非数字)和重复。该函数将在源点云删除重复的,并将处理后的点云赋值给另一个点云。以下是使用pcl::removeNaNFromPointCloud函数删除点云重复的示例代码: ``` pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_in (new pcl::PointCloud<pcl::PointXYZRGB>); pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_out (new pcl::PointCloud<pcl::PointXYZRGB>); // 假设cloud_in是输入的点云 // 删除NaN std::vector<int> indices; pcl::removeNaNFromPointCloud(*cloud_in, *cloud_out, indices); // 删除重复 std::vector<int> indices_no_duplicate; pcl::PointIndices::Ptr output_indices (new PointIndices); pcl::removeDuplicates(*cloud_out, output_indices->indices, 0.001); pcl::ExtractIndices<pcl::PointXYZRGB> extract; extract.setInputCloud(cloud_out); extract.setIndices(output_indices); pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_no_duplicate (new pcl::PointCloud<pcl::PointXYZRGB>); extract.filter(*cloud_no_duplicate); // cloud_no_duplicate即为处理后的点云,其不包含重复 ``` 在上述代码,首先使用pcl::removeNaNFromPointCloud函数将源点云的NaN删除,并保存非NaN的索引到indices。然后使用pcl::removeDuplicates函数将非NaN的重复删除,并保存非重复的索引到output_indices->indices。接着使用pcl::ExtractIndices将非重复提取出来并保存到cloud_no_duplicate。最终得到的cloud_no_duplicate就是处理后的不包含重复点云
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值