Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 从两个集合中匹配对的算法_Algorithm_Set - Fatal编程技术网

Algorithm 从两个集合中匹配对的算法

Algorithm 从两个集合中匹配对的算法,algorithm,set,Algorithm,Set,我有两套,每一套都是一对数字的列表 Set1 =[(x1, y1), (x2, y2), ..., (xN, yN)] Set2 =[(a1, b1), (a2, b2), ..., (aN, bN)] 如果在XY平面上绘制,Set1和Set2具有相同的基本形状,但是Set2的数据点是Set1的旋转/平移/缩放/噪声/倾斜版本。每组中成对的顺序是随机的。有没有一种有效的方法来确定set1中的哪些点对应于set2中的对应点?您正在寻找一系列算法,试图最小化两点云之间的差异。这是一个相当难解决的问

我有两套,每一套都是一对数字的列表

Set1 =[(x1, y1), (x2, y2), ..., (xN, yN)]
Set2 =[(a1, b1), (a2, b2), ..., (aN, bN)]

如果在XY平面上绘制,Set1和Set2具有相同的基本形状,但是Set2的数据点是Set1的旋转/平移/缩放/噪声/倾斜版本。每组中成对的顺序是随机的。有没有一种有效的方法来确定set1中的哪些点对应于set2中的对应点?

您正在寻找一系列算法,试图最小化两点云之间的差异。这是一个相当难解决的问题,可以有多个解决方案(例如,如果给你两个立方体,有许多可能的旋转可以工作)

一种特别流行的方法是,该方法从候选猜测开始,并不断完善它,直到达到某种正确性标准或时间到期。这可能是一个很好的出发点


希望这有帮助

是的,假设只有旋转、缩放和平移可以完成(除了“噪音”和“倾斜”部分,我不确定)

一种方法:

  • 确定每组的质心(2D平均值)
  • 确定每组的最小二乘(2D)斜率
  • 确定每组的2D方差
  • 使用要平移的质心差、要旋转的坡度差(*)和要缩放的方差差重新映射第一个集,以便两个集现在具有相同的质心、坡度和方差
  • 对两个集合进行排序,然后比较各点是否相等/相似。(或者,您可以将它们之间的RSM(均方根)差作为“噪声”/“差”的度量)

  • (*-请注意,反射和/或对称可能会导致旋转部分出现问题。)

    映射不需要是唯一的,例如当集合具有内部对称性时。set1中的点“对应”set2中的点到底是什么意思?请解释,你的意思是没有唯一的解决方案吗?@alexraasch low euclidean distance在某些全局条件下mapping@alexraasch,我猜它的意思是接近某个度量,例如欧几里得。这些不是随机放置的点。它们形成一个长方形,但轮廓分明。@rossb83-ICP经常被使用,即使你知道这两个形状是一样的。如果您知道点定义了相同的形状,但除此之外没有其他信息,则尝试恢复点的变换方式非常有用。设置形状相似性和设置点相似性之间存在显著差异。我不确定这些算法解决了哪些问题?