复杂场景图像中数字的本地化

时间:2011-07-22 18:19:19

标签: image-processing ocr

首先,我非常感谢SO专家提供的帮助。许多人提出并由专家回答的问题对我来说是非常有益的。几个月前,当我还是学生做论文时,它帮助我解决了一个非常关键的问题。

现在我正在研究一个问题,以检测(然后识别)复杂场景图像中的数字。您可以在此处查看这些图片:http://imageshack.us/g/823/dsc1757w.jpg/。这些是马拉松运动员的照片,他们的衬衫前面有数字。我必须检测图像中出现的所有数字然后识别它们。识别并不困难,因为这些似乎是OCR友好的角色。关键是如何检测这些数字。

我有一个想法,首先将其滤色为黑色。但是当我在Matlab中尝试时,结果并不令人鼓舞,因为我们可以看到图像中的许多区域符合这个标准(衣服,跑步者后面的一些阴影,树叶中的阴影等)。要么我需要从这些其他区域对这些字符进行分类,要么需要一些其他好的技术。 有论文可用,我已经通过了其中的一些,如SWT,DWT等,但我觉得它们不会有太多帮助。我在想某种训练算法可能有用。还有另一个原因,将来可能会有其他可能有不同字体等的照片,所以我认为专用的算法方法可能会失败。有人能指出我正确的方向吗?

我不是图像处理的新手,也不是专家。所以,在这方面的任何和所有帮助/建议将不胜感激:)。

谢谢, MD

2 个答案:

答案 0 :(得分:1)

你知道你的问题不是一个简单的问题,但它看起来很有趣! 虽然我没有任何解决方案,但我会分享我的想法,希望你可以用它来制作一些东西。

我们以你的两张照片为例:

Photo-A: http://imageshack.us/photo/my-images/59/dsc0275a.jpg/ 它显示了一个人的相对“大”绿色标签,他的衬衫上有数字。

图片B: http://imageshack.us/photo/my-images/546/dsc0243u.jpg/ 它显示了许多衬衫上有红色小标签的人。 (标签的高度(以像素为单位约为Photo-A中标签的1/5)

考虑到上面的照片,我会尝试写一些可能有帮助的随机想法......

(a)定义您的比例:没有必要应用搜索算法来查找从2x2像素到完整图像分辨率的标签。您必须定义宽度和宽度的最小/最大限制。标签的高度。这些限制可能取决于许多不同的因素:

(1)一个因素是标签的实际尺寸(由人与相机的距离定义),可以定义为图像宽度和图像宽度的百分比。高度。

(2)另一个因素是您将要使用的OCR的实际阅读准确度。如果数字的图像高度小于Y1像素或大于Y2像素,则OCR将无法读取它(这听起来很奇怪,但确实如此:人眼看起来很清晰,但是OCR可能有问题读它)。

(b)找到感兴趣的区域:在您的情况下,这相当于“查找标签的大致位置”。我们可以将运动员标签大致定义为“一个(几乎)矩形区域,相对于照片边界可能有点倾斜,并且包含:黑色+颜色C1的中心区域[例如红色或绿色] +白色(=中性) )它顶部和/或底部的区域“。

找到标签大致位置的可能算法是:

(1)从左到右,从上到下遍历所有图像并检查MinHeight / 2 x MinHeight / 2的正方形区域

(2)创建正方形区域的直方图(或将其划分为例如8级)并尝试找出是否只有黑色+另一种颜色C1的百分比为例如1。黑色:40%+ / - 10,颜色:60%+ / - 10%

(3)如果(2)为真,尝试将区域扩展到右边和底部,同时百分比保持在指定的限制内

(4)如果方形完全展开,检查扩展区域大小是否在(a)中指定的宽度/高度的最小/最大限制范围内。如果没有,请转到步骤1

(5)处理扩展区域以读取数字 - 见(c)吼叫

(6)转到第1步

(c)处理感兴趣的区域:尝试以下步骤:

(1)通过应用将颜色C1刻录为白色的滤色器将每个图像区域转换为灰度。

(2)使灰度均衡,使黑色字母突出

(3)如果检测到倾斜,请对图像区域执行反向旋转,使字母尽可能水平。

(4)将该区域送入仅受训练的OCR

祝你的项目好运!

答案 1 :(得分:0)

您可以尝试联系this software的作者:

enter image description here

Yaroslav是StackOverflow的活跃成员。