代码之家  ›  专栏  ›  技术社区  ›  Sina

基于点位置或图像的角点检测

  •  -1
  • Sina  · 技术社区  · 8 年前

    我有一些简单的形状,这些形状不一定是规则的。 enter image description here

    我需要一个算法来找到它们的角点,实际上我想将它们的点汇总到最小,以dxf格式保存它们,并在数组中确定它们的点位置。 像harris或surf这样的简单算法无法找到合适的点,结果返回了太多的点。 你能帮我用算法、想法或代码来解决这个问题吗?(在c、c#、java等语言中)或图像处理 提前谢谢。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Yves Daoust    8 年前

    您想要实现的是所谓的多边形 矢量化 .

    首先,需要应用轮廓跟踪算法来按顺序获取像素。在这种情况下,似乎只需将像素链接到它们的邻居就可以了(请注意,在您的示例中,一些形状是开放的,您可能需要将邻居扩展到两到三个像素。

    然后利用Douglas-Peucker算法检测长直边( https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm )或类似。

    你的一些角是钝的,你可能想纠正它们。我建议丢弃形成平角的短段序列,并连接相邻的长段以恢复方形角。

    enter image description here

    enter image description here

    不要期望“完美”的结果。

    推荐文章