字符提取 - 点与字符分开识别

时间:2013-02-13 20:26:26

标签: matlab image-processing

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

%% 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 个答案:

答案 0 :(得分:0)

由于您正在进行字符/文本识别,因此您更可能需要单词或文本行的集合,而不是单个字符。如果你真的想要做后者,那么在你识别出单个词之后它会更加强大。

因此,这里最简单的方法是使用标准的形态学开口(假设文本为黑色,否则使用结束)运算符。从大型水平结构元素(SE)开始。使用此SE应用开口将以图像行分割图像。在每一行中,您使用较短的水平SE来获取单个单词。然后对于每个单词,您会考虑打开一个垂直SE,以便它连接重音和其他印刷细节。

例如,这是一个输入图像,其开口的水平SE为半径35,开口的水平SE为半径7,开口的垂直SE为半径7.

enter image description here enter image description here enter image description here enter image description here

我没有在隔离组件中应用第三个操作,但您应该这样做,以免冒险连接两行文本。当然,这都是假设水平直线的文本。在最终图像上绘制边界框会得到您所追求的result

enter image description here

请注意,一些字母(“ty”和“ny”)在开头连接,因此它们在此输出中显示为单个字母。这是一个需要处理的单独问题,可能与您无关。