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