Morphologische BV Morphological Image Processing M. Thaler, TG208 tham@zhaw.ch Juni 7
Um was geht es? threshold Binärbild region fill egdes Juni 7 2 2
... um was geht es? Morphologie in der Biologie Beschäftigung mit Formen & Strukturen von Pflanzen und Tieren Juni 7 3 3
... um was geht es? Morphologie in der Bildverarbeitung mathematische Morphologie (basiert auf Mengenlehre) - Bild Attribute - meist binäre Bilder extrahieren von Bildkomponenten - Beschreibung und Darstellung von Bildkomponenten Bildvorverarbeitung - morphologische Filter eliminieren von kleinen Komponenten - verdünnen und verdicken von Linien und Kanten - pruning eliminieren von parasitären Komponenten etc. Juni 7 4 4
Inhalt Lehrziele Mathematische Grundlagen Dilatation und Erosion Opening und Closing Hit-or-Miss Transformation Boundary Extraction Region Filling Connected Componentes Juni 7 5 5
Lehrziele Sie kennen die Grundlagen der morphologischen Bildverarbeitung und die Anwendungsgebiete können die wichtigsten morphologischen Algorithmen erklären und diskutieren können die wichtigsten morphologischen Algorithmen effizient implementieren Juni 7 6 6
Mathematische Grundlagen Ausgangspunkt binäre Bilder: Hintergrund schwarz, Objekte weiss Mengenoperationen Bildern & Bildkomponenten A und B sind Komponenten resp. Regionen im Bild A B A B A B A c A B A Aˆ z leere Menge Aist in Benthalten Durchschnitt von Aund B: and Vereinigung von Aund B: or Komplement von A: not A B c : A, B Aum zpixelverschoben: a A: a + z, a + z A gespiegelt (punktsymetrisch) x x y y Juni 7 7 7
Dilatation Ausdehnen resp. verdicken von Objekten kontrolliert mit Strukturelement B (~ binäre Faltung) - definierter Ursprung A B = { z B z A } Menge aller Orte zvon verschobenen Strukturelementen B z, die mindestens um Pixel mit Aüberlappen A A B 0 0 0 0 0 0 0 0 0 0 0 0 B = B Ursprung 0 0 0 0 0 0 Juni 7 8 8
Erosion Verkleinern resp. verdünnen von Objekten gesteuert mit Strukturelement B (morphologische Faltung) - definierter Ursprung - dual zu Dilatation A B = { z (B) z A} Menge aller Positionen von verschobenen Strukturelementen, die vollständig in A enthalten sind A A B 0 0 0 0 0 0 0 0 0 0 0 0 B 0 0 0 0 Juni 7 9 9
... Erosion und Dilatation Elimination von irrelevanten Details A B A B (A B) B Juni 7 0 Quadrate < "7x7" -> verschwinden Quadrate >= "7x7" -> bleiben 0
... Erosion und Dilatation Objektformen und - grössen meist nicht bekannt Ansatz: - kleines Strukturelement, z.b. 3x3 - dann n-erosionen n-dilatationen 3-mal Juni 7 Problemstellung -wenn Strukturelement gleich gross wie Objekt (hier Rechteck resp. Quadrat) und ein Rauschpixel, dann wird das Objekt eliminiert Lösung - Wahl eines kleineren Strukturelements - anschliessend mehrmals erodieren - dann mehrmals dilatieren
Erosion/Dilatation: Diskussion Obige Beispiele Bereiche, die nicht vollständig von B überdeckt werden, bzw. kleiner als B sind, verschwinden Idee lässt verallgemeinern Opening (Öffnen): Erosion(en) dann Dilatation(en) Closing (Schliessen): Dilatation(en) dann Erosion(en) Beispiel B original opening closing Juni 7 2 Anmerkung - B ist grösser als die jeweils verschwundenen "Striche" bzwr Zwischeräume 2
Opening Eigenschaften A B = (A B) B entfernt Bereiche (Regionen) kleiner als B glättet Konturen bricht dünne Verbindungen auf entfernt dünne herausstehende Teile Idee: Strukturelement "rollt" innerhalb von A Juni 7 3 3
Closing Eigenschaften A B = (A B) B schliesst schmale Unterbrüche füllt Löcher kleiner als B füllt lange dünne "Golfs" Idee: Strukturelement "rollt" aussen von A ab Juni 7 4 4
... opening and closing opening closing Juni 7 5 5
Hit-or-Miss Transformation Finden von Pixelmustern resp. Konfigurationen Eigenschaften A B = (A B ) (A c B 2 ) B muss im Vordergrund enthalten sein und B 2 muss im Hintergrund enthalten sein 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B B 2 Juni 7 6 im Quadrat unten rechts sind die Zahlen auf weiss gesetzt Hit or Miss -B = Objekt, B 2 = Objekthintergrund -A wird mit B erodiert (linker Term) Bild wird mit Objekt erodiert -A c wird mit B 2 erodiert (rechter Term) Hintergrund wird mit Objekt-Hintergrund erodiert 6
... Hit-or-Miss Transformation Oft wird nur der "Hit"-Anteil verwendet entspricht "morphologischer Korrelation" A B = (A B) reduziert sich auf eine reine Erosion Juni 7 7 7
Berechnung morph. Operationen Berechnung mit Lookup- Tabellen jedem Pixel einer n x n Umgebung eine 2er-Potenz zuordnen für jedes Pixel wo gilt A B 0, wird Gewicht aufaddiert Gewichte 256 28 64 32 6 8 4 2 b 8 b 7 b 6 b 5 b 4 b 3 b 2 b b 0 0 0 0 0 Summe wird als Index in Tabelle verwendet Tabelle enthält Output-Pixelwert, z.b. tab[86] =, tab[...] = 0 Tabelle kann im voraus berechnet werden B A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28+32+6+8+2 = 86 32+6+2 = 50 Juni 7 8 Gewichte - jeder Eintrag bildet ein Bit der Adresse für die Lookup-Tabelle Berechnung bei symmetrischem Strukturelement index = 0; for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) { tmp = pix[r--i][c--j] & strl[i][j]; index = (index << ) tmp; } } respix[r-][l-] = table[index]; 8
Boundary Extraction Berechnung der "boundary" (Regionengrenze) β(a) = A - (A B) = A (A B) c A B A B β(a) Juni 7 9 Folgende Maske (4-neighbourhood) kann auch verwendet werden 0 0 0 0 Was ändert sich nun? -die boundary wird dünner - Maske "hölt" besser aus - boundary enthält auch nur diagonale Verbindungen 9
Hausaufgabe: boundary extraction Gesucht:boundarywenn Strukturelement kreuzförmig... was ist der Unterschied? A B A B β(a) Juni 7 20 Folgende Maske (4-neighbourhood) kann auch verwendet werden 0 0 0 0 Was ändert sich nun? -die boundary wird dünner - Maske "hölt" besser aus - boundary enthält auch nur diagonale Verbindungen 20
Region Filling Füllen einer Region Algorithmus (boundary der Region ist 8-connected) X k = (X k- B) A c k =, 2, 3... und X 0 = p Ziel-Bild - X 0 = p: Startpunkt innerhalb der boundary - stoppt wenn X k = X k-, d.h. kein neuer Punkt kommt dazu p A A c B X 0 X Ziel-Bild Juni 7 2 Implementation Algorithmus -pro Durchgang können selbstverständlich mehrere Pixel "expandiert" werden -d.h. dauernd X k mit B dilatieren und zufügen falls in A c 2
Connected Components Gesucht: zusammenhängende Komponenten wichtig für automatisierte Bildanalyse Algorithmus X k = (X k- B) A k =, 2, 3... und X 0 = p - X 0 = p: Startpunkt innerhalb oder auf Boundary - stopt wenn X k = X k-, d.h. kein neuer Punkt kommt dazu Strukturelemente B 4 B 8 Komponenten sind 4-adjacient Komponenten sind 8-adjacient Juni 7 22 X0 = p X0 mit B 22
Labeling of connected components Beschriftung zusammenhängender Komponenten 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B 4 B 8 0 0 0 2 2 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 Juni 7 23 23
Thinning and Thickening Ausdünnen Objekt wird auf eine -Pixel breite Linien reduziert Thinning A B = A (A B i ) c (nur Hit-Teil) Iterationen mit Set von Masken, Ende wenn keine Änderungen B B 2 B 3 B 4 B 5 B 6 B 7 B 8 Verdicken an Objektrand n Pixel anfügen Binär-Bild invertieren Ausdünnen Bild invertieren Juni 7 24 Masken sind rotierte Versionen der Grundmasken -wenn Maske erkannt löschen es gibt auch nicht morphologische Ansätze 24
Skelette Thinning und Skeletons Skeleton - Menge aller Punkte mit gleichem Abstand zu Rand des Objekts wichtige Struktur- resp. Form-Information wird beibehalten ausgedünnt Skeleton Juni 7 25 25
Weitere morph. Transformationen Pruning parasitäre Komponenten von Skeletten entfernen Convex Hull kleinste konvexe Hülle, die ein Objekt enthält Siehe Literatur Juni 7 26 Pruning - einfache Möglichkeit ( Gonazales, Wood). suchen eines Endpunktes des Skelets Endpunkt: genau ein Nachbar (in einer 3x3 Umgebung) 2. entfernen des Endpunktes Schritt. und 2. N-mal wiederholen N-Lange Äste werden entfernt (!! auch Nutz-Äste) 3. optional: alle Endpunkte N mal verlängern in Richtung des zweitletzten Pixels 26
... weitere morph. Transformationen Originalbild Skeleton Skeleton nach Pruning Juni 7 27 27