【问题标题】:Reading a map programmatically以编程方式读取地图
【发布时间】:2014-01-22 16:30:32
【问题描述】:

我正在尝试以编程方式读取在 Paint 中手绘的地图。地图如下所示:

http://i.stack.imgur.com/mxlXU.png

我需要知道地图的每个像素属于哪个区域以及它们的名称。

想到了以下方法,不知道有没有更简单或者更快(原图很大)的方法:

  1. 检测区域:从每个像素填充并保存区域。这与文字不符。
  2. 检测文本/“噪声”:再次填充每个像素,但这次使用之前检测到的相邻像素区域作为边界。例如。当对“Abc”区域中的文本像素执行此操作时,不属于“Abc”周围区域的所有内容都将被淹没。然后丢弃面积超过特定数量的区域,例如 20 像素。这样做是为了匹配完全包含在该区域中的字母(面积很小)。
  3. 将区域的像素(包括在 2 中检测到的像素)保存在图像文件中,并将每个像素输入tesseract 以获取区域名称。

我发现上面的方法很复杂,而且似乎很慢(虽然我还没有完全实现它)。它也不能很好地处理缺少边界像素的完全封闭区域。有没有更简单/更好的解决方案来做到这一点?

【问题讨论】:

    标签: algorithm language-agnostic computer-vision flood-fill


    【解决方案1】:

    如果您首先在每个像素处进行填充,您可能还会在 O、B、A 等字母内获得小区域。我认为您可以尝试以下方法:

    1. 检测包含标签的区域并记住其周围矩形的坐标。
    2. 对于每个包含文本的区域,使用 tesseract 或类似方法读取标签并记住它。
    3. 删除包含文本的矩形。之后,您可以尝试进行一些形态学操作来尝试关闭未完全关闭的区域。从您找到文本的位置开始填充以获取区域。

    这在理论上可行,但结果将取决于图像的外观、您检测文本的能力以及类似的东西。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多