0

신문 또는 잡지 일 수있는 문서 이미지가 있습니다. 예를 들어, 스캔 한 신문. 모든/대부분의 텍스트를 제거하고 이미지를 문서에 보관하려고합니다. 누구든지 문서에서 텍스트 영역을 감지하는 방법을 알고 있습니까? 아래는 그 예입니다. 미리 감사드립니다!문서 이미지에서 텍스트 영역을 감지하는 방법은 무엇입니까?

예 이미지 : https://www.mathworks.com/matlabcentral/answers/uploaded_files/21044/6ce011abjw1elr8moiof7j20jg0w9jyt.jpg

답변

2

물체 인식의 일반적인 패턴은 여기에 작동합니다 - 임계 값은, 다음 나머지 지역과 함께 무엇을해야, 지역, 필터 영역을 감지합니다.

여기에서는 임계 값 지정이 쉽습니다. 배경은 순수한 흰색 (또는 순수한 흰색으로 필터링 될 수 있음)이므로 반전 된 회색 음영 이미지에서 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

+0

감사합니다! I – kim

+0

답변 해 주셔서 감사합니다! 그것은 아주 인상적이다 !!!! 당신이 말했듯이, 그것은 순수한 흰색 배경에 대해 작동합니다. 배경과 텍스트가 흰색과 검은 색이 아닌 경우 어떻게해야합니까? 예를 들어이 경우 (http://www.rmeassets.com/images/rmemedia/1-2_Newspaper-Ads-color_1.jpg) 배경색은 녹색이고 텍스트는 흰색입니다. 귀하의 정보와 코드는 높이 평가 될 것입니다. 나는 당신의 코드가 실패한 한 가지 경우를 가지게되었다. 이메일을 보내 주셔도됩니다. 이미지는 저작권으로 보호되어 있으므로 여기에 게시하지 않았습니다. 이메일을 알 수 있습니까? 고마워요! :) – kim

+0

어쨌든 다른 배경색을 다루는가? 감사합니다! – kim

관련 문제