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

时间:2018-04-10 05:49:26

标签: point-cloud-library point-clouds

假设我有两个点云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只有在哈希映射中出现一次的点。或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

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

在更一般的情况下,AB中的点相似但不相同,你需要得到一点点发烧友。对于B中的每个点,使用半径搜索或kd搜索查找A中的最近点,然后从A中删除已识别的点。