我有两个矩阵A和B.每个矩阵都有2列,坐标为( x , y )
。
我需要计算一个mapping of points from A to B
,使得这些点之间的欧氏距离最小。
基本上我试图模仿sift在图像上做了什么,但是不会执行sift用于匹配点的步骤......
因此,对于A中的所有点,我计算B中所有点的欧氏距离,然后去除具有最小距离的2个点的映射。然后我继续这样做,直到A和B都是空的。
有人能告诉我这样做最有效的方法吗?
修改
有人可以帮助我...我面临的问题是我需要计算所有距离,然后再选择最小值作为第一个映射。然后我需要重新做这个,使计算真的很长......
有没有办法在MATLAB中有效地完成这项工作?
答案 0 :(得分:0)
您是指两种不同配置点之间的Procrustes距离吗?如果是这样,Matlab有一个内置函数,可以计算最小范数转换,使点对齐(这是Procrustes距离)。
请参阅this documentation了解如何使用它。如果你没有统计工具箱,那么你应该先检查Matlab Central File Exchange,看看是否有人在寻找你自己的函数之前编写了procrustes()
函数的非工具箱版本。