2016-04-20 12 views
2

我正在處理文本提取表單圖像。爲此我使用邊緣檢測技術。我用文本或非文本區域檢測圖像的邊緣。
現在我想消除圖像中的非文本區域。
請告訴我我該怎麼做?如何消除以下圖像的非文字區域?

我到目前爲止的代碼是:

i = imread('t1.jpg'); 
i1 = rgb2gray(i); 
imshow(i1); 

i2 = edge(i1,'canny',0.3); 
imshow(i2); 

se = strel('square',2); 
i3 = imdilate(i2,se); 
imshow(i3); 

i4 = imfill(i3,'holes'); 
imshow(i4); 

[Ilabel num] = bwlabel(i4); 
disp(num); 
Iprops = regionprops(Ilabel); 
Ibox = [Iprops.BoundingBox]; 
Ibox = reshape(Ibox,4,[]); 
imshow(i); 

hold on; 
for cnt = 1:size(Ibox,2) 
    rectangle('position',Ibox(:,cnt),'edgecolor','r'); 
end 

enter image description here

+0

準確的輸出是什麼?這是一個圖像,其中不在紅色方塊內的任何像素是白色/黑色/「NaN」?或者,您可能想要獲得一組圖像,其中每個圖像都是不同的紅色方框?請解釋你的意思是「消除」。 –

+0

我想區分文本區域框和非文本區域框。而不是從紅色框中提取文本。 –

回答

0

你可以考慮使用更多的 「文本」 爲導向的方法。
您是否考慮過使用"Stroke-Width Transform" (SWT)? 該變換濾波器邊緣根據邊緣是固定寬度脊部分的可能性,該部分通常是文本的特徵。

相關問題