Header image  

 

MATLAB

 
  HOME::
   
 
Labeling mit MATLAB
  1. Vorverarbeitung

Wir laden ein Graustufenbild und dann erzeugen ein Binärbild aus diesem Bild. Zunächst haben wir das Bild mit einem Glättungsfilter (hier Medianfilter)geglättet, um das Rauschen zu entfernen.

Glättungsfilter sind Tiefpassfilter, die zur Unterdr¨¹ckung von Rauschen oder feinen Details genutzt werden können. Als Beispiel f¨¹r ein lineares Filter seien der Rechteck- oder Mittelwertfilter sowie der Gauß- oder Binomialfilter genannt.

Neben den linearen Filtern gibt es auch die nichtlinearen Filter. Dazu zählen die Rangordnungsoperatoren. Als Beispiel f¨¹r diese Gruppe sei der Medianfilter genannt.
Das Medianfilter ist ein nichtlineares Glättungsfilter. Die Rangordnungsfilter selektieren Pixel und f¨¹hren keine arithmetischen Operationen aus. Deshalb können keine Rundungsfehler entstehen. Sie bilden eine diskrete Menge von Grauwerten auf sich selbst ab.
Die Grauwerte innerhalb einer Maske werden nach ihrer Größe sortiert und der mittlere Wert wird selektiert. Aufgrund der völligen Änderung des Grauwertes durch das Salz und-Pfeffer-Rauschen ist es sehr unwahrscheinlich, dass dieser Grauwert gleich dem mittleren Grauwert in der Umgebung entspricht. Der gestörte Bildpunkt wird mit dem mittleren Grauwert wiederhergestellt.

Weitere Rangordnungsoperatoren sind der Minimumoperator sowie der Maximumoperator. Sie funktionieren nach dem gleichen Prinzip wie der Medianoperator, jedoch selektieren sie den minimalen bzw. maximalen Grauwert der Maske.

2. Segementieren das Bild und morphologische Herausarbeitung des Bildes

Segmentierung ist im Prozess des maschinellen Sehens ¨¹blicherweise der erste Schritt der Bildanalyse und kommt nach der Bildvorverarbeitung. Segmentierung ist die Extraktion von Objektmerkmalen, die eine Unterscheidung von Objekt und Hintergrund erlaubt.
Um ein Bild zu Segmentieren bietet es sich an, das Bild in verschiedene Regionen mit bestimmten einheitlichen Bedingungen zu unterteilen (z.B. schwache Grauwertschwankungen, homogene Texturen etc.), indem Pixel zu zusammenhängenden Pixelmengen (Regionen) zusammengeschlossen werden können. Die Grenzen dieser Regionen können theoretisch Bildobjekte markieren.

Man kann folgende Segmentierungsalgorithmen methodisch unterscheiden:
• Pixelbasierte Segmentierung ¨C es werden Kriterien zur Segmentzuordnung nur auf das Pixel angewandt, unabhängig von anderen Pixeln.
• Kantenbasierte Segmentierung ¨C es werden Kanten oder Konturen gesucht, die zu Objektgrenzen zusammengefasst werden.
• Regionenbasierte Segmentierung ¨C zusammenhängende Punktmengen werden als Gesamtheit betrachtet.
• Modellbasierte Segmentierung ¨C hier wird konkreteres Wissen ¨¹ber die Bilder (ein Modell) zugrunde gelegt.
• Texturbasierte Segmentierung ¨C es wird nach einer Textur (homogene, innere Struktur) anstatt nach einer einheitlichen Farbe segmentiert.
Wir werden uns mit dem Kantenbasierten Verfahren beschäftigen.
Man geht davon aus, dass ein abrupter Helligkeitswechsel zwischen 2 benachbarten Bildpunkten eine potentielle Kante darstellt. Daher besitzt die erste Ableitung an der Kante ein Maximum oder Minimum.
Die zweite Ableitung stellt eine Ableitung der ersten Ableitung dar und besitzt einen Nulldurchgang bei der Kante.
Während die erste Ableitung die Steigung der Funktion an einem bestimmten Punkt ermittelt, so ermittelt die zweite Ableitung die Änderung der Steigung. Dies wird auch als Kr¨¹mmungsverhalten bezeichnet. Zur Kantenbestimmung können beide Kriterien verwendet werden.
Einige dieser Verfahren sind :
Marr-Hildreth (= LoG), Roberts, Sobel, Prewitt, Canny

Viele Algorihmen liefern jedoch keine kontinuierlichen (geschlossenen) Kantenz¨¹ge, weswegen diese erst mit weiteren Verfahren zusammengef¨¹gt werden m¨¹ssen, damit sie Objekte einschließen.
Wir wenden zunächst die morphologische Operation dilate mit einer relativ kleinen Nachbarschaft an, um kleine Löcher innerhalb der Strukturen zu schließen. ( ein quadratförmige Strukturelement mit Größe )

Morphologie wird in der Bildverarbeitung eingesetzt, um die Form von binären Bildmasken zu verändern, um die Merkmale von Formen zu berechnen oder um nach bestimmten Formen im Bild zu suchen. Die binären Bildmasken können z.B. das Ergebnis eines Segmentierungsschrittes Sein. Während einer morphologischen Operation wird ein sog.Strukturelement pixelweise ¨¹ber das Binärbild geschoben,
und eine Bool¡¯sche Operation zwischen dem Binärbild und dem Strukturelement durchgef¨¹hrt. Die morphologischen Basisoperationen sind die Dilatation und die Erosion.
Bei der Dilatation wird eine Pixelposition im Binärbild gesetzt, falls das Strukturelement an der entsprechenden Position mindestens einen gesetzten Pixel im Binärbild ¨¹berdeckt. Dadurch wächst die Maske im Binärbild an.
Bei der Erosion werden alle Pixelpositionen eines Binärbildes gelöscht, an denen das Strukturelement nicht komplett von der gesetzten Maske ¨¹berdeckt wird. Dadurch schrumpft die Maske im Binärbild.

3. Labeling mit Matlab

F¨¹llen wir alle Löcher mit dem Matlab-Befehl imfill , damit die ganzen Schriftzeichen erkannt werden und nicht nur der Rand. Als Basis zur Zählung der Objekte kann z.B. die Funktion bwlabel verwendet werden, die jeder zusammenhängenden Komponente in einem Binärbild eine eindeutige Zahl zuordnet und ein sog. Label-Bild erstellt. Dabei wird nach zusammenhängenden Objekten innerhalb eines Bildes gesucht und jedem separat stehenden Objekt eine Identifizierung ( label ) vergeben. Weisen Wir dann mit dem Befehl label2rgb den verschiedenen Labels Pseudofarben zu.

4. Merkmale von Objekten. ( Analyse zusammenhängender Bereiche )

Zur automatischen Erkennung von Bildern sind Verfahren notwendig, welche die Merkmal von objekten extrahieren können. Diese Merkmale dienen zur charakteristischen Beschreibung von Objekten und der wesentlichen Unterst¨¹tzung bei der Objekterkennung. Vorraussetzung ist ein segmentiertes Bild, wo f¨¹r einzelne Segmente die Merkmale berechnet werden können. Mit Hilfe der gewonnenen Merkmale will man die segmente bestimmten Objekten zuordnen können. Wir lassen sich die Objekteigenschaften ¨¹ber den Befehl regionprops ermitteln, und erzeugt eine Struktur, f¨¹r jedes Objekt im Label-Bild, in der die gew¨¹nschten Merkmale gespeichert werden.
Mögliche Merkmale:
Area — Fläche
Centroid —Schwerpunkt
BoundingBox —Umgebendes Rechteck
Orientation — Ausrichtung
Image — die Region selbst
ConvexHull — das kleinste konvexe Polygon, das die Umgebung umschließt
ConvexArea — Fläche in der konvexen H¨¹lle ( ConvexHull )
EulerNumber — Anzahl der Löcher in einer Region
Extrema — Extrempunkte ( oben-links, oben-rechts, rechts-oben, links-oben, unten-links,unten-rechts, rechts-unten,links-unten )

MajorAxisLength und MinorAxisLength — Um das Objekt wird die kleinstmögliche Ellipse gelegt. Die Merkmale MinorAxisLength und MajorAxisLength geben dann die Länge der kleinen und der großen Ellipsenachse an.
EquivDiameter — Durchmesser des Kreises mit der selben Fläche wie die Region
Solidity — Verhältnis konvexe Fläche zu Fläche

Auf die Objekte der Strukturvariable kann folgendermaßen zugegriffen werden:
Bsp.: Area = [chrdata.Area]; chrdata ist eine Struktur
Um einen geeigneten Schwellenwert f¨¹r obiges Beispiel zu finden, soll ein Histogramm des Bildes angezeigt werden, wie man es auch aus Photoshop kennt. Das Histogram zeigt an wie oft der jeweilige Wert des Areals im Label-Bild vorkommt.
Das Histogramm sehen wir, wenn wir nun schreiben:
figure,hist(Area,20);
Mit dem 2. Argument geben wir die Anzahl der bins (engl. f¨¹r Behälter) an,
d.h. dass sich die Werte auf 20 Balken im Histogramm verteilen sollen. Auf dem Ergebnis auf Abb. ist zu erkennen das sich viele Werte um
den Bereich 0-5000 sammeln.
Um Rauschen von Bildfeature zu trennen, speichern wir zunächst das
Ergebnis folgenden Ausdrucks in einer Variable idx
idx = find(Area <5000)
Und dann entfernen die Werte des Areals, welche >=5000 sind.
BWa = ismember(labeled,idx);
Es folgt analog, wenn wir andere Eigenschaften betimmen wollen.