在 PCL 中从另一个点云中删除点?

Posted

技术标签:

【中文标题】在 PCL 中从另一个点云中删除点?【英文标题】:Remove points in one point cloud from another in PCL? 【发布时间】:2018-04-10 05:49:25 【问题描述】:

假设我有两个点云 A 和 B。我想做以下操作: C=A-B 其中 C 是操作的输出云。我知道 PCL 具有用于连接两个点云的“+”操作,例如:

  pcl::PointCloud<pcl::PointXYZ> A;
  pcl::PointCloud<pcl::PointXYZ> B; //assume A and B have points in them
  pcl::PointCloud<pcl::PointXYZ> C = A+B;

但是我不认为有一个“-”运算符可以从另一个点云中删除点。

我可以为 A 和 B 创建哈希映射吗?输出 C 只有在哈希图中出现一次的点。或者有更好的方法吗?

【问题讨论】:

我建议你看看这个答案:***.com/a/48595186/2761849 【参考方案1】:

如果云 B 是云 A 的子集(即,这些点具有相同的位置,但它们只是一个子集)并且您知道它们的索引,那么您可以简单地过滤索引。

在更一般的情况下,AB 中的点相似但不一样,你需要稍微花点心思。对于B 中的每个点,使用半径搜索或kd-search 查找A 中最近的点,然后从A 中删除已识别的点。

【讨论】:

以上是关于在 PCL 中从另一个点云中删除点?的主要内容,如果未能解决你的问题,请参考以下文章

在多边形的正常空间内的 pcl 点云中查找点

PCL:点云赋色 | 自定义点云中任意一点的颜色

有啥方法可以减少 Radius 异常值删除 [pcl 异常值删除] 的执行时间?

PCL:以毫米为单位计算一个点的 xyz

如何从 PCL 中的查看器中选择两个点

pcl中的一些常用函数记录笔记