【发布时间】:2019-02-17 15:40:16
【问题描述】:
假设我有两个包含点坐标的点矩阵 A 和 B。我想找到使点对之间的欧几里得差异之和最小化的点对。
例如,在一维情况下,我有: A = [4 1 1.5]; B = [4 1.2 0]; 如果算法首先匹配最近的对(如this one),则可能返回对 [4 4]、[1 1.2]、[1.5 0]。这将给出 1.5+.2+0 = 1.7 的总差异。
我正在寻找一种能够最小化对之间的总差异的解决方案,它给出了解决方案 [4 4]、[1 0]、[1.5 1.2],总差异为 0.3+1+0 = 1.3.
这适用于 3D 中的 10k-100k 点。
感谢您的帮助!
【问题讨论】:
-
寻找 RANSAC 和 ICP。这些是我认为最流行的方法。
-
这似乎是assignment problem 的变体。它可以使用Hungarian algorithm 来解决,尽管provided here 似乎是一个有效的实现,我估计10,000 x 10,000 的情况将需要大约10 个小时,而100k x 100k 的情况将需要大约1.2 年。您可能想寻找一种近似的贪心方法。
-
@jodag 匈牙利算法解决了分配问题,而不依赖于任何成对距离之间的依赖关系知识。因为在这个问题的变体中,所有距离都是欧几里得距离,所以有充分的理由期望能够做得更好。似乎有一些文献将其称为欧几里得二分匹配或欧几里得分配问题,但这并没有立即导致我能找到任何好的可访问算法实现。
-
@Will 感谢您提供信息。我环顾了一会,发现 Agarwal, Pankaj K., Alon Efrat, and Micha Sharir. "Vertical Decomposition of Shallow Levels in 3-Dimensional Arrangements and Its Applications." (2006). 看起来第 7 节中有一个
O(n^(2+eps))算法,但我找不到实现。 -
我很想看看我的提议离我有多远。 (按照@jordag 所说的)。您能否发布您的实施和要点示例列表。