计算重叠区域

时间:2018-05-16 01:17:51

标签: python python-3.x point-clouds

测试不同的pointclouds方法'注册并尝试对结果进行不同的评估。

其中一项评估是尝试找到两个点云之间的重叠区域,并计算每个点云云点与其他重叠点云点的最大最小距离。

到目前为止,我已经天真地使用了以下步骤(假设有两台PC):

  1. 找到两个云中每个云的边界框。简单地使用 min(pc1X)min(pc1Y)。 。 。
  2. 找到方框的重叠区域。 (最大分钟数,最小分组符号坐标。)
  3. 提取框内的每个云点。也是天真的过滤。 pc1[x<xmax & x>xmin & y<...]
  4. 计算点之间的距离成本矩阵,并为每个点选择最小值。成本矩阵形状:(pc1_pnts x pc2_pnts)。使用scipy.spatial.distance.cdist`
  5. 这适用于小云,但是当重叠区域变大时,会出现内存不足错误,这必须在某些时候使用上述步骤发生,尤其是在第4步。

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

    我希望有关改进前三个步骤的提示,但着重于第4步,如何更有效地计算每个重叠点的最大最小距离?

    编辑:使用sklearn.neighbours.NearestNeighbors我设法将第4步的运行时间平均缩短了10倍以上,并且还运行在更大的云上! 我们欢迎任何改进上述任何步骤的提示或提示。

0 个答案:

没有答案