get_component_model_treeT_get_component_model_treeGetComponentModelTreeGetComponentModelTreeget_component_model_tree (Operator)
Name
get_component_model_treeT_get_component_model_treeGetComponentModelTreeGetComponentModelTreeget_component_model_tree — 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)
def get_component_model_tree(component_model_id: HHandle, root_component: MaybeSequence[int], image: Union[str, int]) -> Tuple[HObject, HObject, Sequence[int], Sequence[int], Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float]]
def get_component_model_tree_s(component_model_id: HHandle, root_component: MaybeSequence[int], image: Union[str, int]) -> Tuple[HObject, HObject, int, int, float, float, float, float, float, float, float]
Beschreibung
get_component_model_treeget_component_model_treeGetComponentModelTreeGetComponentModelTreeGetComponentModelTreeget_component_model_tree liefert den Suchbaum TreeTreeTreeTreetreetree
und die zugehörigen Relationen RelationsRelationsRelationsRelationsrelationsrelations des
Komponentenmodells, das in ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelIDcomponent_model_id übergeben wird,
sowohl in Form von Regionen als auch in numerischer Form zurück.
get_component_model_treeget_component_model_treeGetComponentModelTreeGetComponentModelTreeGetComponentModelTreeget_component_model_tree ist besonders hilfreich, um die mit
create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModelcreate_trained_component_model oder
create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModelcreate_component_model berechnete Suchreihenfolge der
einzelnen Komponenten zu visualisieren.
Da je nach Wurzelkomponente ein anderer Suchbaum verwendet wird,
muss die Wurzelkomponente in RootComponentRootComponentRootComponentRootComponentrootComponentroot_component übergeben
werden. Die Knoten im Baum TreeTreeTreeTreetreetree 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 ImageImageImageImageimageimage =
'model_image'"model_image""model_image""model_image""model_image""model_image" oder ImageImageImageImageimageimage = 0) oder in
einem Trainingsbild (wenn ImageImageImageImageimageimage >=
1). Falls ImageImageImageImageimageimage >= 1 gewählt
wird, muss das Komponentenmodell basierend auf dem Trainingsergebnis mit
create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModelcreate_trained_component_model generiert worden sein.
Sei n die Anzahl an Komponenten in ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelIDcomponent_model_id.
Das Regionenobjekttupel RelationsRelationsRelationsRelationsrelationsrelations 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 RootComponentRootComponentRootComponentRootComponentrootComponentroot_component
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 StartNodeStartNodeStartNodeStartNodestartNodestart_node und
EndNodeEndNodeEndNodeEndNodeendNodeend_node 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 RowRowRowRowrowrow,
ColumnColumnColumnColumncolumncolumn, PhiPhiPhiPhiphiphi, Length1Length1Length1Length1length1length_1, Length2Length2Length2Length2length2length_2,
AngleStartAngleStartAngleStartAngleStartangleStartangle_start und AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent 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
RowRowRowRowrowrow, ColumnColumnColumnColumncolumncolumn, PhiPhiPhiPhiphiphi, Length1Length1Length1Length1length1length_1 und
Length2Length2Length2Length2length2length_2 beschrieben (siehe gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2gen_rectangle2). Die
Winkelrelation wird durch den Anfangswinkel AngleStartAngleStartAngleStartAngleStartangleStartangle_start und
die Winkelausdehnung AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent 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
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
TreeTreeTreeTreetreetree (output_object) region → objectHRegionHObjectHRegionHobject *
Suchbaum
RelationsRelationsRelationsRelationsrelationsrelations (output_object) region-array → objectHRegionHObjectHRegionHobject *
Relationen der im Suchbaum verbundenen Komponenten.
ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelIDcomponent_model_id (input_control) component_model → HComponentModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des Komponentenmodells.
RootComponentRootComponentRootComponentRootComponentrootComponentroot_component (input_control) integer(-array) → HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Index der Wurzelkomponente.
Wertevorschläge: 0, 1, 2, 3, 4, 5, 6, 7, 8
ImageImageImageImageimageimage (input_control) string → HTupleUnion[str, int]HTupleHtuple (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"
"model_image"
Wertevorschläge: 'model_image'"model_image""model_image""model_image""model_image""model_image", 0, 1, 2, 3, 4, 5, 6, 7, 8
StartNodeStartNodeStartNodeStartNodestartNodestart_node (output_control) integer(-array) → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Komponentenindex des Startknotens einer Verbindung im
Suchbaum.
EndNodeEndNodeEndNodeEndNodeendNodeend_node (output_control) integer(-array) → HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Komponentenindex des Endknotens einer Verbindung im
Suchbaum.
RowRowRowRowrowrow (output_control) rectangle2.center.y(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Zeilenkoordinate des Mittelpunktes des Rechtecks,
das die Relation beschreibt.
ColumnColumnColumnColumncolumncolumn (output_control) rectangle2.center.x(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Spaltenindex des Mittelpunktes des Rechtecks,
das die Relation beschreibt.
PhiPhiPhiPhiphiphi (output_control) rectangle2.angle.rad(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Orientierung des Rechtecks, das die
Relation beschreibt (Bogenmaß).
Zusicherung: - pi / 2 < Phi && Phi <= pi / 2
Length1Length1Length1Length1length1length_1 (output_control) rectangle2.hwidth(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Erster Halbmesser (halbe Länge) des Rechtecks, das
die Relation beschreibt.
Zusicherung: Length1 >= 0.0
Length2Length2Length2Length2length2length_2 (output_control) rectangle2.hheight(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Zweiter Halbmesser (halbe Breite) des Rechtecks, das
die Relation beschreibt.
Zusicherung: Length2 >= 0.0 && Length2 <= Length1
AngleStartAngleStartAngleStartAngleStartangleStartangle_start (output_control) angle.rad(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Kleinster relativer Orientierungswinkel.
AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent (output_control) angle.rad(-array) → HTupleSequence[float]HTupleHtuple (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_treeGetComponentModelTreeGetComponentModelTreeGetComponentModelTreeget_component_model_tree den Wert TRUE. Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
Vorgänger
create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModelcreate_trained_component_model,
create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModelcreate_component_model
Siehe auch
train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponentstrain_model_components
Modul
Matching