gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_initial_components (Operator)

Name

gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_initial_components — Erzeugung der initialen Komponenten eines Komponentenmodells.

Warnung

gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_initial_components ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt.

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)

def gen_initial_components(model_image: HObject, contrast_low: MaybeSequence[Union[int, str]], contrast_high: MaybeSequence[Union[int, str]], min_size: MaybeSequence[Union[int, str]], mode: str, generic_name: MaybeSequence[str], generic_value: MaybeSequence[Union[int, float]]) -> HObject

Beschreibung

Im Allgemeinen bestehen zwei Möglichkeiten, gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_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_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_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_componentstrain_model_componentsTrainModelComponentsTrainModelComponentstrain_model_components und create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelcreate_component_model zu finden. Somit ist die zweite Möglichkeit vergleichbar mit der Funktion von inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelinspect_shape_model innerhalb des formbasierten Matchings.

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

Zur automatischen Bestimmung der initialen Komponenten muss der Definitionsbereich des Modellbildes ModelImageModelImageModelImagemodelImagemodel_image das gesamte zusammengesetzte Objekt inklusive aller Komponenten beinhalten. 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 ContrastLowContrastLowContrastLowcontrastLowcontrast_low, ContrastHighContrastHighContrastHighcontrastHighcontrast_high und MinSizeMinSizeMinSizeminSizemin_size. 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. ContrastLowContrastLowContrastLowcontrastLowcontrast_low und ContrastHighContrastHighContrastHighcontrastHighcontrast_high 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-Schwellenwert-Verfahren in edges_imageedges_imageEdgesImageEdgesImageedges_image ist, eingesetzt. Dabei ist ContrastLowContrastLowContrastLowcontrastLowcontrast_low der untere Schwellenwert und ContrastHighContrastHighContrastHighcontrastHighcontrast_high der obere Schwellenwert. Wird für ContrastLowContrastLowContrastLowcontrastLowcontrast_low und ContrastHighContrastHighContrastHighcontrastHighcontrast_high der gleiche Wert übergeben, dann wird eine einfache Schwellenwertoperation ausgeführt. MinSizeMinSizeMinSizeminSizemin_size 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 MinSizeMinSizeMinSizeminSizemin_size 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 Schwellenwert unterschreitet (siehe unten). Die daraus resultierenden Regionen werden in InitialComponentsInitialComponentsInitialComponentsinitialComponentsinitial_components zurückgeliefert und können zum Trainieren des Komponentenmodells an train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentstrain_model_components übergeben werden.

Zur Steuerung der internen Bildverarbeitung können über die Parameter GenericNameGenericNameGenericNamegenericNamegeneric_name und GenericValueGenericValueGenericValuegenericValuegeneric_value gezielt Steuerparameter übergeben werden. Dies geschieht, indem bei GenericNameGenericNameGenericNamegenericNamegeneric_name die Liste der Namen der Parameter als Strings übergeben werden. Bei GenericValueGenericValueGenericValuegenericValuegeneric_value 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_componentsTrainModelComponentsTrainModelComponentstrain_model_components ohne vorheriges Ausführen von gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_initial_components gestartet werden. Dabei können die initialen Komponenten vom Benutzer vorgegeben werden und direkt an train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentstrain_model_components übergeben werden. Sind sowohl die Komponenten als auch die relativen Bewegungen (Relationen) der Komponenten bekannt, so kann sowohl auf gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_initial_components als auch auf train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentstrain_model_components ganz verzichtet werden und das Komponentenmodell unmittelbar mit create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelcreate_component_model erstellt werden. Dabei werden die Komponenten direkt an create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelcreate_component_model übergeben. In diesen beiden Fällen kann gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_initial_components jedoch dazu genutzt werden, die Auswirkung der Merkmalsextraktionsparameter ContrastLowContrastLowContrastLowcontrastLowcontrast_low, ContrastHighContrastHighContrastHighcontrastHighcontrast_high und MinSizeMinSizeMinSizeminSizemin_size von train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentstrain_model_components und create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelcreate_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 ModelImageModelImageModelImagemodelImagemodel_image 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. ModelImageModelImageModelImagemodelImagemodel_image kann nicht in beliebiger Weise mit concat_objconcat_objConcatObjConcatObjconcat_obj aufgebaut werden, sondern muss aus demselben Bild mit add_channelsadd_channelsAddChannelsAddChannelsadd_channels oder äquivalenten Aufrufen erzeugt werden. Ist dies nicht der Fall, wird eine Fehlermeldung zurückgeliefert. Wird für ContrastLowContrastLowContrastLowcontrastLowcontrast_low, ContrastHighContrastHighContrastHighcontrastHighcontrast_high oder MinSizeMinSizeMinSizeminSizemin_size 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 ModelImageModelImageModelImagemodelImagemodel_image, entspricht. Die Konturregionen der (initialen) Komponenten werden in InitialComponentsInitialComponentsInitialComponentsinitialComponentsinitial_components zurückgeliefert.

Damit ist die zweite Möglichkeit äquivalent zur Funktion von inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelinspect_shape_model innerhalb des formbasierten Matchings. Jedoch werden bei gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_initial_components im Unterschied zu inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelinspect_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_modelinspect_shape_modelInspectShapeModelInspectShapeModelinspect_shape_model für jede (initiale) Komponente individuell aufgerufen werden.

Für beide oben beschriebenen Möglichkeiten können die Parameter ContrastLowContrastLowContrastLowcontrastLowcontrast_low, ContrastHighContrastHighContrastHighcontrastHighcontrast_high und MinSizeMinSizeMinSizeminSizemin_size 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 ContrastLowContrastLowContrastLowcontrastLowcontrast_low als auch ContrastHighContrastHighContrastHighcontrastHighcontrast_high jeweils auf 'auto'"auto""auto""auto""auto" gesetzt werden. Soll dagegen lediglich ein Kontrastwert automatisch bestimmt werden, so muss ContrastLowContrastLowContrastLowcontrastLowcontrast_low auf 'auto'"auto""auto""auto""auto" und ContrastHighContrastHighContrastHighcontrastHighcontrast_high auf einen beliebigen Wert ungleich 'auto'"auto""auto""auto""auto" gesetzt werden.

Falls das Eingabebild ModelImageModelImageModelImagemodelImagemodel_image einen Kanal besitzt, wird zur Berechnung der Repräsentation des Modells das Verfahren verwendet, das auch bei create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelcreate_component_model oder create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelcreate_trained_component_model 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

ModelImageModelImageModelImagemodelImagemodel_image (input_object)  (multichannel-)image(-array) objectHImageHObjectHObjectHobject (byte / uint2)

Eingabebild, aus dem die initialen Komponenten erstellt werden sollen.

InitialComponentsInitialComponentsInitialComponentsinitialComponentsinitial_components (output_object)  region-array objectHRegionHObjectHObjectHobject *

Konturregionen der initiale Komponenten.

ContrastLowContrastLowContrastLowcontrastLowcontrast_low (input_control)  integer(-array) HTupleMaybeSequence[Union[int, str]]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

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

Default: '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

ContrastHighContrastHighContrastHighcontrastHighcontrast_high (input_control)  integer(-array) HTupleMaybeSequence[Union[int, str]]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

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

Default: '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

MinSizeMinSizeMinSizeminSizemin_size (input_control)  integer(-array) HTupleMaybeSequence[Union[int, str]]HTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Mindestgröße der initialen Komponenten.

Default: '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 HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Art der automatischen Segmentierung.

Default: 'connection' "connection" "connection" "connection" "connection"

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

GenericNameGenericNameGenericNamegenericNamegeneric_name (input_control)  string(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Namen der optionalen Steuerparameter.

Default: []

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

GenericValueGenericValueGenericValuegenericValuegeneric_value (input_control)  number(-array) HTupleMaybeSequence[Union[int, float]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Wert der optionalen Steuerparameter.

Default: []

Ergebnis

Sind die Parameterwerte korrekt, dann liefert gen_initial_componentsgen_initial_componentsGenInitialComponentsGenInitialComponentsgen_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>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Alternativen

inspect_shape_modelinspect_shape_modelInspectShapeModelInspectShapeModelinspect_shape_model

Modul

Matching