2013-02-13 63 views
1

我正在为区域语言进行字符识别。在提取图像时,点分别被识别为字符。字符提取 - 点与字符分开识别

%% Plot Bounding Box 
for n=1:size(propied,1) 
rectangle('Position',propied(n).BoundingBox,'EdgeColor','g','LineWidth',2) 
end 
hold off 

%% Characters being Extracted 
figure 
for n=1:Ne 
[r,c] = find(L==n); 
n1=imagen(min(r):max(r),min(c):max(c)); 
imshow(~n1); 
end 

原始代码:http://www.mathworks.com/matlabcentral/fileexchange/22922-image-segmentation-extraction

+1

那里有一个具体问题吗? – ChiefTwoPencils 2013-02-13 20:44:11

+0

我正在使用Matlab中提供的函数和工具IPT – rgb 2013-02-14 02:25:55

回答

0

因为你正在做的字符/文字识别,你更有可能想要使用的字词或文本行,而不是单个字符的集合。如果你确实想要做后者,那么在你确定了单词后,它会更加健壮。

所以,这里最简单的方法是使用标准的形态开放(假设文本是黑色的,否则使用关闭)操作符。从大型水平结构元素(SE)开始。在这个SE中应用一个开口会将您的图像分为几行文字。在每一行中使用较短的水平SE来获取单个单词。然后,对于每个单词,您都应考虑打开垂直SE,以便加入重音和其他印刷细节。

例如,下面是输入图像,其具有半径35的水平SE开口,半径7的水平SE的开口,并且具有半径7.

enter image description hereenter image description here的垂直SE一个开口enter image description hereenter image description here

我没有在隔离组件中应用第三种操作,但是您应该这样做以免冒险加入两行文本。当然,这都是假设横向的文字。绘制这个最终图像的边框给人的result你是后:

enter image description here

注意某些字母(“TY”,和“NY”)分别连接在一开始,所以他们表现为单一在这个输出中的字母。这是一个独立的问题需要处理,这可能或不是您的问题。

+0

因此无法编辑/添加功能到现有的代码? – rgb 2013-02-14 02:27:22

+0

@ user2069850如果所有的代码都提取了边界框,那么没有。你必须提供一个更好的边界框,在这个答案中找到了一个例子。通过使用'imopen'和'strel',在Matlab中重现它非常简单。 – mmgp 2013-02-14 02:28:56