清除地图中的像素

时间:2011-02-23 19:54:35

标签: php algorithm image image-processing

map

我们有这张地图,我们需要使用PHP来获取所有蓝色阴影以及百分比。问题是,有些百分比与边界颜色相同,有时,百分比进入边界。我们需要使用这个图像。

3 个答案:

答案 0 :(得分:4)

没有(AFAIK)真正简单的方法。

最简单的方法不会给您带来好的结果:分离渠道并删除小组件。

结果如下:

enter image description here

正如您所看到的,还有一些数字和百分号仍然存在,因为它们连接到分隔线并删除小组件对它们不起作用。

如果您需要更好的工作,则应将图像与每个数字的模板相关联,并在识别后将其删除。

在这里,您可以看到与数字“2”的相关性结果:

enter image description here

识别出一个错误的“2”(见左上角),因此一般程序可能需要更复杂的方法。

无论如何,我认为这种操控远远超出你对K-12的期望。

HTH!

修改

根据您的要求,有关第一种方法的一些细节。

首先将三个频道分开,然后获得三张图片:

enter image description here

你保留第三个(蓝色通道)

然后您需要删除较小的组件。有很多方法可以做到这一点,最简单的方法可能来自flood-fill algorithm中的连通性检测,但您只需测量组件而不填充它们。
基本(未优化)的想法是移动图像中的每个像素并计算与其“连接”的像素数。如果小于指定的数量(阈值),则只删除整个集合。大多数图像处理库都已经实现了所有这些功能。

答案 1 :(得分:1)

对于此特定图像,如果在图像编辑软件中打开图像,将模式从索引转换为真彩色(RGB),然后用黄色(RGB:255,255,0)对整个图像进行颜色躲避,最终结束带有由轮廓和数字组成的黑白图像。 (这也是蓝色通道看起来像BTW)

因此要么扔掉红色和绿色通道,要么实施颜色减淡算法。

另一种选择是对每个像素进行采样,并设置该像素的R& G分量为B值

编辑:实际上,我忘记了白色数字。得到那些,用rgb(0,0,255)填充外部白色,反转整个图像,并用(255,255,0)颜色闪避,红色或绿色通道现在是缺少的数字。将这些叠加在上述前面步骤中处理过的图像之上。

答案 2 :(得分:0)

摆脱阴影颜色应该很容易。

摆脱这些数字更加棘手。我会:

  • 创建与每个数字和%符号关联的像素数据的查找表。
  • 清除区域时,查找数字(黑色或白色),只清除查找表中的确切模式。
  • 通过在不同色调之间添加黑色来重新创建区域之间的边界。

由于数字隐藏原始信息,因此无法保证准确性。但是,我认为上述步骤可以让您在不费力的情况下获得接近100%的准确度。