get_component_model_treeT_get_component_model_treeGetComponentModelTreeGetComponentModelTreeget_component_model_tree (Operator)

Name

get_component_model_treeT_get_component_model_treeGetComponentModelTreeGetComponentModelTreeget_component_model_tree — Return the search tree of a component model.

Signature

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   (Windows only)

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]

Description

get_component_model_treeget_component_model_treeGetComponentModelTreeGetComponentModelTreeGetComponentModelTreeget_component_model_tree returns the search tree TreeTreeTreeTreetreetree and the associated relations RelationsRelationsRelationsRelationsrelationsrelations of the component model that is passed in ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelIDcomponent_model_id in form of regions as well as in numerical form. get_component_model_treeget_component_model_treeGetComponentModelTreeGetComponentModelTreeGetComponentModelTreeget_component_model_tree is particularly useful in order to visualize the search order of the components, which was automatically computed in create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModelcreate_trained_component_model or create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModelcreate_component_model.

Because the search tree depends on the selected root component, the root component must be passed in RootComponentRootComponentRootComponentRootComponentrootComponentroot_component. The nodes in the tree TreeTreeTreeTreetreetree represent the model components, the connecting lines between the nodes indicate which components are searched relative to each other. The position of the nodes corresponds to the position of the components in the model image (if ImageImageImageImageimageimage = 'model_image'"model_image""model_image""model_image""model_image""model_image" or ImageImageImageImageimageimage = 0) or in a training image (if ImageImageImageImageimageimage >= 1). In the latter case, the component model must have been created based on a component training result with create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModelcreate_trained_component_model.

Let n be the number of components in ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelIDcomponent_model_id. The region object tuple RelationsRelationsRelationsRelationsrelationsrelations of length n is designed as follows: For each component a separate region is returned. The positions of all components in the image are represented by circles with a radius of 3 pixels. For each component other than the root component RootComponentRootComponentRootComponentRootComponentrootComponentroot_component, additionally the position relation and the orientation relation relative to the predecessor component in the search tree are represented. The position relation is represented by a rectangle, the orientation relation is represented by a circle sector with a radius of 30 pixels. The center of the circle is placed at the mean relative position of the component. The rectangle describes the movement of the reference point of the respective component relative to the pose of its predecessor component, the circle sector describes the variation of the relative orientation. A relative orientation of 0 corresponds to the relative orientation of both components in the model image.

In addition to the regions, the search tree as well as the associated relations are also returned in numerical form. The search tree is described by the two tuples StartNodeStartNodeStartNodeStartNodestartNodestart_node and EndNodeEndNodeEndNodeEndNodeendNodeend_node, both of length n, which contain the start and the end node of all arcs in the tree. The nodes contain the indices of the components. This means that during the search the component that is described by the end node is searched relative to the pose of the component that is described by the start node (predecessor component). Since the root component is not searched relative to any other component, and hence does not have a predecessor component, the associated start node is set to -1. The relations are returned in RowRowRowRowrowrow, ColumnColumnColumnColumncolumncolumn, PhiPhiPhiPhiphiphi, Length1Length1Length1Length1length1length_1, Length2Length2Length2Length2length2length_2, AngleStartAngleStartAngleStartAngleStartangleStartangle_start, and AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent. These parameters are tuples of length n, and contain the relations of all components relative to their associated predecessor component, where the order of the values within the tuples is determined by the index of the corresponding component. The position relation is described by the parameters of the corresponding rectangle RowRowRowRowrowrow, ColumnColumnColumnColumncolumncolumn, PhiPhiPhiPhiphiphi, Length1Length1Length1Length1length1length_1, and Length2Length2Length2Length2length2length_2 (see gen_rectangle2gen_rectangle2GenRectangle2GenRectangle2GenRectangle2gen_rectangle2). The orientation relation is described by the starting angle AngleStartAngleStartAngleStartAngleStartangleStartangle_start and the angle extent AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent.

For the root component as well as for components that do not have a predecessor in the current image or that have not been found in the current image, an empty region is returned and the corresponding values of the seven parameters are set to 0.

Execution Information

Parameters

TreeTreeTreeTreetreetree (output_object)  region objectHRegionHObjectHRegionHobject *

Search tree.

RelationsRelationsRelationsRelationsrelationsrelations (output_object)  region-array objectHRegionHObjectHRegionHobject *

Relations of components that are connected in the search tree.

ComponentModelIDComponentModelIDComponentModelIDComponentModelIDcomponentModelIDcomponent_model_id (input_control)  component_model HComponentModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle of the component model.

RootComponentRootComponentRootComponentRootComponentrootComponentroot_component (input_control)  integer(-array) HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Index of the root component.

Suggested values: 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)

Image for which the tree is to be returned.

Default value: 'model_image' "model_image" "model_image" "model_image" "model_image" "model_image"

Suggested values: '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)

Component index of the start node of an arc in the search tree.

EndNodeEndNodeEndNodeEndNodeendNodeend_node (output_control)  integer(-array) HTupleSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Component index of the end node of an arc in the search tree.

RowRowRowRowrowrow (output_control)  rectangle2.center.y(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Row coordinate of the center of the rectangle representing the relation.

ColumnColumnColumnColumncolumncolumn (output_control)  rectangle2.center.x(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Column index of the center of the rectangle representing the relation.

PhiPhiPhiPhiphiphi (output_control)  rectangle2.angle.rad(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Orientation of the rectangle representing the relation (radians).

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

Length1Length1Length1Length1length1length_1 (output_control)  rectangle2.hwidth(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

First radius (half length) of the rectangle representing the relation.

Assertion: Length1 >= 0.0

Length2Length2Length2Length2length2length_2 (output_control)  rectangle2.hheight(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Second radius (half width) of the rectangle representing the relation.

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

AngleStartAngleStartAngleStartAngleStartangleStartangle_start (output_control)  angle.rad(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Smallest relative orientation angle.

AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent (output_control)  angle.rad(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Extent of the relative orientation angle.

Example (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)

Result

If the parameters are valid, the operator get_component_model_treeget_component_model_treeGetComponentModelTreeGetComponentModelTreeGetComponentModelTreeget_component_model_tree returns the value TRUE. If necessary an exception is raised.

Possible Predecessors

create_trained_component_modelcreate_trained_component_modelCreateTrainedComponentModelCreateTrainedComponentModelCreateTrainedComponentModelcreate_trained_component_model, create_component_modelcreate_component_modelCreateComponentModelCreateComponentModelCreateComponentModelcreate_component_model

See also

train_model_componentstrain_model_componentsTrainModelComponentsTrainModelComponentsTrainModelComponentstrain_model_components

Module

Matching