gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponents (Operator)

Name

gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponents — Erzeugung der initialen Komponenten eines Komponentenmodells.

Signatur

gen_initial_components(ModelImage : InitialComponents : ContrastLow, ContrastHigh, MinSize, Mode, GenericName, GenericValue : )

Herror gen_initial_components(const Hobject ModelImage, Hobject* InitialComponents, const Hlong ContrastLow, const Hlong ContrastHigh, const Hlong MinSize, const char* Mode, const char* GenericName, double GenericValue)

Herror T_gen_initial_components(const Hobject ModelImage, Hobject* InitialComponents, const Htuple ContrastLow, const Htuple ContrastHigh, const Htuple MinSize, const Htuple Mode, const Htuple GenericName, const Htuple GenericValue)

void GenInitialComponents(const HObject& ModelImage, HObject* InitialComponents, const HTuple& ContrastLow, const HTuple& ContrastHigh, const HTuple& MinSize, const HTuple& Mode, const HTuple& GenericName, const HTuple& GenericValue)

HRegion HImage::GenInitialComponents(const HTuple& ContrastLow, const HTuple& ContrastHigh, const HTuple& MinSize, const HString& Mode, const HTuple& GenericName, const HTuple& GenericValue) const

HRegion HImage::GenInitialComponents(Hlong ContrastLow, Hlong ContrastHigh, Hlong MinSize, const HString& Mode, const HString& GenericName, double GenericValue) const

HRegion HImage::GenInitialComponents(Hlong ContrastLow, Hlong ContrastHigh, Hlong MinSize, const char* Mode, const char* GenericName, double GenericValue) const

HRegion HImage::GenInitialComponents(Hlong ContrastLow, Hlong ContrastHigh, Hlong MinSize, const wchar_t* Mode, const wchar_t* GenericName, double GenericValue) const   (Nur Windows)

static void HOperatorSet.GenInitialComponents(HObject modelImage, out HObject initialComponents, HTuple contrastLow, HTuple contrastHigh, HTuple minSize, HTuple mode, HTuple genericName, HTuple genericValue)

HRegion HImage.GenInitialComponents(HTuple contrastLow, HTuple contrastHigh, HTuple minSize, string mode, HTuple genericName, HTuple genericValue)

HRegion HImage.GenInitialComponents(int contrastLow, int contrastHigh, int minSize, string mode, string genericName, double genericValue)

Beschreibung

Im Allgemeinen bestehen zwei Möglichkeiten, gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsGenInitialComponents zu verwenden. Die erste Möglichkeit sollte gewählt werden, wenn die initialen Komponenten eines Komponentenmodells nicht bekannt sind. Dann erzeugt gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsGenInitialComponents 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_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents und create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModel zu finden. Somit ist die zweite Möglichkeit vergleichbar mit der Funktion von inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelInspectShapeModel innerhalb des formbasierten Matchings.

Wenn die erste Möglichkeit verwendet wird, erzeugt gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsGenInitialComponents die initialen Komponenten eines Komponentenmodells aus einem Modellbild ModelImageModelImageModelImageModelImagemodelImage. 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_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents zu trainieren, was die Extraktion der (endgültigen) Modellkomponenten und deren Relationen umfasst. gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsGenInitialComponents liefert die initialen Komponenten in einem Regionenobjekttupel InitialComponentsInitialComponentsInitialComponentsInitialComponentsinitialComponents zurück, das für jede initiale Komponente deren Konturregion enthält.

Zur automatischen Bestimmung der initialen Komponenten muss der Definitionsbereich des Modellbildes ModelImageModelImageModelImageModelImagemodelImage das gesamte zusammengesetzte Objekt inklusive aller Komponenten beeinhalten. Mit ModeModeModeModemode kann die Art der automatischen Berechnung gewählt werden. Zur Zeit ist nur der Modus 'connection'"connection""connection""connection""connection" verfügbar. In diesem Modus erfolgt die automatische Berechnung in zwei Schritten: Im ersten Schritt werden Merkmale extrahiert unter Verwendung der Parameter ContrastLowContrastLowContrastLowContrastLowcontrastLow, ContrastHighContrastHighContrastHighContrastHighcontrastHigh und MinSizeMinSizeMinSizeMinSizeminSize. 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. ContrastLowContrastLowContrastLowContrastLowcontrastLow und ContrastHighContrastHighContrastHighContrastHighcontrastHigh 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_imageedges_imageEdgesImageEdgesImageEdgesImage ist, eingesetzt. Dabei ist ContrastLowContrastLowContrastLowContrastLowcontrastLow der untere Schwellwert und ContrastHighContrastHighContrastHighContrastHighcontrastHigh der obere Schwellwert. Wird für ContrastLowContrastLowContrastLowContrastLowcontrastLow und ContrastHighContrastHighContrastHighContrastHighcontrastHigh der gleiche Wert übergeben, dann wird eine einfache Schwellwertoperation ausgeführt. MinSizeMinSizeMinSizeMinSizeminSize 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 MinSizeMinSizeMinSizeMinSizeminSize 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 InitialComponentsInitialComponentsInitialComponentsInitialComponentsinitialComponents zurückgeliefert und können zum Trainieren des Komponentenmodells an train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents übergeben werden.

Zur Steuerung der internen Bildverarbeitung können über die Parameter GenericNameGenericNameGenericNameGenericNamegenericName und GenericValueGenericValueGenericValueGenericValuegenericValue gezielt Steuerparameter übergeben werden. Dies geschieht, indem bei GenericNameGenericNameGenericNameGenericNamegenericName die Liste der Namen der Parameter als Strings übergeben werden. Bei GenericValueGenericValueGenericValueGenericValuegenericValue 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'"merge_distance""merge_distance""merge_distance""merge_distance" und 'merge_fraction'"merge_fraction""merge_fraction""merge_fraction""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'"merge_distance""merge_distance""merge_distance""merge_distance" Pixel von einer anderen Konturregion entfernt liegen. Ist dieser Anteil größer als der in 'merge_fraction'"merge_fraction""merge_fraction""merge_fraction""merge_fraction" übergebene Wert, dann werden diese beiden Konturregionen zusammengefasst. Daraus folgt, dass je größer 'merge_distance'"merge_distance""merge_distance""merge_distance""merge_distance" und je kleiner 'merge_fraction'"merge_fraction""merge_fraction""merge_fraction""merge_fraction" gewählt wird, desto mehr Konturregionen werden zusammengefasst. Vorbesetzung für 'merge_distance'"merge_distance""merge_distance""merge_distance""merge_distance" ist 5 und für 'merge_distance'"merge_distance""merge_distance""merge_distance""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_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents ohne vorheriges Ausführen von gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsGenInitialComponents gestartet werden. Dabei können die initialen Komponenten vom Benutzer vorgegeben werden und direkt an train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents übergeben werden. Sind sowohl die Komponenten als auch die relativen Bewegungen (Relationen) der Komponenten bekannt, so kann sowohl auf gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsGenInitialComponents als auch auf train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents ganz verzichtet werden und das Komponentenmodell unmittelbar mit create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModel erstellt werden. Dabei werden die Komponenten direkt an create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModel übergeben. In diesen beiden Fällen kann gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsGenInitialComponents jedoch dazu genutzt werden, die Auswirkung der Merkmalsextraktionsparameter ContrastLowContrastLowContrastLowContrastLowcontrastLow, ContrastHighContrastHighContrastHighContrastHighcontrastHigh und MinSizeMinSizeMinSizeMinSizeminSize von train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents und create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModel 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 ModelImageModelImageModelImageModelImagemodelImage 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. ModelImageModelImageModelImageModelImagemodelImage kann nicht in beliebiger Weise mit concat_objconcat_objConcatObjConcatObjConcatObj aufgebaut werden, sondern muss aus demselben Bild mit add_channelsadd_channelsAddChannelsAddChannelsAddChannels oder äquivalenten Aufrufen erzeugt werden. Ist dies nicht der Fall, wird eine Fehlermeldung zurückgeliefert. Wird für ContrastLowContrastLowContrastLowContrastLowcontrastLow, ContrastHighContrastHighContrastHighContrastHighcontrastHigh oder MinSizeMinSizeMinSizeMinSizeminSize 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 ModelImageModelImageModelImageModelImagemodelImage, entspricht. Die Konturregionen der (initialen) Komponenten werden in InitialComponentsInitialComponentsInitialComponentsInitialComponentsinitialComponents zurückgeliefert.

Damit ist die zweite Möglichkeit equivalent zur Funktion von inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelInspectShapeModel innerhalb des formbasierten Matchings. Jedoch werden bei gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsGenInitialComponents im Unterschied zu inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelInspectShapeModel 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_modelinspect_shape_modelInspectShapeModelInspectShapeModelInspectShapeModel für jede (initiale) Komponente individuell aufgerufen werden.

Für beide oben beschriebenen Möglichkeiten können die Parameter ContrastLowContrastLowContrastLowContrastLowcontrastLow, ContrastHighContrastHighContrastHighContrastHighcontrastHigh und MinSizeMinSizeMinSizeMinSizeminSize auch automatisch bestimmt werden. In diesem Fall muss der Wert 'auto'"auto""auto""auto""auto" übergeben werden. Sollen beide Hysterese-Schwellen automatisch bestimmt werden, so müssen sowohl ContrastLowContrastLowContrastLowContrastLowcontrastLow als auch ContrastHighContrastHighContrastHighContrastHighcontrastHigh jeweils auf 'auto'"auto""auto""auto""auto" gesetzt werden. Soll dagegen lediglich ein Kontrastwert automatisch bestimmt werden, so muss ContrastLowContrastLowContrastLowContrastLowcontrastLow auf 'auto'"auto""auto""auto""auto" und ContrastHighContrastHighContrastHighContrastHighcontrastHigh auf einen beliebigen Wert ungleich 'auto'"auto""auto""auto""auto" gesetzt werden.

Falls das Eingabebild ModelImageModelImageModelImageModelImagemodelImage einen Kanal besitzt, wird zur Berechnung der Repräsentation des Modells das Verfahren verwendet, das auch bei create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModel oder create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModel für die Metriken 'use_polarity'"use_polarity""use_polarity""use_polarity""use_polarity", 'ignore_global_polarity'"ignore_global_polarity""ignore_global_polarity""ignore_global_polarity""ignore_global_polarity" und 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""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'"ignore_color_polarity""ignore_color_polarity""ignore_color_polarity""ignore_color_polarity" verwendet wird.

Ausführungsinformationen

Parameter

ModelImageModelImageModelImageModelImagemodelImage (input_object)  (multichannel-)image(-array) objectHImageHImageHobject (byte / uint2)

Eingabebild, aus dem die initialen Komponenten erstellt werden sollen.

InitialComponentsInitialComponentsInitialComponentsInitialComponentsinitialComponents (output_object)  region-array objectHRegionHRegionHobject *

Konturregionen der initiale Komponenten.

ContrastLowContrastLowContrastLowContrastLowcontrastLow (input_control)  integer(-array) HTupleHTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Unterer Hystereseschwellwert für den Kontrast der initialen Komponenten im Bild.

Defaultwert: 'auto' "auto" "auto" "auto" "auto"

Wertevorschläge: 'auto'"auto""auto""auto""auto", 10, 20, 30, 40, 60, 80, 100, 120, 140, 160

Restriktion: ContrastLow > 0

ContrastHighContrastHighContrastHighContrastHighcontrastHigh (input_control)  integer(-array) HTupleHTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Oberer Hystereseschwellwert für den Kontrast der initialen Komponenten im Bild.

Defaultwert: 'auto' "auto" "auto" "auto" "auto"

Wertevorschläge: 'auto'"auto""auto""auto""auto", 10, 20, 30, 40, 60, 80, 100, 120, 140, 160

Restriktion: ContrastHigh > 0 && ContrastHigh >= ContrastLow

MinSizeMinSizeMinSizeMinSizeminSize (input_control)  integer(-array) HTupleHTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Mindestgröße der initialen Komponenten.

Defaultwert: 'auto' "auto" "auto" "auto" "auto"

Wertevorschläge: 'auto'"auto""auto""auto""auto", 0, 5, 10, 20, 30, 40

Restriktion: MinSize >= 0

ModeModeModeModemode (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Art der automatischen Segmentierung.

Defaultwert: 'connection' "connection" "connection" "connection" "connection"

Werteliste: 'connection'"connection""connection""connection""connection"

GenericNameGenericNameGenericNameGenericNamegenericName (input_control)  string(-array) HTupleHTupleHtuple (string) (string) (HString) (char*)

Namen der optionalen Steuerparameter.

Defaultwert: []

Werteliste: 'merge_distance'"merge_distance""merge_distance""merge_distance""merge_distance", 'merge_fraction'"merge_fraction""merge_fraction""merge_fraction""merge_fraction"

GenericValueGenericValueGenericValueGenericValuegenericValue (input_control)  number(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Wert der optionalen Steuerparameter.

Defaultwert: []

Beispiel (HDevelop)

* 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)

Ergebnis

Sind die Parameterwerte korrekt, dann liefert gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsGenInitialComponents den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

draw_regiondraw_regionDrawRegionDrawRegionDrawRegion, add_channelsadd_channelsAddChannelsAddChannelsAddChannels, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain

Nachfolger

train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents

Alternativen

inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelInspectShapeModel

Modul

Matching