我需要一种算法来数值计算两条绘制线之间的相似度。使用鼠标绘制线条,并在使用单独的算法进行过滤和平滑之前存储为一组笛卡尔坐标。
例如,在下图中:
A行和B行明显相似,但B和C不相似。算法应该反映这一点。此外,线的“方向”(如起点和终点所示)很重要。这样的算法是否已经存在?
答案 0 :(得分:2)
一种天真的方法可以取两条线上相应点之间的距离之和。假设两条线的长度几乎相同,线上的点数大致相同且等距。 br /> 1.翻译第2行,使其起点与第1行的起点相同。
2。计算第1行和第2行之间相应点之间的距离之和。如果平均距离(即SUM / NUMBER_OF_POINTS)小于THRESHOLD,则线条相似,否则它们不同。
这可以扩展到支持不同大小的线条。在这种情况下,只需放大较小的线以匹配较长的线,然后休息可以类似于上述方法。
除了计算距离,您可以计算线的斜率的差异,如果不同在任何一点(或几点,你需要进行一些实验)的斜坡是高(高于一些THRESHOLD),然后他们不相似。
答案 1 :(得分:1)
这个答案被极大地延迟了,但是为了像我这样的其他人,我会通过搜索偶然发现它。
我相信Fréchet distance可能是您正在寻找的度量标准,尤其是因为方向很重要。
您可以通过多种方式进行处理,一种方法是以一定的采样率对绘制的点进行采样,并在一个时间戳上计算每两个采样之间的欧几里得距离,然后取最大的一个。