如何将线条的投影转换为任何可用的分割信息?

问题描述 投票:0回答:1

我一直在阅读有关Matlab中自动文本行识别的信息,尽管每篇论文都提到了许多先进的方法,但最简单的检测文本行的方法是通过水平投影。因此,我决定自己尝试这种方法。

我对此很陌生,碰到了墙,我达到了一个水平,超出这一水平,我不知道该如何进行。这是我到目前为止所取得的成就:

我正在尝试一个独立于语言并且只对文本行感兴趣的系统,所以我选择了阿拉伯文本:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS83WENQZy5qcGcifQ==” alt =“在此处输入图像描述”>

我使用功能radon来获取投影。

img = rgb2gray(imread('arabic.jpg'));
[R, xp] = radon(bw_closed, [0 90]);
figure; plot(xp,R(:,2)); title('at angle 90');

这是情节(投影)

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9LTzk5Vy5qcGcifQ==” alt =“在此处输入图像描述”>

很明显,这5个峰代表检测到的5条线,但是如何从这里开始分割原始文档?

超出这一点,谁能帮助我?我读过的所有论文都没有提到如何进行此步骤,只是说从预测中我们可以检测到线条。

我想问的是如何从绘图数据中告诉matlab文本行是什么,行之间的间隙是什么?

image matlab image-processing plot image-segmentation
1个回答
5
投票
r = R(:,2);
r=r(92:391); % your image region
blank = r < 3; % region without text
[labeled, n] = bwlabel(blank);
C = regionprops(labeled, 'Centroid');  % find the centers of blank regions
for i=1:length(C)-1
    subplot(length(C)-1,1,i)
    imshow(img(C(i).Centroid(2):C(i+1).Centroid(2),:));        
end

结果:

“在此处输入图像说明”

© www.soinside.com 2019 - 2024. All rights reserved.