| Operatoren |
pouring — Segmentieren nach dem „Gießkannen“-Prinzip.
pouring sieht die Werte des Eingabebildes als topologisches (Grauwert-)Gebirge an, das von oben betrachtet wird. Dabei werden große (= helle) Grauwerte als höher gelegene Punkte interpretiert, wogegen kleine (= dunkle) Grauwerte entsprechend die „Täler“ bilden. pouring segmentiert die Eingabebilder in mehreren Teilschritten. Zuerst werden die relativ höchsten Grauwerte --- im Folgenden als „lokale Maxima“ bezeichnet --- ermittelt, d.h. die Pixel, die entweder allein oder in Form eines zusammenhängenden Plateaus größere Grauwerte besitzen, als die unmittelbaren Nachbarn. Die Bestimmung der lokalen Maxima basiert dabei auf Vergleichen in der 4-er Nachbarschaft. Im nächsten Teilschritt bilden die so gefundenen lokalen Maxima den Ausgangspunkt für die Bereichszuordnung, bei der sich die Segmente von den Maxima ausgehend bis in die „Talsohlen“ ausdehnen, d.h. solange absteigende Grauwertketten existieren (wie Wasser, das aus einer Gießkanne über die Kuppen gegossen wurde und nun in alle Richtungen nach unten abläuft). Auch hier wird die 4-er Nachbarschaft zugrunde gelegt, jedoch mit abgeschwächter Bedingung (kleiner gleich). Dabei kann es zur Überschneidungen in den „Talsohlen“ kommen, wenn die Bedingung für mehr als ein Segment erfüllt ist. Diese Schnittmengen werden vorerst keinem Segment zugeordnet, sondern im letzten Teilschritt unter den konkurrierenden Segmenten aufgeteilt. Die Aufteilung erfolgt durch pixelweises gleichmäßiges Ausdehnen aller beteiligten Segmente, bis alle Pixel eindeutig zugeordnet wurden. Mit Hilfe des Parameters Mode kann der Programmablauf gesteuert werden. In Abhängigkeit von diesem Eingabeparameter läuft entweder der gesamte Algorithmus ab, oder wird nach Vollendung von Teilschritten --- z.B. dem Auffinden aller lokalen Maxima oder der isolierten Segmente ohne Aufteilung der Schnittmengen --- beendet. Die möglichen Werte für Mode werden nachfolgend erläutert.
Diese Parameterbelegung stellt den normalen Modus dar. Es wird die komplette Segmentationsroutine gestartet, bei der alle lokalen Maxima mit den zuzuordnenden Bereichen ermittelt werden. Überschneidungsbereiche werden aufgeteilt.
Die Segmentationsroutine terminiert, sobald die lokalen Maxima der Eingabebilder ermittelt worden sind. Eine Segmentation in zugehörige Bereiche wird dann nicht mehr durchgeführt. Die Ausgabe besteht aus den verschiedenen Maxima.
Bei dieser Parameterbelegung führt die Segmentationsroutine die Suche nach allen lokalen Maxima sowie den zugehörigen Bereichen, die eindeutig zugeordnet werden können, durch. Die Teilbereiche, in den Überschneidungen auftreten, d.h. die mehr als einem Maximum zugeordnet werden können, werden nicht weiter bearbeitet, also nicht aufgeteilt. Die Ausgabe besteht aus allen ermittelten isolierten Segmenten.
Um bei Ablauf der vollständigen Segmentation die Aufteilung eines gleichmäßigen, vom restlichen Eingabebild verschiedenen Hintergrundes zu vermeiden, bieten die Parameter MinGray und MaxGray die Möglichkeit, Grauwertschwellen vorzugeben, so dass der Hintergrund ausmaskiert wird. Ein gewünschter unterer Grauwert wird in MinGray angegeben. Alle Bildpunkte, die einen kleineren Grauwert besitzen, werden dann weder zur Bestimmung der Maxima, noch zur weiteren Segmentierung herangezogen. Entsprechendes gilt für die Angabe einer oberen Grauwertschwelle in MaxGray: alle Pixel mit einem größeren Grauwert werden ebenfalls einfach ausmaskiert. Für eine komplette Segmentation aller Bildpunkte des Eingabebildes setzt man MinGray auf 0 und MaxGray auf 255 und erreicht so eine Bearbeitung des kompletten Grauwertspektrums. Auf MinGray < MaxGray ist zu achten.
Eingabebild.
Segmentierte Regionen.
Gewünschter Modus für den Programmablauf.
Defaultwert: 'all'
Werteliste: 'all', 'maxima', 'regions'
Alle Grauwerte, die echt unterhalb dieses Schwellenwertes liegen, werden ausmaskiert.
Defaultwert: 0
Wertevorschläge: 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110
Typischer Wertebereich: 0 ≤ MinGray ≤ 255 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
Restriktion: MinGray >= 0
Alle Grauwerte, die echt oberhalb dieses Schwellenwertes liegen, werden ausmaskiert.
Defaultwert: 255
Wertevorschläge: 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 255
Typischer Wertebereich: 0 ≤ MaxGray ≤ 255 (lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 10
Restriktion: MaxGray <= 255 && MaxGray > MinGray
* Segment a filtered image read_image(Image,'particle') mean_image(Image,Mean,11,11) pouring(Mean,Seg,'all',0,255) dev_display(Mean) dev_set_colored(12) dev_display(Seg) * Segment an image while masking the dark background read_image(Image,'particle') mean_image(Image,ImageMean,15,15) pouring(Mean,Seg,'all',90,255) dev_display(Mean) dev_set_colored(12) dev_display(Seg)
Sei N die Anzahl der Bildpunkte des Eingabebildes und M die Anzahl der gefundenen Segmente, wobei das umschreibende Rechteck für ein Segment i insgesamt m_{i} Pixel beinhalte. Sei außerdem noch K_{i} die Komplexität der Lauflängenkodierung von Segment i, so beträgt die Laufzeitkomplexität
pouring liefert normalerweise den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
binomial_filter, gauss_filter, smooth_image, mean_image
histo_2dim, expand_region, expand_gray, expand_gray_ref
Foundation
| Operatoren |