| Operatoren |
gen_initial_components — Erzeugung der initialen Komponenten eines Komponentenmodells.
gen_initial_components(ModelImage : InitialComponents : ContrastLow, ContrastHigh, MinSize, Mode, GenericName, GenericValue : )
Im Allgemeinen bestehen zwei Möglichkeiten, gen_initial_components zu verwenden. Die erste Möglichkeit sollte gewählt werden, wenn die initialen Komponenten eines Komponentenmodells nicht bekannt sind. Dann erzeugt gen_initial_components die initialen Komponenten automatisch aus einem Modellbild. Die zweite Möglichkeit kann gewählt werden, um geeignete Werte für die Merkmalsextraktionsparameter von train_model_components und create_component_model zu finden. Somit ist die zweite Möglichkeit vergleichbar mit der Funktion von inspect_shape_model innerhalb des formbasierten Matchings.
Wenn die erste Möglichkeit verwendet wird, erzeugt gen_initial_components die initialen Komponenten eines Komponentenmodells aus einem Modellbild ModelImage. Wie bereits erwähnt, ist dies besonders dann hilfreich, wenn die initialen Komponenten eines Komponentenmodells nicht bekannt sind. In diesem Fall können die zurückgelieferten initialen Komponenten dazu genutzt werden, das Komponentenmodell automatisch mit train_model_components zu trainieren, was die Extraktion der (endgültigen) Modellkomponenten und deren Relationen umfasst. gen_initial_components liefert die initialen Komponenten in einem Regionenobjekttupel InitialComponents zurück, das für jede initiale Komponente deren Konturregion enthält.
Zur automatischen Bestimmung der initialen Komponenten muss der Definitionsbereich des Modellbildes ModelImage das gesamte zusammengesetzte Objekt inklusive aller Komponenten beeinhalten. Mit Mode kann die Art der automatischen Berechnung gewählt werden. Zur Zeit ist nur der Modus 'connection' verfügbar. In diesem Modus erfolgt die automatische Berechnung in zwei Schritten: Im ersten Schritt werden Merkmale extrahiert unter Verwendung der Parameter ContrastLow, ContrastHigh und MinSize. Diese Parameter legen fest, aus welchen Konturen die initialen Komponenten aufgebaut werden sollen, und sollten so gewählt werden, dass die initialen Komponenten nur die signifikanten Merkmale des Modellbildes enthalten. ContrastLow und ContrastHigh legen den Grauwertkontrast fest, den die Punkte der initialen Komponenten besitzen müssen. Der Kontrast ist ein Maß für die lokalen Grauwertdifferenzen zwischen dem Objekt und dem Hintergrund und zwischen verschiedenen Teilen des Objektes. Dabei wird bei der Segmentierung des Modellbildes ein Verfahren, das ähnlich zum Hysterese-Schwellwert-Verfahren in edges_image ist, eingesetzt. Dabei ist ContrastLow der untere Schwellwert und ContrastHigh der obere Schwellwert. Wird für ContrastLow und ContrastHigh der gleiche Wert übergeben, dann wird eine einfache Schwellwertoperation ausgeführt. MinSize dient zur Selektion von signifikanten Merkmalen für die initialen Komponenten basierend auf der Größe der zusammenhängenden Konturregionen. Das bedeutet, dass Konturregionen, die weniger als MinSize Pixel umfassen, unterdrückt werden.
Die dabei entstehenden zusammenhängenden Konturregionen werden in einem zweiten Schritt iterativ zusammengefasst. Dabei werden zwei Konturregionen vereinigt, falls der Abstand der beiden Regionen einen bestimmten Schwellwert unterschreitet (siehe unten). Die daraus resultierenden Regionen werden in InitialComponents zurückgeliefert und können zum Trainieren des Komponentenmodells an train_model_components übergeben werden.
Zur Steuerung der internen Bildverarbeitung können über die Parameter GenericName und GenericValue gezielt Steuerparameter übergeben werden. Dies geschieht, indem bei GenericName die Liste der Namen der Parameter als Strings übergeben werden. Bei GenericValue werden die zugehörigen Werte an den gleichen Indexpositionen übergeben.
Normalerweise ist es nicht nötig, die Werte zu ändern. Dies ist nur dann empfehlenswert, wenn das Ergebnis der automatischen Bestimmung der initialen Komponenten nicht den Erwartungen entspricht. Die zwei Parameter, die verändert werden können, sind 'merge_distance' und 'merge_fraction'; beide werden bei der iterativen Zusammenfassung von Konturregionen verwendet (siehe oben). Dazu wird zunächst der Anteil an Konturpixeln einer Konturregion berechnet, die maximal 'merge_distance' Pixel von einer anderen Konturregion entfernt liegen. Ist dieser Anteil größer als der in 'merge_fraction' übergebene Wert, dann werden diese beiden Konturregionen zusammengefasst. Daraus folgt, dass je größer 'merge_distance' und je kleiner 'merge_fraction' gewählt wird, desto mehr Konturregionen werden zusammengefasst. Vorbesetzung für 'merge_distance' ist 5 und für 'merge_distance' 0.5 (entspricht 50 Prozent).
Wenn die zweite Möglichkeit verwendet wird, d.h. wenn bereits näherungsweise bekannt ist, aus welchen Komponenten sich das Komponentenmodell zusammensetzt, kann das Training mit train_model_components ohne vorheriges Ausführen von gen_initial_components gestartet werden. Dabei können die initialen Komponenten vom Benutzer vorgegeben werden und direkt an train_model_components übergeben werden. Sind sowohl die Komponenten als auch die relativen Bewegungen (Relationen) der Komponenten bekannt, so kann sowohl auf gen_initial_components als auch auf train_model_components ganz verzichtet werden und das Komponentenmodell unmittelbar mit create_component_model erstellt werden. Dabei werden die Komponenten direkt an create_component_model übergeben. In diesen beiden Fällen kann gen_initial_components jedoch dazu genutzt werden, die Auswirkung der Merkmalsextraktionsparameter ContrastLow, ContrastHigh und MinSize von train_model_components und create_component_model zu evaluieren und somit geeignete Parameterwerte für eine bestimmte Anwendung zu finden.
Dabei müssen die Bildregionen für die (initialen) Komponenten explizit vorgegeben werden, d.h. für jede (initiale) Komponente wird ein eigenes Bild übergeben, aus dem die (initiale) Komponente generiert werden soll. In diesem Fall besteht das Modellbild ModelImage demzufolge aus einem Bildobjekttupel. Der Definitionsbereich jedes Bildobjektes wird als Region zur Berechnung der entsprechenden (initialen) Komponente verwendet. Dabei muss die Bildmatrix, die allen Bildobjekten des Bildobjekttupels zugrunde liegt, identisch sein. D.h. ModelImage kann nicht in beliebiger Weise mit concat_obj aufgebaut werden, sondern muss aus demselben Bild mit add_channels oder äquivalenten Aufrufen erzeugt werden. Ist dies nicht der Fall, wird eine Fehlermeldung zurückgeliefert. Wird für ContrastLow, ContrastHigh oder MinSize nur ein Wert übergeben, so gilt dieser Wert für alle (initialen) Komponenten. Sollen dagegen für unterschiedliche (initiale) Komponenten unterschiedliche Parameter verwendet werden, kann dies durch die Übergabe von Tupeln von Werten für die drei Parameter erreicht werden. In diesem Fall müssen die Tupel eine Länge habe, die der Anzahl an (initialen) Komponenten, d.h. der Anzahl an Bildobjekten in ModelImage, entspricht. Die Konturregionen der (initialen) Komponenten werden in InitialComponents zurückgeliefert.
Damit ist die zweite Möglichkeit equivalent zur Funktion von inspect_shape_model innerhalb des formbasierten Matchings. Jedoch werden bei gen_initial_components im Unterschied zu inspect_shape_model die Konturregionen nicht auf mehreren Pyramidenebenen generiert. Deshalb sollte für den Fall, dass die Anzahl an Pyramidenebenen manuell gewählt wird, vorzugsweise inspect_shape_model für jede (initiale) Komponente individuell aufgerufen werden.
Für beide oben beschriebenen Möglichkeiten können die Parameter ContrastLow, ContrastHigh und MinSize auch automatisch bestimmt werden. In diesem Fall muss der Wert 'auto' übergeben werden. Sollen beide Hysterese-Schwellen automatisch bestimmt werden, so müssen sowohl ContrastLow als auch ContrastHigh jeweils auf 'auto' gesetzt werden. Soll dagegen lediglich ein Kontrastwert automatisch bestimmt werden, so muss ContrastLow auf 'auto' und ContrastHigh auf einen beliebigen Wert ungleich 'auto' gesetzt werden.
Falls das Eingabebild ModelImage einen Kanal besitzt, wird zur Berechnung der Repräsentation des Modells das Verfahren verwendet, das auch bei create_component_model oder create_trained_component_model für die Metriken 'use_polarity', 'ignore_global_polarity' und 'ignore_local_polarity' verwendet wird. Falls das Eingabebild mehr als einen Kanal besitzt, wird das Verfahren verwendet, das für die Metrik 'ignore_color_polarity' verwendet wird.
Eingabebild, aus dem die initialen Komponenten erstellt werden sollen.
Konturregionen der initiale Komponenten.
Unterer Hystereseschwellwert für den Kontrast der initialen Komponenten im Bild.
Defaultwert: 'auto'
Wertevorschläge: 'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160
Restriktion: ContrastLow > 0
Oberer Hystereseschwellwert für den Kontrast der initialen Komponenten im Bild.
Defaultwert: 'auto'
Wertevorschläge: 'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160
Restriktion: ContrastHigh > 0 && ContrastHigh >= ContrastLow
Mindestgröße der initialen Komponenten.
Defaultwert: 'auto'
Wertevorschläge: 'auto', 0, 5, 10, 20, 30, 40
Restriktion: MinSize >= 0
Art der automatischen Segmentierung.
Defaultwert: 'connection'
Werteliste: 'connection'
Namen der optionalen Steuerparameter.
Defaultwert: []
Werteliste: 'merge_distance', 'merge_fraction'
Wert der optionalen Steuerparameter.
Defaultwert: []
* First example that shows the use of gen_initial_components to automatically
* extract the initial components from a model image.
* Get the model image.
read_image (Image, 'model_image.tif')
* Define the entire model region.
gen_rectangle1 (ModelRegion, 119, 106, 330, 537)
reduce_domain (Image, ModelRegion, ModelImage)
* Automatically generate the initial components.
gen_initial_components (ModelImage, InitialComponents, 40, 40, 20, \
'connection', [], [])
* Extract the model components and train the relations.
train_model_components (ModelImage, InitialComponents, TrainingImages, \
ModelComponents, 40, 40, 20, 0.85, 0, 0, rad(15), \
'speed', 'rigidity', 0.2, 0.5, ComponentTrainingID)
* Create the component model based on the training result.
create_trained_component_model (ComponentTrainingID, -rad(30), rad(60), 10, \
0.8, 'auto', 'auto', 'none', \
'use_polarity', 'false', ComponentModelID, \
RootRanking)
* Second example that shows the use of gen_initial_components to evaluate
* the effect of the feature extraction parameters.
* Get the model image.
read_image (ModelImage, 'model_image.tif')
* Define the regions for the components.
gen_rectangle2 (ComponentRegions, 318, 109, -1.62, 34, 19)
gen_rectangle2 (Rectangle2, 342, 238, -1.63, 32, 17)
gen_rectangle2 (Rectangle3, 355, 505, 1.41, 25, 17)
concat_obj (ComponentRegions, Rectangle2, ComponentRegions)
concat_obj (ComponentRegions, Rectangle3, ComponentRegions)
add_channels (ComponentRegions, ModelImage, ModelImageReduced)
gen_initial_components (ModelImageReduced, InitialComponents, 15, 40, 15, \
'connection', [], [])
* Create the component model by explicitly specifying the relations.
create_component_model (ModelImage, ComponentRegions, 20, 20, rad(25), 0, \
rad(360), 15, 40, 15, 10, 0.8, 'auto', 'auto', \
'none', 'use_polarity', 'false', ComponentModelID, \
RootRanking)
Sind die Parameterwerte korrekt, dann liefert gen_initial_components den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
draw_region, add_channels, reduce_domain
Matching
| Operatoren |