【问题标题】:find the nearest point pairs between two sets of of points, optimizing for the summed differences找到两组点之间最近的点对,优化总和差异
【发布时间】: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 所说的)。您能否发布您的实施和要点示例列表。

标签: matlab nearest-neighbor


【解决方案1】:

感谢大家的 cmets!特别是@jodag 将其识别为分配问题,将匈牙利算法作为解决方案,并提供指向 Matlab implementation 的链接。

这似乎有效,至少对于少量粒子而言。如果我陷入困境,我会尝试划分搜索区域。

【讨论】:

    【解决方案2】:

    我不知道你是否需要一个仅限于 Matlab 的答案(因为我还没有看到任何 Matlab 函数来做空间索引),但这里是。

    您可以使用https://www.boost.org/doc/libs/1_68_0/libs/geometry/doc/html/geometry/reference/spatial_indexes/boost__geometry__index__rtree.html“空间索引您的节点”(https://en.wikipedia.org/wiki/Spatial_database#Spatial_index

    目标是能够在 O(log(N)) N 中搜索最接近的节点,其中 N 是节点数

    假设你有两个集合 A 和 B 都包含 N 个节点

    索引 A 和 B 的成本为 O(N log(N)) 和 O(N log(N))

    在 A 中选择点 i,在 RTree(B) 中搜索,您会找到点 j。存储 d1(i 和 j 之间的距离)(即搜索成本 O(log(N))

    在 B 中选择点 j,如果找到点 i,则在 RTree(A) 中搜索,如果找到节点 k,则匹配 [i 在 A 中,j 在 B],然后计算距离 d2

    如果 d2

    对所有 N 个点都这样做

    总体花费 O(N log(N))

    【讨论】:

    • 这只是迭代地寻找最近的邻居,OP指出并不一定会给出具有最小总成对距离的对。
    猜你喜欢
    • 2012-08-18
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    相关资源
    最近更新 更多