如何对单个数字或多个数字进行分类

我有一个包含数字的图像。

有:1,153,25,50,23和40

对于每一位数字,我都没有数字识别问题。 我可以看出有1,1,5,3,5,0,2,5,2,3,4,0。

现在,我想让他们成为1,153,25,50,23和40。

我的方法是,使图像变得高度模糊,因此数字的边界框与另一个数字的边界框相遇。 然后提取多边界框的巨大边界框内的数字。

我的期望是这样的

但是,现实就是这样

1,153,25,5,0和2340

因为,

  • 5和0的距离太远

  • 距离23和40太近了

  • 我的问题是,是否有另一种方法来分类那些是单个或多个数字? 如果是,如何? :) 非常感谢你 :)

    *对不起,我的英语不好

    **我使用opencv c ++


    与此相比,模糊然后找到边界框的计算时间很大:

    如果你可以挑出每个数字,那么你必须至少有一个中心点的每个数字。 我会通过查找每个数字的宽度和高度以及旋转进一步得出结论。 有了这些信息,我会应用一套与人们如何阅读数字相对应的规则。

    这些规则可能起作用:

  • 从一个等于数字位数的空节点号开始
  • 被测数字是否有其他数字小于一个宽度(或两个宽度与对方的中心点)?
  • 如果是这样,那么两个数字都有相同的旋转(+/-容差)
  • 如果是这样的话,是两个数字的中心点之间的线旋转90(+/- tol)度?
  • 使用两点的矢量差确定顺序
  • 在两个数字之间创建一个方向边
  • 检查另一边的数字(快捷方式)
  • 重复下一个数字
  • 沿着图表来找出你的一组数字
  • 考虑到这样的问题,我宁愿使用概率来订购一组可能的解决方案,那么你的程序可能会问一个操作员,或者如果它被卡住了,假设它可以返回并选择下一个“最好”的一个。

    希望这有助于我羡慕你的数字识别技能:)


    我建议你不要模糊图像。 只需提取单个字符及其边界框即可。 然后,您可以迭代地为它们的质心应用欧几里得距离阈值,以将边界框合并在一起,一次一个。 然后,您可以将每个数字建模为一个链表,并通过简单的方向启发式将其添加到元素任一侧的列表中。

    链接地址: http://www.djcxy.com/p/79645.html

    上一篇: how to classifying that is a single digit or multiple digit

    下一篇: Suggestions for digit recognition