计算重叠点云的最大最小距离

2024-09-28 23:10:37 发布

您现在位置:Python中文网/ 问答频道 /正文

测试点云注册的不同方法,并尝试对结果进行不同的评估。在

其中一个计算是试图找到两个点云之间的重叠区域,并计算每个点云的点相对于另一个重叠点云的点的最大最小距离。在

到目前为止,我已经天真地完成了以下步骤(假设两台电脑):

  1. 为两个云分别找到边界框。简单地使用 min(pc1X)min(pc1Y)。在
  2. 找出盒子的重叠区域。(max of mins,min of max of box的坐标。)
  3. 在框中提取云的每个点。同样是幼稚的过滤。pc1[x<xmax & x>xmin & y<...]
  4. 计算点之间的距离成本矩阵,并为每个点选择最小值。成本矩阵形状:(pc1_pnts x pc2_pnts)。使用scipy.spatial.distance.cdist`

这对小云层来说很好,但是当重叠区域变大时,就会出现内存不足的错误,这种情况在使用上述步骤的某个时刻会发生,特别是在步骤4中。在

因此,我正在寻找改进上述步骤的选项,以便在更大的云端上运行它们,我相信这里最关键的瓶颈是第4步,其中成本矩阵可能会变得巨大。在

我很感激关于改进前三步的提示,但是集中在第四步,如何更有效地计算每个重叠点的最大-最小距离?在


编辑:通过使用sklearn.neighbours.NearestNeighbors我已经成功地将第4步的运行时间平均减少了10倍以上,并且在更大的云上运行!
欢迎以上任何提示或改进措施。在


Tags: of方法区域距离步骤矩阵minmax