公制比较两条2D线性线的相似程度

时间:2009-07-28 01:29:56

标签: c# algorithm

是否有算法(最好是在C#实现中)允许我比较两条线的相似程度?在我的情况下,我有一个参考线,我有很多次级线,我需要选择,从这么多次级线,这是最接近参考线。

编辑:这是一条2D线,带有起点和终点。当你比较相似之处时,你要考虑到完整的线条。线的方向(即,从左到右,反之亦然)并不重要。是的,它与彼此之间的距离有关

我知道这是主观的(相似性,而不是问题),但我仍然确信有人在这方面做过工作。

3 个答案:

答案 0 :(得分:3)

明显的指标包括斜率,长度和中点之间的距离。你可以计算出那些,然后找到你喜欢的权重。

如果你想将它们全部包装成一个东西,试试端点之间的距离之和。

你将不得不尝试一些事情,看看哪些情况会刺激你,然后找出原因。

答案 1 :(得分:1)

行(以及一般的超平面)位于对象调用Grassmanian上;例如平面中的直线坐在Gr(1,3)中,与二维射影空间同构,而你的是最简单的非平凡的:Gr(2,4)。它是一个紧凑的度量空间,带有标准度量标准(来自插件嵌入 - 请参见上面的链接)。但是,这个指标计算起来有点贵,所以你可能想要考虑一个近似值(正如你考虑使用点积而不是2维角度 - 它适用于小角度)

更详细的解释(基于链接维基百科文章中定义的指标):

对于每一行l,取两个点(x1,y1,z1)和(x2,y2,z2)。令A为4乘2矩阵,其列为(1,x1,y1,z1)^ t和(1,x2,y2,z2)^ t。将P定义为4乘4矩阵 A(A ^ TA)^( - 1)^ T。那么P只依赖于l而不是两点的选择。

您想要的指标是与两条线对应的矩阵之差的顶部本征值的绝对值。

答案 2 :(得分:0)

如果你在谈论图形意义上的线条,那么我会看一下线条长度和角度等组合。

根据您的具体情况,您可以进行优化,例如使用长度的平方(保存平方根)和dy / dx的角度(保存触发功能,但要注意除零)情况)。