Python 在保留形状的同时将点云向下采样到特定数量的点

Python 在保留形状的同时将点云向下采样到特定数量的点,python,numpy,point-clouds,downsampling,Python,Numpy,Point Clouds,Downsampling,环境:Python PCL、WIndows 10、Python 3.6 我需要将采样点云减少到特定数量的点。这些点云大小不一,因此我被卡住了。通过查阅文档,我了解到只有 体素网格、条件外部删除、统计层删除和半径异常删除是可用的选项 在体素网格中,叶的大小不能保证点的数量,去除半径无助于保持形状,统计异常值主要有助于去除噪声 有什么解决办法吗?可以使用numpy.random.choice()并希望出现奇迹吗 编辑:numpy.random.choice有效,但前提是您不关心点云的几何形状,我会关

环境:Python PCL、WIndows 10、Python 3.6

我需要将采样点云减少到特定数量的点。这些点云大小不一,因此我被卡住了。通过查阅文档,我了解到只有
体素网格
条件外部删除
统计层删除
半径异常删除
是可用的选项

在体素网格中,叶的大小不能保证点的数量,去除半径无助于保持形状,统计异常值主要有助于去除噪声

有什么解决办法吗?可以使用
numpy.random.choice()
并希望出现奇迹吗


编辑:
numpy.random.choice
有效,但前提是您不关心点云的几何形状,我会关心。是否要动态使用体素栅格

不幸的是,答案是否定的。使用PCL的体素网格的输出点的数量总是被占用体素数量的函数。控制被占用体素数量的唯一方法是通过改变叶子大小,而没有动态的方法来做到这一点


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

如果您使用
numpy.random.choice
结果是否适合您的目的?这似乎是最简单的选择。结果完全是一帆风顺。有时它会保留几何图形,有时则不会。我想尝试体素网格,但由于我的点云形状从500点到7000点,我正在寻找一种方法,根据点云的密度使叶子大小动态。@kav我面临同样的问题。你找到解决办法了吗?我后来也意识到了这一点。叶大小和输出云不是线性相关的。我尝试了numpy方法,这种方法非常容易出错,但是python中是否有其他库可用于处理点云?所以我只知道python pcl。尽管他们在文档中提到可以将点云视为numpy阵列,但我并不完全确定这一点,因为几何图形将受到严重影响。