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

4

1 回答 1

0

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

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

例如,这里是一个输入图像,它的开口具有半径为 35 的水平 SE,开口具有半径为 7 的水平 SE,以及具有半径为 7 的垂直 SE 的开口。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

我没有在孤立的组件中应用第三个操作,但你应该这样做,以免冒险加入两行文本。当然,这一切都是假设直线水平的文本行。在此最终图像上绘制边界框可得到您所追求的结果

在此处输入图像描述

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

于 2013-02-14T02:06:08.000 回答