我正在为一种区域语言做字符识别。在提取图像时,点被单独标识为字符。
%% 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
发布于 2013-02-14 10:06:08
由于您正在进行字符/文本识别,因此您更可能需要单词或文本行的集合,而不是单个字符。如果你真的想做后者,那么在你识别了单个单词之后,它会更健壮。
因此,这里最简单的方法是使用标准的形态学开口符(假设文本是黑色的,否则使用闭合)。从一个大的水平结构元素(SE)开始。使用此SE应用一个开口会将您的图像分割为多行文本。在每一行中,您使用较短的水平SE来获取单个单词。然后,对于每个单词,您可以考虑一个垂直SE来打开,这样它就可以连接重音和其他排版细节。
例如,以下是一个输入图像,其洞口的水平SE半径为35,水平SE半径为7,洞口的垂直SE半径为7。




我没有在独立的组件中应用第三个操作,但您应该这样做,以避免连接两行文本的风险。当然,这都是假设文本的水平直线。在最终图像上绘制边界框可以得到您想要的result:

请注意,一些字母("ty“和"ny")在开头是连接的,因此它们在此输出中显示为单个字母。这是一个需要处理的单独问题,您可能会担心也可能不会。
https://stackoverflow.com/questions/14862456
复制相似问题