回答

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

謝謝您的回答!我 – kim

+0

感謝您的回答!這是相當令人印象深刻的!正如你所說,它適用於純白色背景。如果背景和文字不是白色和黑色呢?例如,這種情況下,背景色爲綠色,文字爲白色。您的信息和代碼將受到高度讚賞。我碰巧遇到了一個你的代碼失敗的案例。我可以給你發電子郵件,你看看嗎?由於該圖像受版權保護,所以我沒有在這裏發佈。我能知道你的電子郵件嗎?非常感謝你! :) – kim

+0

無論如何處理其他背景顏色?謝謝! – kim