【问题标题】:Downsampling point clouds to specific number of points while retaining shape在保持形状的同时将点云下采样到特定数量的点
【发布时间】:2019-01-28 14:14:38
【问题描述】:

环境:Python-PCL、Windows 10、Python 3.6

我需要将点云下采样到特定数量的点。这些点云的大小各不相同,因此我被卡住了。通过阅读文档,我知道只有 VoxelGridConditionalOutlierRemovalStatisticalOutlierRemovalRadiusOutlierRemoval 是可用的选项。

在 VoxelGrid 中,叶子大小不能保证点的数量,去除半径不利于保持形状,统计异常值主要有助于去除噪声。

有什么解决办法吗?可以使用numpy.random.choice()并期待奇迹吗?

编辑:numpy.random.choice 有效,但前提是您不关心点云的几何形状,我会这样做。无论如何要动态使用 VoxelGrid?

【问题讨论】:

  • 如果您使用numpy.random.choice,结果是否适合您的目的?这似乎是最简单的选择。
  • 结果是一个完整的结果。有时它会保留几何形状,有时则不会。我想尝试 VoxelGrid,但由于我的点云形状从 500 点到 7000 点,我正在寻找一种方法来根据点云的密度使叶子大小动态化。
  • @kav 我面临同样的问题。您找到解决方案了吗?

标签: python numpy point-clouds downsampling


【解决方案1】:

很遗憾,答案是否定的。使用 PCL 的 VoxelGrid 的输出点数始终是占用体素数的函数。控制占用体素数量的唯一方法是改变叶子的大小,并且没有动态的方法来做到这一点。

或者,您可能会很幸运地使用最远点采样,因为它可以让您选择 N 个点并且具有良好的蓝噪声属性,但据我所知,这在 PCL 中不可用。

【讨论】:

  • 我后来也意识到了这一点。叶大小和输出云不是线性相关的。我尝试了非常受欢迎的 numpy 方法,但是 python 中是否有任何替代库可以用来处理点云?所以我只知道python-pcl。尽管他们在文档中提到点云可以被视为 numpy 数组,但我并不完全确定这一点,因为几何形状会受到严重影响。
猜你喜欢
  • 2022-12-10
  • 1970-01-01
  • 2022-10-18
  • 2016-09-19
  • 1970-01-01
  • 2018-05-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多