如何检测图像中的文本区域?

时间:2014-10-28 10:46:44

标签: c matlab image-processing computer-vision matlab-cvst

鉴于图像(即报纸,扫描报纸,杂志等),如何检测包含文本的区域?我只需要知道该区域并删除它,不需要进行文本识别。

目的是我想删除这些文本区域,以便加快我的特征提取过程,因为这些文本区域对我的应用程序毫无意义。有谁知道怎么做?

顺便说一句,如果可以在Matlab中完成,那将会很好!

最佳!

enter image description here

4 个答案:

答案 0 :(得分:2)

您可以使用Stroke Width Transform (SWT)突出显示文字区域。 使用发布here的mex实现,您可以

img = imread('http://i.stack.imgur.com/Eyepc.jpg');
[swt swtcc] = SWT( img, 0, 10 );

SWT.m中使用边缘图提取和图像过滤的内部参数可以帮助您根据需要调整生成的蒙版。

要获得此结果: enter image description here 我在SWT.m

中使用这些参数进行边缘图计算
edgeMap = single( edge( img, 'canny', [0.05 0.25] ) );

答案 1 :(得分:1)

自然图像中的文本检测是计算机视觉社区研究的一个活跃领域。你可以参考ICDAR论文。但在你的情况下,我认为它应该足够简单。由于你有报纸或杂志的文字,它应该是固定的大小和水平方向。

因此,您可以应用固定大小的扫描窗口,例如32x32。在ICDAR 2003培训数据集上训练它,以获得包含文本的正窗口。你可以使用一小部分颜色和渐变的特征,并训练一个SVM,它会给有文本的窗口带来正面或负面的结果。

如需参考,请转至http://crypto.stanford.edu/~dwu4/ICDAR2011.pdf。对于代码,您可以尝试他们的主页

答案 2 :(得分:1)

Matlab中的计算机视觉系统工具箱中的example显示了如何使用MSER区域检测文本。

答案 3 :(得分:1)

如果您的图片已经过二值化,并且您知道文本的通常大小,则可以使用HorizontalRunLengthSmoothingVerticalRunLengthSmoothing算法。它们是在开源库Aforge.Net中实现的,但在Matlab中重新实现它们应该很容易。 这些算法的结果图像的交集将为您提供区域包含文本的良好指示,它不完美但速度快。