比较行算法建议

本文关键字:算法 比较 | 更新日期: 2023-09-27 18:16:00

Line是点的数组(两个或多个)。每个点都有X和Y坐标(双)。我有一个满是直线的平面。我需要一些度量来告诉我任意两条直线离平面有多近和多相似。当直线完全相同时,我需要这个测量值为0,当直线旋转、移动或具有完全不同的几何形状时,它的值必须增加。首先,如果有人知道一个好的算法的名字,这将是很好的。

更新:可能的用法是这样的:我有一条近似几何形状的道路。我有一个公路网。我必须在路网中找到另一条路,这条路可能就是我正在寻找的路。但由于其他一些原因,我也需要这个措施。仅仅找到路是不够的,我必须给出一个数字,告诉我的火柴有多好,其他火柴有多接近。

请注意,如果点不同,两行不一定不同。

如果有人知道我在哪里可以找到这个算法的代码或库在c#中,这将是伟大的。

比较行算法建议

一个警告:图形模式识别不是我最喜欢的爱好,所以这可能完全是胡扯…

我会尝试找到一些启发式方法,可以告诉比较行之间的某些相似之处…

先检查:

点的集合相等吗?

查看点计数:
如果两行有相同数目的点:
测量两条直线上点到点的相对距离…
测量在两条直线上从一个点走到另一个点时的角度变化…
…总结这些差异(以及它们的绝对值),你就得到了一些指标

如果两行没有相同的点数:

将线放置在网格上,并标记该网格中与线接触的单元格…计算差异……尝试不同的网格分辨率

遍历这些线,跟踪您的行走方向,并删除与您的行走方向有小角度差异的点…一旦你遇到一个角度变化较大的点,把它作为你的新行走方向,然后离开这个点……然后,尝试其他指标

查找旋转和缩放

尝试计算/找到3个点的累积,或特征点(角变化相似的点,最好彼此不接近,角变化不常见),并尝试旋转/拉伸/镜像…您可能希望为每个可能的版本计算所有其他指标,并在可应用的情况下获得最佳结果

如果这样的东西不能给你有用的结果…看来有很多数学在等着你呢…

http://en.wikipedia.org/wiki/Image_registration
http://en.wikipedia.org/wiki/Scale-invariant_feature_transform