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.
ModelImage
(input_object) (multichannel-)image(-array) →
object (byte / uint2)
Eingabebild, aus dem die initialen Komponenten erstellt werden sollen.
InitialComponents
(output_object) region-array →
object
Konturregionen der initiale Komponenten.
ContrastLow
(input_control) integer(-array) →
(integer / string)
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
ContrastHigh
(input_control) integer(-array) →
(integer / string)
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
MinSize
(input_control) integer(-array) →
(integer / string)
Mindestgröße der initialen Komponenten.
Defaultwert: 'auto'
Wertevorschläge: 'auto' , 0, 5, 10, 20, 30, 40
Restriktion: MinSize >= 0
Mode
(input_control) string →
(string)
Art der automatischen Segmentierung.
Defaultwert: 'connection'
Werteliste: 'connection'
GenericName
(input_control) string(-array) →
(string)
Namen der optionalen Steuerparameter.
Defaultwert: []
Werteliste: 'merge_distance' , 'merge_fraction'
GenericValue
(input_control) number(-array) →
(real / integer)
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