Morphologie

Morphologie beschäftigt sich mit der Form/Gestalt von Objekten. Ursprünglich beschäftigt sich die Morphologie nur mit Binärbildern, man kann die meisten morphologischen Operationen aber auf Grauwertbilder erweitern.

Dilation und Erosion

Bei diesen Operationen betrachtet man eine Pixelmenge und definiert Mengenoperationen. Die betrachteten Mengen sind jeweils die um eine Gitterkoordinate angeordneten Pixel. Welche Pixel ausgenwählt werden bestimmt das Strukturelement. Hier einige Beispiele für eine 12 × 12 Umgebung:

Morpology_1.gif

Für Binärbilder kann man die Werte der Pixel in der mit dem Strukturelemt ausgewählten Menge Morpology_2.gif als True/False interpretieren und die lgosche Operatoren Und ∧ und Oder ∨ anwenden.

Die Dilation erhält man mit Morpology_3.gif

Die Erosion erhält man mit Morpology_4.gif

Hier ein Beispiel für das Original Binärbild, die Dilation und die Erosion mit einer 3×3 Matrix aus 1 als Strukturelement

Morpology_5.gif

Als Strukturelement wird meist eine 2n+1× 2n+1 Umgebung benutzt, hier ein Beispiel für die Strukturelemente, Box im Rot-Kannal, Raute im  Grün-Kannal und Raute im Blau-Kannal

Morpology_6.gif

Morpology_7.gif

Opening und Closing

Diese beiden Basis operationen kann man kombinieren zur:

Opening  O[P]=D[E(P)]

Closing  C[P]=E[D(P)]

Morpology_8.gif

Oening und Closing mit verschiedenen Strukturelementen, Box im Rot-Kannal, Raute im  Grün-Kannal und Raute im Blau-Kannal

Morpology_9.gif

Morpology_10.gif

Beide Operationen sind idempotent, also E(E(P))=E(p) und D(D(P)=D(P)

Morpology_11.gif

Morpology_12.gif

Morpology_13.gif

Morpology_14.gif

Grauwertmorphologie

Man kann diese Operationen auf Grauwertbilder erweitern in dem man

Die Dilation mit Morpology_15.gif definiert.

Und die  Erosion mit Morpology_16.gif

Hier ein Beispiel (Original, Dilation, Erosion)

Morpology_17.gif

Analog erhält man für Opening und Closing (Original, Opening, Closing)

Morpology_18.gif

Morphologischen Filter

TopHat/BottomHat Filter

Der Tophat Filter wird aus der Differenz von Bild minus Opening des Bildes gebildet

Morpology_19.gif

Morpology_20.gif

Der Bottomhat Filter wird aus der Differenz von Bild minus Closing des Bildes gebildet

Morpology_21.gif

Morpology_22.gif

Morphologischer Gradient

Der morphologische Gradient ist die Differenz zwischen Dilation und Erosion

Morpology_23.gif

Morpology_24.gif

Morphologischer Rand

Der morphologischer Rand ist die Differenz zwischen Bild und Erosion

Morpology_25.gif

Morpology_26.gif

Verbundene Komponenten

Pixel Nachbarschaft

Morpology_27.gif

Für Vordergrund und Hintergrund werden unterschiedliche Nachbarschaften gewählt. Also Vorergund Morpology_28.gif und Hintergrund Morpology_29.gif oder umgekehrt.

Anwendung verbundener Komponenten

Das Suchen verbundener Komponenten wird extrem häufig verwendet. Mögliche Anwendungen sind

Zählen der Objekte

Filtern nach der Grösse/Eigenschaften der Objekte

Morpology_30.gif

Morpology_31.gif

Algorithmen für das Suche nach verbundenen Komponenten

Scanline Algorithmus

Der Algorithmus braucht zwei Durchläufe.

Morpology_32.gif

Im ersten Durchlauf wird für ein Fordergrund pixel Morpology_33.gif ein vorhandenes Label aus dem bereits bearbeiteten Bild gewählt, sind alle Pixel Morpology_34.gif Hintegrund Pixel wird ein neues Label vergeben, gibt es mehr als ein Label in Morpology_35.gif  so wird eine Äquivalenz zwischen diesen Labeln gespeichert.

Morpology_36.gif

Der erste Duchlauf erzeugt 4 Label und die Information, dass Label 2 und 3 und Label 3 und 4 äquivalent sind. Dann müssen diese Äquivalenzen aufgelöst werden, besonders muss auch aufgelöst werden, dass auch Label 2 und 4 äquivalent sind.

Im zweiten Durchlauf müssen dan die äquivalenten Label ersetzt werden.

Füllalgorithmus

Beim Füllalgorithmus wird das Bild solange abgesucht, bis ein Vordergrundpixel gefunden ist, diese wird mit einem neuen Label versehen und alle Vordergrundpixel in der Umgebung auf eine Stack geschoben. Das wird solange wiederholt bis der Stack leer ist.

Skelettierung/Thinning

Schrifterkenneung

topologische Beschreibung von Objekten (nur mit Rauschunterdrückung)

Morpology_37.gif

Morpology_38.gif

Now lets look like the skeleton (it should be a point) change with the shape noise.

In[39]:=

Morpology_39.gif

Out[39]=

Morpology_40.gif

Initialization

In[20]:=

Morpology_41.gif

In[21]:=

Morpology_42.gif

Out[21]=

Morpology_43.gif

In[22]:=

Morpology_44.gif

Out[22]=

Morpology_45.gif

In[23]:=

Morpology_46.gif

Out[23]=

Morpology_47.gif

In[24]:=

Morpology_48.gif

Out[24]=

Morpology_49.gif

In[25]:=

Morpology_50.gif

Out[25]=

Morpology_51.gif

In[26]:=

Morpology_52.gif

Out[26]=

Morpology_53.gif

In[27]:=

Morpology_54.gif

Out[27]=

Morpology_55.gif

In[28]:=

Morpology_56.gif

Out[28]=

Morpology_57.gif

In[29]:=

Morpology_58.gif

Out[29]=

Morpology_59.gif

In[30]:=

Morpology_60.gif

Out[30]=

Morpology_61.gif

In[31]:=

Morpology_62.gif

Out[31]=

Morpology_63.gif

In[32]:=

Morpology_64.gif

Out[32]=

Morpology_65.gif

In[33]:=

Morpology_66.gif

Out[33]=

Morpology_67.gif

In[34]:=

Morpology_68.gif

In[36]:=

Morpology_69.gif

Out[36]=

Morpology_70.gif

In[37]:=

Morpology_71.gif

Out[37]=

Morpology_72.gif

In[38]:=

Morpology_73.gif

Morpology_74.gif

Spikey Created with Wolfram Mathematica 7.0