如何从点列表中找到模式(线条,圆圈......)?

时间:2009-06-02 13:55:13

标签: algorithm artificial-intelligence methodology pattern-recognition

我有一个积分清单。每个点都是xy坐标(两者都是整数)。现在我正在尝试找到已知的图案,例如直线,圆弧或圆,知道这些点在图案上并不完美。

最好的方法是什么?我没有很多线索可以开始。

编辑:点数已订购。用户正在绘制一些东西,程序应检测最佳模式。例如,如果绘制三角形,则应检测三条线。

5 个答案:

答案 0 :(得分:9)

看看Hough Transformation。你所做的是:你将图像转换为“圆形”空间,然后你只需找到光像素。

在图像中找到光像素非常简单,只需应用截止值即可。

光像素区域的数量是圆圈的数量。您可以通过应用反函数重建图像上的原始位置。

答案 1 :(得分:3)

经典识别器是神经网络。神经网络工作“没问题”,需要以某种方式进行培训。

神经网络的数学技术和原理可以转移(经适当修改)到我读过的大多数其他识别器;例如,马尔可夫链,贝叶斯模型。

答案 2 :(得分:1)

只要将其限制为基本形状,就可以计算当前笔划的平均“方向”,并从中创建一系列“笔划”。

基于该信息识别形状可能更容易:

  • 圆圈具有非常恒定的二阶导数
  • 一个'七'有一个向右的笔划,然后是一个向左下方的笔划
  • ...

答案 3 :(得分:1)

我看一下从某个点P到其他每个点的距离,而不是P是圆心,你会得到一些非常明显的统计效果。

您可以撤消此操作并找到具有这些属性的点。作为第一次通过,类似距离的标准偏差可能会起作用,并找到您可以采取相对于位置的衍生物的位置并尝试将其最小化。找到最小值后,尝试找到一组等距离的> 3点。

我希望你需要的东西不是标准偏差,对异常值不太感兴趣,对丛生更感兴趣。

此外,这对你的线路没有多大帮助。

答案 4 :(得分:1)

由于您正在获取像素,并且它们按顺序排列,您可以首先检查绘制的每个第10个像素之间的斜率,然后查看斜率的变化情况。不连续性为您提供了一些信息。