【问题标题】:Calculate Mapping of Nearest Points of 2 matrices计算 2 个矩阵的最近点的映射
【发布时间】:2012-04-13 08:05:31
【问题描述】:

我有两个矩阵 A 和 B。每个矩阵都有 2 列,其坐标为点 ( x , y )

我需要计算一个mapping of points from A to B,使得这些点之间的欧几里得距离最小。

本质上,我试图模仿 sift 对图像的作用,但不会执行 sift 为匹配点所做的步骤...

因此,对于 A 中的所有点,我计算 B 中所有点的欧几里得距离,然后删除距离最小的 2 个点的映射。然后我继续这样做,直到 A 和 B 都为空。

有人能告诉我什么是最有效的方法吗?

编辑

有人可以帮我吗...我面临的问题是,在选择它们中的最小值作为第一个映射之前,我需要计算所有 v/s 所有距离。然后我需要重新做一遍,使得计算真的很长......

有没有什么方法可以在 MATLAB 中有效地完成?

【问题讨论】:

  • 我之前问过非常相似的问题。唯一的区别 - 我有向量,你有矩阵。无论如何,解决方案应该非常相似。看看:Mapping 2 vectors - help to vectorize
  • @yuk 这是我想要的……但是数据没有排序,当然它们是矩阵……所以有人可以建议是否有内置或更快的解决方案吗?

标签: algorithm matlab sift


【解决方案1】:

您指的是两种不同配置点之间的 Procrustes 距离吗?如果是这样,Matlab 有一个内置函数可以计算使点对齐的最小范数变换(这是 Procrustes 距离)。

请参阅this documentation 了解如何使用它。如果您没有 Statistics Toolbox,那么您应该先检查 Matlab Central File Exchange,看看是否有人编写了 procrustes() 函数的非工具箱版本,然后再尝试编写自己的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 2012-08-25
    • 1970-01-01
    • 2011-05-08
    • 2020-02-16
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    相关资源
    最近更新 更多