如何分割包含文本的图像?

时间:2013-09-27 08:03:20

标签: matlab image-processing ocr image-segmentation

我有一个包含文字的图片,我想从图片中剪切每个字母。我如何使用MATLAB实现这一目标?

2 个答案:

答案 0 :(得分:2)

最简单的方法是测试颜色:

找出字母的颜色。

假设这是你的图像,包含一个用彩色5写的字母T:

myImage = round(4*rand(6));
myImage(1:2,:) = 5; %Drawing the top bar of the T
myImage(:,3:4) = 5; %Drawing the leg of the t
myColor = 5;

现在只保留字母(/字母):

myImage(myImage~=myColor) = NaN

现在您可以使用

绘制它
surf(myImage)

将其扩展到颜色范围(或一组RGB颜色,取决于图像的格式)并不太难。

答案 1 :(得分:2)

使用图像处理工具箱

如果您有工具箱,则可以快速识别图像中的每个单独字母。

从灰度图像开始,您必须使用

找到分割阈值
level = graythresh(Img);

然后用

将图像转换为二进制
Img = im2bw(Img,level);

Cc = bwconncomp(Img);

您将获得一个结构,其中包含其字段中每个已识别组件的线性索引

Cc.PixelIdxList

请参阅这些功能的文档,以根据您的需要调整细分。

没有图像处理工具箱

您必须自己实现连接的组件算法。

来自Matlab文档:

>The basic steps in finding the connected components are:
>
>1. Search for the next unlabeled pixel, p.
>2. Use a flood-fill algorithm to label all the pixels in the connected component containing p.
>3. Repeat steps 1 and 2 until all the pixels are labeled.