过滤不需要的blob(检测图像中的数字)

时间:2013-09-15 12:09:06

标签: c# algorithm opencv image-processing aforge

我正在编写有趣的应用程序,我希望从跑步者T恤中获取数字。我正在玩AForge.NET和emguCV以获得理想的结果,我认为我非常接近解决我的问题,但我仍然想从更有经验的用户那里得到意见。 首先我有这个图像:

enter image description here 之后,我将它应用于最大对比度和一些闪电,我得到了这个结果:

enter image description here 接下来,我将图像二值化并获得最终结果: enter image description here [^]

接下来,我应用一些基本的过滤器来清除小blob和非常大的blob。接下来,我尝试找到高度为>宽度的blob,之后我尝试找到相似的blob大小和形状,它们是彼此相邻的。 这是我的方法,在大多数情况下适合我。作为补充,我创建了可能被认为是字母的可能blob的直方图。这意味着我在该矩形中寻找2种主色。如果两种主色是黑色(ish)或白色(ish),我知道它是跑步者衬衫上的数字。 我想知道的是,你会采取什么不同的方法吗?像混合通道一样,转换为HSV空间并可能过滤黑色? 我的整个想法是获得那些不是数字的少量blob的数字。 我会很感激任何建议。 评论和想法很好,如果你想编写代码请做。 谢谢......

3 个答案:

答案 0 :(得分:1)

您需要仔细考虑为什么要执行这些步骤。你在做什么似乎有点随机。它可能适用于一个图像但不适用于其他图像。我的建议:

  1. 尽量保持简单
  2. 以灰度或二进制工作(早期丢弃颜色 - 它确实没有什么对您有用的信息)
  3. 明确这需要适用的情况(倒置字体,字体大小,旋转,背景)
  4. 有一个图像训练和测试数据库,你可以评估你的方法,所以这不仅仅是一个主观的评价!
  5. 有很多关于这个主题的文献。我建议你阅读它而不是重新发明轮子!你可以花多年时间来做这件事!

答案 1 :(得分:0)

查看图像的特征,您可能首先检测正方形,因为文本处于白色块中。不确定aforge是否可以检测到正方形,但其他库可能会这样做。

答案 2 :(得分:0)

很好的问题,有很多方法可以做到这一点。 我建议你阅读:Image Processing: Algorithm Improvement for 'Coca-Cola Can' Recognition

好的,你的文字,我想我会先找到白色方块 接下来使用一些OCR来检测数字(openCV)或训练你自己的神经网络。或者也许对每个黑色数字(可能在其上下区域)进行评级,这样就可以区分6和9。