2016-04-20 7 views
2

Ich arbeite an Text-Extraktionsformular Bild. Dazu benutze ich die Kantendetektionstechnik. Ich habe Kanten eines Bildes mit Text- oder Nicht-Textbereichen erkannt.
Jetzt möchte ich die Nicht-Text-Region aus dem Bild entfernen.
Bitte sagen Sie mir, wie kann ich das tun?Wie werden die Nicht-Text-Bereiche des folgenden Bildes eliminiert?

Der Code, den ich bisher habe, ist:

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

Was genau ist die gewünschte Ausgabe? Ist es ein Bild, bei dem ein Pixel, das nicht in ein rotes Quadrat fällt, weiß/schwarz/'NaN' ist? Oder möchten Sie vielleicht ein Zell-Array mit Bildern erhalten, bei dem jedes Bild ein anderes rot-quadratisches Gehäuse hat? Bitte erläutern Sie, was Sie mit "eliminieren" meinen. –

+0

Ich möchte zwischen Textbereichsboxen und Nicht-Textbereichsboxen unterscheiden. Und dann extrahiere Text aus roten Kästchen. –

Antwort

0

Sie könnten einen "Text" orientierte Methode in Betracht ziehen.
Haben Sie in Betracht gezogen, "Stroke-Width Transform" (SWT) zu verwenden? Dieser Transformationsfilter kappt nach der Möglichkeit, dass die Kanten Teil einer Berandung mit fester Breite sind, die normalerweise eine Eigenschaft von Text ist.

Verwandte Themen