Ich habe ein RGB-Bild mit verschiedenen Zeichen. Mein Hauptziel ist es, die Zeichen zu zählen, die mit den Bildrändern in Kontakt stehen.
Ansatz und Problem
Ich begann mit dem Laden des Bildes [Abb. 1], konvertierte es dann in Graustufen und wandte einen Medianfilter an, um etwas Rauschen zu beseitigen [Abb. 2]. Dann habe ich es mit einem Schwellenwert von 0,2 binärisiert, was zu Abbildung 3 führte. Zu diesem Zeitpunkt habe ich mein binärisiertes Bild erhalten, aber das Problem ist, dass einige Teile, die zum selben Zeichen gehören, in verschiedenen Regionen statt nur in einem angezeigt werden. Jetzt ist es mein Ziel, die Regionen, die zu demselben Objekt gehören, zusammenzuführen, damit ich bwlabel
zählen kann, wie viele Zeichen sich im Bild befinden, und die Zeichen imclearborder
im Rand entfernen und bwlabel
erneut verwenden kann, um den Unterschied zwischen den Objekten zu ermitteln die Zwei.
Mein Ansatz war es bwmorph
, Dilate
die Objekte zu verwenden , zu erweitern und dann zu versuchen, sie mit imfill
, holes
. Das Problem ist jedoch, dass wenn ich sie in einer kleinen Menge dehne [Abb. 4], das imfill
scheint sie nicht zu füllen, wenn ich sie um einen großen Betrag erweitere [Abb. 5], beginnen alle Objekte zu verschmelzen :(
Code
img=im2double(imread('image.png')); figure, imshow(img)
img_gray=rgb2gray(img); imshow(img_gray);
img_mediana=medfilt2(img_gray, [3 3]); figure, imshow(img_mediana);
img_bin=im2bw(img_mediana, 0.2); imshow(img_bin)
img_dilate=bwmorph(img_bin, 'Dilate', 10); imshow(img_dilate)
img_fill=imfill(img_dilate, 'Holes'); figure, imshow(img_fill)
Zahlen
Abb. 1 :
Abb. 1 http://dl.dropbox.com/u/5272012/1.png
Abb. 2 :
Abb. 2 http://dl.dropbox.com/u/5272012/2.png
Abb. 3 :
Abb. 3 http://dl.dropbox.com/u/5272012/3.png
Abb. 4 :
Abb. 4 http://dl.dropbox.com/u/5272012/4.png
Abb. 5 :