识别图片中的特定区域

时间:2013-11-28 06:45:31

标签: algorithm image-manipulation

我目前正在开展一个小项目,涉及检测类似图片中的特定区域,代表在固定背景下绘制的平面图。

这是一个图片示例:

我正试图识别门,试图达到这样的结果:

我是图像处理的全新手,我不确定我正在寻找什么样的算法或图像处理方法。我尝试使用Photoshop中包含的一些边缘检测算法,但我无法获得干净的结果。

任何人都可以提供一些帮助或指导吗?

2 个答案:

答案 0 :(得分:2)

我终于使用了几乎任何类型的瓷砖。由于该算法仅用于为另一个应用程序生成配置文件,我将手动修复剩余的切片:)

以下是我感兴趣的人的解决方案:

  1. 提高对比度并降低图像亮度,以便轻松区分墙壁与其他墙壁:

  2. 将每个图块划分为200x200像素正方形的6x6网格。对于每个方块,计算30px边线上每侧的平均RGB值。

  3. 将此值与图块的其余部分进行比较。如果差异大于特定的增量(根据经验发现),那么它就是一堵墙。

  4. 绕过边框上的每个瓷砖,检查通往出口的墙壁(顶部的垂直墙壁等),一旦找到它们,找到哪个瓷砖通向出口是相当微不足道的。

  5. 以下是各种瓷砖的最终结果:

答案 1 :(得分:0)

我认为边缘检测不会对您有所帮助。

如果平面图总是常规网格,则任务更容易:您只需遍历所有边框图块并确定它们是墙砖还是地砖。如果是门瓦,请将门拉成矩形。 (这意味着在您的示例中,实际上有四个门是一个网格宽,而不是两个门,每个网格宽两个。角落中的地砖也可以是两个门,一个垂直,另一个是水平。)

问题是识别瓷砖。地砖太不同,质地粗糙,墙壁也有阴影。识别墙砖更容易。它们的颜色相似。

我的第一个想法是将图像缩小到6x6像素。这会给我一个每个瓷砖的平均颜色,但它不起作用:墙段给出了颜色的偏移。

似乎有效的方法是确定每个瓷砖核心区域的平均RGB颜色,然后将其与墙砖的泥泞深棕色进行比较,并将欧几里德距离与墙砖颜色样本进行比较:

Floor plan with average tile colours

该方法依赖于所有计划中所有图块的类似颜色方案。我使用了标准

r > 0x44 || g > 0x44|| b > 0x44

这里用于识别地砖。如果你必须区分更多的瓷砖类型,也许你需要一个更好的标准。

编辑我刚刚看到您发布的新贴图。上述方法在这里不起作用,至少在铁路轨道的计划中不起作用。也许算法需要看薄壁。