2011-07-22 91 views
2

首先,我非常感谢SO的专家提供的帮助。许多专家提出的问题以及专家的回答对我来说都是非常有利的。它在几个月前帮助我解决了一个非常关键的问题,当时我是一名学生在做论文。复杂场景图像中数字的本地化

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

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

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

感谢, MD

+0

请允许我欢迎你们来的StackOverflow,并提醒三件事,我们通常在这里做的:1)当你得到帮助,尽量给它太**回答问题**你专业2的面积)['阅读FAQs' ](http://tinyurl.com/2vycnvr)3)当你看到好的问答时,用['灰色三角形](http://i.imgur.com/kygEP.png)系统的可信度基于用户通过分享知识获得的声誉。还请记住接受更好地解决您的问题的答案,如果有的话,['通过按复选标记符号](http://tinyurl.com/4srwe2t) –

回答

1

你知道你的问题不是一个简单的,但它似乎很有趣! 尽管我没有任何解决方案,但我会分享一下我的想法,希望您能从中获得帮助。

让我们把你的照片的2为例:

照片-A:http://imageshack.us/photo/my-images/59/dsc0275a.jpg/ 它表明一个人具有相对“大”绿色在他的衬衣数字标签。

照片-B:http://imageshack.us/photo/my-images/546/dsc0243u.jpg/ 这表明很多人在他们的衬衫红色小标签。 (标签以像素为单位的高度大约是1/5照片-A标签)

考虑到上述情况的照片,我会尽量写一些杂感这可能有助于...

( a)定义您的比例:使用搜索算法从2×2像素到全图像分辨率查找标签毫无意义。您必须定义标签高度的最小/最大限制&。这些限制可能取决于许多不同的因素:

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

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

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

一种可能的算法找到一个标签的近似位置是:

(1)遍历所有图像左到右,顶部至底部和检查minHeight的正方形面积/ 2×了minHeight/2

(2)制作方区域的直方图(或色调分离为如8级),并试图找到,如果只有黑色+在例如百分比另一个颜色C1黑色:40%+/- 10,颜色:60%+/- 10%

(3)如果(2)为真,请尝试将面积扩大到右侧和底部,同时将百分比保持在指定的范围内

(4)如果正方形完全膨胀,检查是否扩展区域大小是你的(a)中指定的最小/最大宽度/高度的范围内。如果不是,转到步骤1

(5)过程中的扩展区域读取数字 - 见(c)中波纹管

(6)转到步骤1

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

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

(2)均衡灰度以使黑色字母代表出

(3)如果已被检测出的倾斜,执行在图像区域中的反向旋转,以使字母尽可能的水平。

(4)饲料面积只为数字

祝你的项目培训的OCR!

+0

感谢您的详细信息。肯定会尝试这个,但同时我有一些想法。这可以使用某种模板匹配来完成吗?特别是尺度不变的一个。在这种情况下,我可以收集数字的样本,并通过匹配算法的模板运行它们。类似于特征脸的东西。 – Arnolin

+0

@Arnolin是的,像eigenimages-like算法似乎也是一个好主意!您可以将每个数字识别为单独的模式,根据数字的位置累积数字并接受例如只有超过3-4位的数字。祝你好运:-) –

0

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

enter image description here

Yaroslav是StackOverflow上的活跃成员。

+0

太棒了!我会联系他,他可能会给我一些指点。顺便说一句,我已经看到你在这里的一些图像处理问题的答案,你有什么想法呢? – Arnolin

+0

@Arnolin我确实有一些想法,但无法测试它们(由于问题的复杂性),我宁愿保持安静。由于现实世界的条件,图像处理是其中理论根本不够的主题之一。我认为Yaro是你最好的赌注之一。 –