CloudCompare&PCL 剔除点云中的重复点

192 篇文章 1011 订阅 ¥19.90 ¥99.00
本文介绍了如何使用CloudCompare和PCL库来去除点云数据中的重复点。重复点在扫描过程中常见,但对后续处理影响不大,反而增加计算负担。文章提供了一段核心代码实现此功能,并链接了详细配置教程。
摘要由CSDN通过智能技术生成

一、简介

有时候在扫描过程中,可能同一个位置会获得多个且非常接近的点数据,这些点对后续的滤波、重建等操作并没有大的用处,反而会增加计算量,因此我们可以在处理原始数据之前剔除这些重复点。

二、实现代码

相关配置可以参考文章https://blog.csdn.net/dayuhaitang1/article/details/124503487中的非插件基础配置,核心代码如下所示:

void MainWindow::RemoveRepeatPoints()
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就是处理后的不包含重复点云
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大鱼BIGFISH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值