如何在MATLAB中计算图像中的文本行数

时间:2015-11-14 07:39:37

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

我有一些图像有单行或多行文字。我想计算行数。就像在这个参考中一样,有5行。

reference image

如何在MATLAB中执行此操作?

2 个答案:

答案 0 :(得分:1)

我假设您安装了图像处理工具箱,否则这将无效。此外,这假设每行文本与其他行有足够的空间。

你可以用形态学来解决这个问题。首先,拍摄图像并将其反转,使其成为黑色背景上的白色文本。执行此操作后,请使用水平线结构元素,该元素的大小与图像的宽度相同,并使用形态膨胀。这实际上将从每一行中取出字母并将它们连接在一起,以便属于同一行的所有字符都属于一个对象。完成此操作后,您将计算总行数。

首先,我将直接从StackOverflow读取您的图像,但您上传的图像实际上是RGB。因此,我将使用im2bw将其转换为二进制,然后像我上面谈到的那样反转图像。我所说的形态逻辑假设物体在黑色背景上是白色的,这就是需要反转的原因。

接下来,我们使用strel创建水平线结构元素,使用imdilate扩展图像,然后使用bwlabel计算结果对象的总数,从而计算行数:

%// Read in image, convert to black and white and invert
im = ~im2bw(imread('http://s16.postimg.org/ih7ai6r5h/Para3.jpg'));

%// Create horizontal line structuring element
se = strel('line', size(im,2), 0);

%// Dilate the image with this structuring element
out = imdilate(im, se);

%// Count the total number of objects
[~,num] = bwlabel(out);

作为参考,这是在计算线条之前处理后的图像的样子:

enter image description here

请记住,黑色背景上的文字是白色的。 num将包含对象的总数,我们看到它是预期的5:

>> num

num =

     5

答案 1 :(得分:0)

如果您有计算机视觉系统工具箱,则可以使用ocr功能。它不仅会给你每个单词的位置,还会解释这些单词。