【问题标题】:Slicing the image into text line using the rectangle boundary box使用矩形边界框将图像切成文本行
【发布时间】:2020-08-24 14:06:59
【问题描述】:
我有一页文本的扫描图像,我想分割其中的行。
例如,使用简单的方法,如:
矩形的大小应该是一个我可以手动更改的变量。
我不想使用投影轮廓方法,因为可能会出现重叠线。
这里我只是想用这种矩形的方式来尝试一下这种方法。
我正在寻找一种自动化流程的方法(而不是手动裁剪)
有人可以建议 Matlab / Python 中的实现和相关材料吗?
我的输入是一张 jpg 图像,输出是多张图像(基于行数),目的是将每条分割线的 ROI 保存为 line_1.jpg、lie_2.jpg 等。
【问题讨论】:
标签:
python
matlab
image-processing
computer-vision
ocr
【解决方案1】:
这是一种基于集合Line_Height 将图像切成多个矩形的原始方法。不幸的是,这种方法依赖于每条线的高度相等并且图像不会受到大量视差的影响。在执行下面的代码之前,也可以应用文本检测和其他技术来评估每行的高度。
Line_Height = 100;
Image = imread('Tiger_Drawing.jpg');
figure(1)
imshow(Image);
[Image_Height,Image_Width] = size(Image);
Number_Of_Lines = floor(Image_Height/Line_Height);
for Line_Index = 1: +1: Number_Of_Lines
Bottom_Boundary = (Line_Index-1)*Line_Height+1;
Upper_Boundary = (Line_Index)*Line_Height+1;
if Upper_Boundary > Image_Height
Upper_Boundary = Image_Height;
end
fprintf("(%d -> %d)\n",Bottom_Boundary,Upper_Boundary);
Image_Segment = Image(Bottom_Boundary:Upper_Boundary,:,:);
Image_Segment_File_Name = "line_" + num2str(Line_Index) + ".jpg";
imwrite(Image_Segment,Image_Segment_File_Name);
figure(2)
subplot(Number_Of_Lines,1,Line_Index); imshow(Image_Segment);
if (Line_Index == 1)
title('Sliced Image');
end
end