PCL 删除点云中重复的点

一、简介

项目中有三个点云依次要将其拼接起来,然后每个点云的点是500w 个点左右,这样的话我们最终的点云的个数应该是1500w 个点,我用matlab 加载加载了 好长时间,其实如果点云拼接的比较好的话应该也是900w个点左右,我个人拼接的点云在X方向上的误差是0.9u,Y 方向是1u,但是在Z方向是达到10个u,后来想到一个新的方法就是将点云转为Tif 图然后用TIff图加权处理,这个是后话,目前主要是将点云中重复的点(重复的点的概念就是到给点的距离很近的,我这里的点间距是5u,所以我这里设定的搜索距离是小于5u的)。

加权的那个方法的前提是x y要拼的很好,因为这个项目是计算轮廓度的,所以后面取点是很苛刻的,最后使用matlab的拉格朗日差值来计算轮廓

步骤:

1、加载点云

2、设置重复点云的半径R

3、便利每个点,求出R范围的左右点,记录其索引vector<int> v;

4、删除v 中重复的索引

5、删除剩余索引对应的点

注意:这里如果同时都加载了opencv 和PCL中的 FLANN 个库的时候一定要调整顺序,将PCL的调到前面,不然就和opencv 的冲突会报错。

二、代码 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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个

红包金额最低5元

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

抵扣说明:

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

余额充值