现在的位置: 首页 > 综合 > 正文

最新场景文字检测进展

2018年04月12日 ⁄ 综合 ⁄ 共 3910字 ⁄ 字号 评论关闭

http://stackoverflow.com/questions/4837124/stroke-width-transform-swt-implementation-java-c

看看 overflow上有人提到,看到 《detecting text in natural images with stroke width transform》这篇论文后,在寻找源码!
 
....有人实现了一个,虽然很矬
这是作者在博客上写的源码介绍,真是好人啊有没有。
....另外github上也有人写了这个源码,虽然还是很矬。
顺便感慨,有多少“科研”是经得起检验的。。

最新场景文字检测进展(含代码)

       关于场景文字检测的定义、应用、意义等科普性质的细节这里就不提了,本文是一篇相对比较专业的文章,如果非此领域的同学请绕行。本文主要探讨场景文字主流的方法,并提供了一些创新思路,以及一个基于文献 [1] 的场景文字检测系统 ( 在 csdn上分享了该代码 ) 。就我所知 ( 半年前全面搜索过 ) ,十分完善的场景文字检测的代码网上是没有的,有的只是一些算法,或者比较过时的系统,本文的出现正是希望通过本人的一点努力填补这个空白,方便广大研究者能够更快入门,至少一开始研究就有一个基本框架。

      目前主流的方法主要有两类:基于区域 (MSER ,最大稳定极值区域 ) 和基于像素点 (SWT ,笔划宽度变换 ) 的方法。在文献 [2] 中提到:截止 2011 年,场景文字检测结果最好的是韩国人 Chunghoon Kim基于 MSER 的方法,其查全率 (recall) 为62.47% ,查准率 (precision) 为 82.98% 。遗憾的是,他的方法并没有写成论文,其算法也不得而知。

       当然,使用 SWT 是更普遍的情况, [1] 即是基于 SWT 的。 SWT 方法最有代表性的有两篇文章,都出自微软研究院,一篇是 SWT 开山之作—— Epshtein 大神的文献 [3] ,一篇是巅峰之作——华科 Cong Yao 的文献 [4] 。 Epshtein 大神提出 SWT 算法,使得场景文字检测向前迈出一大步,其算法核心非常简单,大致是 (1) 将原图做Canny 检测, Canny 边缘图作为算法的输入图,对每一个 Canny 点进行一次 SWT 算法,见图 1 ; (2)SWT 算法的一个前提是作者认为每个字符的笔划宽度是大致相同的,所以从一个 Canny 边缘点顺着 梯度方向 出发,如果能够找到梯度方向正好相反的点,且该点也是 Canny 边缘点,则认为该笔划宽度有效; (3) 当检测完所有的Canny 点时,有效的笔划宽度就构成了输出图,即文字检测图,可见图 2 。当然,理论上是这样,而实际上会出现很多虚警图,这些虚警通常是由于类文字物体得到的,如条环、窗户、砖块和网格等。我认为该算法是基于像素点的,是因为起始点是Canny 边缘点,梯度方向和大小也是基于边缘点,而笔划宽度则是将两个对应的Canny 边缘点间的线段连接起来。基于像素点有一个最严重的问题,就是容易受到噪声点或特殊点的影响。比方说图 2 ,本来很好的结果,却由于伪笔划宽度带了一些问题,因此做完 SWT 变换,必须做一些处理或改进 。

  

(a) 原图的梯度方向                       (b) 局部放大图

图 1  梯度方向图

  

(a) 原图                (b)Canny 边缘图           (c)SWT 图

图 2. SWT 过程图 ( 具体算法见 [3])

    Cong Yao 的文章曾让我大为震惊,虽然我并未做仿真,也没有按照其思路进行研究,但是并不妨碍我推崇这篇文章。我没有做仿真的原因是,这篇文章的工作量太大,对于只有半年时间写论文的我来说时间不够。通常,看到这类文章就像寻着一个珍宝一样,时不时要拿出来鼓励一下自己,什么是真正的好文章?既有创新,又有工作量。可能是受 Marios Anthimopoulos 的启发, Cong Yao 使用的分类器是RFs(Random Forests,  随机森林 )  。在文献 [5] 中, Marios 例举了 RFs 在文字检测中比 Boosting 、 SVM 和 NNs 好的两个优点。我在网上 搜过 RFs 的代码,只有一个简化版的,本来 RFs 是一种判决树,输出的是概率,具体阈值可以人为设定,但是简化版的只给出 0 或 1 。另外,该论文 使用 contour shape,
 edge shape  很新的描述子作为特征向量,说明作者对图像领域最新发展是很熟悉的。作者一共给了十来个特征向量,测试这些特征的工作量可想而知。当然,工作量归工作量,如果结果不行,那工作量也是白瞎,但是作者不负众望,对 ICDAR 的查全率为 0.66 ,查准率为 0.68 ,对OSTD( 倾斜场景文字数据库,由文献 [1] 作者发布 ) 的查全率为 0.73 ,查准率为 0.77。

(a)p, e, c, o 出现了伪笔划宽度    (b)E, A, G, S 包含伪笔画宽度

图 3. SWT 由于噪声点引起的伪笔划宽度

    2012 年, Weilin Huang提出了 SWT 的变体—— SFT[6] ,在 SWT 算法中添加了颜色信息。 2014 年,将由本人提出另一种 SWT 变体—— GSWT ,目前还在进一步实验中,但相信不久就能成文,准备发到 PR 上。

    本人曾做过两个有趣的小实验,有图供大家参考批评。

    一是研究图像梯度时,发现文字的梯度大小图有一个很明显的特征,就是一个文字的笔划对应的两个边缘的梯度大小是大致相等的。见图 4 。

    二是,由于 SWT 受噪声点影响较大,所以可以通过滤波,将噪声点过滤掉再使用SWT 算法,但是一般低通滤波器会使文字的边缘信息造成模糊,所以保持边缘平滑滤波器是一个完美选择。我在这方面的研究还不深入,但是做个一个很神奇的实验。灵感来自于 Gastal 写的文献 [7] , Adaptive Manifolds 滤波器是一种新型的而且性能非常优越的保持边缘平滑滤 波器。见图 5 。

图 4.  对比原图和梯度大小图。上行为原图;下行为梯度大小图,颜色从蓝至红表示值增大。可以发现,每个字中笔划对应的两个边缘梯度大小是基本相等的。

  

(a) 对原图进行文字检测          (b) 对经过 AM 滤波后的图进行文字检测

图 5.  黄色框表示检测到的竖直文字区域,红色表示水平文字区域。可见,原图由于噪声的影响,结果很不准确,而后者能够准确检测。

    最后,提一下我发布的一个场景文字检测系统——TSDFNS(text string detection from natural scenes) ——也许是很多人最想要的。但在这里,希望大家有时间能够读一读上面我提到的两个小实验,或许会对你在这个领域有写帮助。代码见TSDFNS。

参考文献

[1] Chucai Yi, etc. Text string detection from natural scenes by structure-based partition and grouping. TIP, 2011.

[2] Asif Shahab, etc. ICDAR 2011 Robust Reading Competition Challenge 2: Reading Text in Scene Images. ICDAR, 2011.

[3]  Boris Epshtein, etc. Detecting Text in Natural Scenes with Stroke Width Transform. CVPR, 2010.( 为了致敬,特意将 Epshtein 标为粗体 )

[4] Cong Yao, etc. Detecting texts of arbitrary orientation in natural images. CVPR, 2012.

[5] Marios Anthimopoulos, etc. Detection of artificial and scene text in images and video frames. PAA, 2011.

[6] Weilin Huang, etc. Text Localization in Natural Images using Stroke Feature Transform and Text Covariance Descriptors. ICCV, 2012.

[7] Eduardo S. L. Gastal, etc. Adaptive Manifolds for Real-Time High-Dimensional Filtering. SIGGRAPH, 2012.

【上篇】
【下篇】

抱歉!评论已关闭.