gpt4 book ai didi

image-processing - 如何从文档图像中检测文本区域?

转载 作者:行者123 更新时间:2023-11-30 09:01:49 24 4
gpt4 key购买 nike

我有一个文档图像,可能是报纸或杂志。例如,扫描的报纸。我想删除所有/大部分文本并保留文档中的图像。有人知道如何检测文档中的文本区域吗?下面是一个例子。提前致谢!

示例图像:https://www.mathworks.com/matlabcentral/answers/uploaded_files/21044/6ce011abjw1elr8moiof7j20jg0w9jyt.jpg

最佳答案

通常的对象识别模式将在这里工作 - 阈值、检测区域、过滤区域,然后对剩余区域执行您需要的操作。

这里阈值设置很容易。背景是纯白色(或者可以过滤为纯白色),因此反转灰度图像中高于 0 的任何内容都是文本或图像。然后可以在这个阈值二值图像中检测区域。

为了过滤区域,我们只需识别文本与图片的不同之处。文本区域将会很小,因为每个字母都有自己的区域。相比之下,图片是大区域。使用适当的阈值按区域进行过滤将拉出所有图片并删除所有文本,假设所有图片都没有页面上任何位置的单个字母大小。如果是,则可以使用其他过滤标准(饱和度、色调方差……)。

根据面积和饱和度标准对区域进行过滤后,可以通过将原始图像中落入过滤区域的边界框内的像素插入到新图像中来创建新图像。

MATLAB 实现:

%%%%%%%%%%%%
% Set these values depending on your input image

img = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/21044/6ce011abjw1elr8moiof7j20jg0w9jyt.jpg');

MinArea = 2000; % Minimum area to consider, in pixels
%%%%%%%%%
% End User inputs

gsImg = 255 - rgb2gray(img); % convert to grayscale (and invert 'cause that's how I think)
threshImg = gsImg > graythresh(gsImg)*max(gsImg(:)); % Threshold automatically

% Detect regions, using the saturation in place of 'intensity'
regs = regionprops(threshImg, 'BoundingBox', 'Area');

% Process regions to conform to area and saturation thresholds
regKeep = false(length(regs), 1);
for k = 1:length(regs)

regKeep(k) = (regs(k).Area > MinArea);

end

regs(~regKeep) = []; % Delete those regions that don't pass qualifications for image

% Make a new blank image to hold the passed regions
newImg = 255*ones(size(img), 'uint8');

for k = 1:length(regs)

boxHere = regs(k).BoundingBox; % Pull out bounding box for current region
boxHere([1 2]) = floor(boxHere([1 2])); % Round starting points down to next integer
boxHere([3 4]) = ceil(boxHere([3 4])); % Round ranges up to next integer
% Insert pixels within bounding box from original image into the new
% image
newImg(boxHere(2):(boxHere(2)+boxHere(4)), ...
boxHere(1):(boxHere(1)+boxHere(3)), :) = img(boxHere(2):(boxHere(2)+boxHere(4)), ...
boxHere(1):(boxHere(1)+boxHere(3)), :);

end

% Display
figure()
image(newImg);

正如您在下面链接的图片中看到的,它满足了需要。除图片和报头外的所有内容均被删除。好处是,如果您在远离头版的报纸上工作,这对于彩色和灰度图像来说效果很好。

结果:

http://imgur.com/vEmpavY,dd172fr#1

关于image-processing - 如何从文档图像中检测文本区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26955513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com