我正在为区域语言进行角色识别。在提取图像时,点被分别标识为字符。
%% 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
答案 0 :(得分:0)
由于您正在进行字符/文本识别,因此您更可能需要单词或文本行的集合,而不是单个字符。如果你真的想要做后者,那么在你识别出单个词之后它会更加强大。
因此,这里最简单的方法是使用标准的形态学开口(假设文本为黑色,否则使用结束)运算符。从大型水平结构元素(SE)开始。使用此SE应用开口将以图像行分割图像。在每一行中,您使用较短的水平SE来获取单个单词。然后对于每个单词,您会考虑打开一个垂直SE,以便它连接重音和其他印刷细节。
例如,这是一个输入图像,其开口的水平SE为半径35,开口的水平SE为半径7,开口的垂直SE为半径7.
我没有在隔离组件中应用第三个操作,但您应该这样做,以免冒险连接两行文本。当然,这都是假设水平直线的文本。在最终图像上绘制边界框会得到您所追求的result:
请注意,一些字母(“ty”和“ny”)在开头连接,因此它们在此输出中显示为单个字母。这是一个需要处理的单独问题,可能与您无关。