get_component_model_treeT_get_component_model_treeGetComponentModelTreeGetComponentModelTree (Operator)

Name

get_component_model_treeT_get_component_model_treeGetComponentModelTreeGetComponentModelTree — Liefert den Suchbaum eines Komponentenmodells zurück.

Signatur

get_component_model_tree( : Tree, Relations : ComponentModelID, RootComponent, Image : StartNode, EndNode, Row, Column, Phi, Length1, Length2, AngleStart, AngleExtent)

Herror T_get_component_model_tree(Hobject* Tree, Hobject* Relations, const Htuple ComponentModelID, const Htuple RootComponent, const Htuple Image, Htuple* StartNode, Htuple* EndNode, Htuple* Row, Htuple* Column, Htuple* Phi, Htuple* Length1, Htuple* Length2, Htuple* AngleStart, Htuple* AngleExtent)

void GetComponentModelTree(HObject* Tree, HObject* Relations, const HTuple& ComponentModelID, const HTuple& RootComponent, const HTuple& Image, HTuple* StartNode, HTuple* EndNode, HTuple* Row, HTuple* Column, HTuple* Phi, HTuple* Length1, HTuple* Length2, HTuple* AngleStart, HTuple* AngleExtent)

HRegion HComponentModel::GetComponentModelTree(HRegion* Relations, const HTuple& RootComponent, const HTuple& Image, HTuple* StartNode, HTuple* EndNode, HTuple* Row, HTuple* Column, HTuple* Phi, HTuple* Length1, HTuple* Length2, HTuple* AngleStart, HTuple* AngleExtent) const

HRegion HComponentModel::GetComponentModelTree(HRegion* Relations, Hlong RootComponent, const HString& Image, Hlong* StartNode, Hlong* EndNode, double* Row, double* Column, double* Phi, double* Length1, double* Length2, double* AngleStart, double* AngleExtent) const

HRegion HComponentModel::GetComponentModelTree(HRegion* Relations, Hlong RootComponent, const char* Image, Hlong* StartNode, Hlong* EndNode, double* Row, double* Column, double* Phi, double* Length1, double* Length2, double* AngleStart, double* AngleExtent) const

HRegion HComponentModel::GetComponentModelTree(HRegion* Relations, Hlong RootComponent, const wchar_t* Image, Hlong* StartNode, Hlong* EndNode, double* Row, double* Column, double* Phi, double* Length1, double* Length2, double* AngleStart, double* AngleExtent) const   (Nur Windows)

static void HOperatorSet.GetComponentModelTree(out HObject tree, out HObject relations, HTuple componentModelID, HTuple rootComponent, HTuple image, out HTuple startNode, out HTuple endNode, out HTuple row, out HTuple column, out HTuple phi, out HTuple length1, out HTuple length2, out HTuple angleStart, out HTuple angleExtent)

HRegion HComponentModel.GetComponentModelTree(out HRegion relations, HTuple rootComponent, HTuple image, out HTuple startNode, out HTuple endNode, out HTuple row, out HTuple column, out HTuple phi, out HTuple length1, out HTuple length2, out HTuple angleStart, out HTuple angleExtent)

HRegion HComponentModel.GetComponentModelTree(out HRegion relations, int rootComponent, string image, out int startNode, out int endNode, out double row, out double column, out double phi, out double length1, out double length2, out double angleStart, out double angleExtent)

Beschreibung

get_component_model_treeget_component_model_treeGetComponentModelTreeGetComponentModelTreeGetComponentModelTree liefert den Suchbaum TreeTreeTreeTreetree und die zugehörigen Relationen RelationsRelationsRelationsRelationsrelations des Komponentenmodells, das in ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelID übergeben wird, sowohl in Form von Regionen als auch in numerischer Form zurück. get_component_model_treeget_component_model_treeGetComponentModelTreeGetComponentModelTreeGetComponentModelTree ist besonders hilfreich, um die mit create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModel oder create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModel berechnete Suchreihenfolge der einzelnen Komponenten zu visualisieren.

Da je nach Wurzelkomponente ein anderer Suchbaum verwendet wird, muss die Wurzelkomponente in RootComponentRootComponentRootComponentRootComponentrootComponent übergeben werden. Die Knoten im Baum TreeTreeTreeTreetree repräsentieren die einzelnen Komponenten im Modell, die Verbindungen zwischen den Knoten zeigen an, welche Komponenten relativ zueinander gesucht werden. Die Lage der Knoten im Baum entspricht der Lage der Komponenten im Modellbild (wenn ImageImageImageImageimage = 'model_image'"model_image""model_image""model_image""model_image" oder ImageImageImageImageimage = 0) oder in einem Trainingsbild (wenn ImageImageImageImageimage >= 1). Falls ImageImageImageImageimage >= 1 gewählt wird, muss das Komponentenmodell basierend auf dem Trainingsergebnis mit create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModel generiert worden sein.

Sei n die Anzahl an Komponenten in ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelID. Das Regionenobjekttupel RelationsRelationsRelationsRelationsrelations der Länge n hat folgenden Aufbau: Für jede Komponente wird eine eigene Region zurückgeliefert. Die Positionen aller Komponenten im Bild werden durch Kreise mit einem Radius von 3 Pixel dargestellt. Für jede Komponente, die nicht der Wurzelkomponente RootComponentRootComponentRootComponentRootComponentrootComponent entspricht, werden zusätzlich die Positionsrelation und die Winkelrelation relativ zur Vorgänger-Komponente im Baum dargestellt. Die Positionsrelation wird dabei durch ein Rechteck und die Winkelrelation durch einen Kreissektor mit einem Radius von 30 Pixel dargestellt. Der Kreismittelpunkt liegt dabei an der mittleren relativen Position der Komponente. Das Rechteck beschreibt die Referenzpunktbewegung der jeweiligen Komponente relativ zur Lage der Vorgänger-Komponente, der Öffnungswinkel des Kreissektors beschreibt die Variation der relativen Orientierung. Eine relative Orientierung von 0 entspricht der relativen Orientierung der beiden Komponenten im Modellbild.

Zusätzlich zu den Regionen werden der Suchbaum und die entsprechenden Relationen auch in numerischer Form zurückgeliefert. Der Suchbaum wird dabei in Form zweier Tupel StartNodeStartNodeStartNodeStartNodestartNode und EndNodeEndNodeEndNodeEndNodeendNode der Länge n beschrieben, die die jeweiligen Anfangs- und Endknoten aller Verbindungen im Baum enthalten. Dabei enthalten die Knoten die Indizes der entsprechenden Komponenten. Während der Suche wird die Komponenten, die durch den Endknoten beschrieben ist, relativ zur Lage der Komponente, die durch den Anfangsknoten beschrieben ist (Vorgängerkomponente), gesucht. Da die Wurzelkomponente nicht relativ zu einer anderen Komponente gesucht wird und somit keine Vorgängerkomponente besitzt, wird der entsprechende Anfangsknoten auf -1 gesetzt. Die Relationen werden in Form von numerischen Werten in RowRowRowRowrow, ColumnColumnColumnColumncolumn, PhiPhiPhiPhiphi, Length1Length1Length1Length1length1, Length2Length2Length2Length2length2, AngleStartAngleStartAngleStartAngleStartangleStart und AngleExtentAngleExtentAngleExtentAngleExtentangleExtent zurückgeliefert. Diese Parameter sind Tupel der Länge n und enthalten die Relationen aller Komponenten relativ zu ihrer Vorgängerkomponente im Baum, wobei die Reihenfolge der Werte in den Tupeln durch den Index der entsprechenden Komponenten festgelegt ist. Die Positionsrelation wird dabei durch die Parameter des entsprechenden Rechtecks RowRowRowRowrow, ColumnColumnColumnColumncolumn, PhiPhiPhiPhiphi, Length1Length1Length1Length1length1 und Length2Length2Length2Length2length2 beschrieben (siehe gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2). Die Winkelrelation wird durch den Anfangswinkel AngleStartAngleStartAngleStartAngleStartangleStart und die Winkelausdehnung AngleExtentAngleExtentAngleExtentAngleExtentangleExtent beschrieben.

Für die Wurzelkomponente und für Komponenten, die in dem entsprechenden Bild keine Vorgängerkomponente besitzen oder nicht gefunden wurden, wird eine leere Region zurückgeliefert und die entsprechenden Werte der sieben Parameter auf 0 gesetzt.

Ausführungsinformationen

Parameter

TreeTreeTreeTreetree (output_object)  region objectHRegionHRegionHobject *

Suchbaum

RelationsRelationsRelationsRelationsrelations (output_object)  region-array objectHRegionHRegionHobject *

Relationen der im Suchbaum verbundenen Komponenten.

ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelID (input_control)  component_model HComponentModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Komponentenmodells.

RootComponentRootComponentRootComponentRootComponentrootComponent (input_control)  integer(-array) HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Index der Wurzelkomponente.

Wertevorschläge: 0, 1, 2, 3, 4, 5, 6, 7, 8

ImageImageImageImageimage (input_control)  string HTupleHTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)

Bild, für das der Baum zurückgeliefert werden soll.

Defaultwert: 'model_image' "model_image" "model_image" "model_image" "model_image"

Wertevorschläge: 'model_image'"model_image""model_image""model_image""model_image", 0, 1, 2, 3, 4, 5, 6, 7, 8

StartNodeStartNodeStartNodeStartNodestartNode (output_control)  integer(-array) HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Komponentenindex des Startknotens einer Verbindung im Suchbaum.

EndNodeEndNodeEndNodeEndNodeendNode (output_control)  integer(-array) HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Komponentenindex des Endknotens einer Verbindung im Suchbaum.

RowRowRowRowrow (output_control)  rectangle2.center.y(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Zeilenkoordinate des Mittelpunktes des Rechtecks, das die Relation beschreibt.

ColumnColumnColumnColumncolumn (output_control)  rectangle2.center.x(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Spaltenindex des Mittelpunktes des Rechtecks, das die Relation beschreibt.

PhiPhiPhiPhiphi (output_control)  rectangle2.angle.rad(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Orientierung des Rechtecks, das die Relation beschreibt (Bogenmaß).

Zusicherung: - pi / 2 < Phi && Phi <= pi / 2

Length1Length1Length1Length1length1 (output_control)  rectangle2.hwidth(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Erster Halbmesser (halbe Länge) des Rechtecks, das die Relation beschreibt.

Zusicherung: Length1 >= 0.0

Length2Length2Length2Length2length2 (output_control)  rectangle2.hheight(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Zweiter Halbmesser (halbe Breite) des Rechtecks, das die Relation beschreibt.

Zusicherung: Length2 >= 0.0 && Length2 <= Length1

AngleStartAngleStartAngleStartAngleStartangleStart (output_control)  angle.rad(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Kleinster relativer Orientierungswinkel.

AngleExtentAngleExtentAngleExtentAngleExtentangleExtent (output_control)  angle.rad(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Ausdehnung des relativen Orientierungswinkelbereichs.

Beispiel (HDevelop)

* Read the model image.
read_image (ModelImage, 'model_image.tif')
* Describe the model 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)
* Create the component model.
create_component_model (ModelImage, ComponentRegions, 20, 20, rad(25), 0, \
                        rad(360), 15, 40, 15, 10, 0.8, 0, 0, 'none', \
                        'use_polarity', 'true', ComponentModelID, \
                        RootRanking)
* Get the component model tree.
get_component_model_tree (Tree, Relations, ComponentModelID, RootRanking, \
                          'model_image', StartNode, EndNode, Row, Column, \
                          Phi, Length1, Length2, AngleStart, AngleExtent)
dev_set_colored (12)
dev_display (ModelImage)
dev_display (Tree)
dev_display (Relations)

Ergebnis

Sind die Parameterwerte korrekt, dann liefert get_component_model_treeget_component_model_treeGetComponentModelTreeGetComponentModelTreeGetComponentModelTree den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModel, create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModel

Siehe auch

train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponents

Modul

Matching