2

我有两个矩阵 A 和 B。每个矩阵都有 2 列,其中包含一个点的坐标( x , y )

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

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

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

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

编辑

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

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

4

1 回答 1

0

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

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

于 2012-04-09T22:00:24.753 回答