发现很多人都用mser,swt等进行场景文字的检测,最近也去实现了一下,虽然swt较新的算法,但实现过程中传统的mser算法反而更稳定,速度也会更快,可能是我还没有完全领会swt的精髓。ps:暂时只做水平及水平倾斜的文字 demo http://download.csdn.net/detail/u013293750/9699124 场景文字检测,tesseractocr识别
先看下处理完的大概结果
实现过程大概分为下面几步:
<1>mser文字获选区域块的提取,包括反白字体
<2>对mser文字获选区域进行连通域分析,求取最小包含矩形框,对矩形框进行合并。主要还是传统的大小距离,角度等的关系
<3>对合并的矩形框进行再次合并,得到一个个文字块
<4>将文字块处理成正的矩形块,进行块的反白判断及二值化
<5>对二值化后的图像进行投影及文字宽高大小分析,判断是否为文字块。得到最终结果
首先进行mser文字块的检测
求取连通域的最小包围矩形框,过滤掉较明显的非文字
进行矩形框的合并 两个for循环判断矩形框两两关系,当连通过宽度为高度的几倍时,还加入角度的判断(因为当宽度够长时,这边默认求得的最小矩形框文字方向不会错误的太离谱).
进行合并矩形框的再次合并,得到文字块,对文字块进行矫正二值。投影,字大小,比率等分析,判断是否为文字块,得到最终结果。
其中还是有很多问题需要解决,比如非文字块的排除(这里主要通过二值化及投影判断是否为文字块,肯定存在很多问题),字符块角度求取错误..
场景文字检测是个比较深的研究方向,看到微软研究院好像最新的效果很好,可惜在网上没有找到类似的demo文章。有时间再去好好研究