cluster_model_components ( TrainingImages : ModelComponents : ComponentTrainingID, AmbiguityCriterion, MaxContourOverlap, ClusterThreshold : )

Adopt new parameters that are used to create the model components into the training result.

With cluster_model_components you can modify parameters after a first training has been performed using train_model_components. cluster_model_components sets the criterion AmbiguityCriterion that is used to solve the ambiguities, the maximum contour overlap MaxContourOverlap, and the cluster threshold of the training result ComponentTrainingID to the specified values. A detailed description of these parameters can be found in the documentation of train_model_components. By modifying these parameters, the way in which the initial components are merged into rigid model components changes. For example, the greater the cluster threshold is chosen, the fewer initial components are merged.

The rigid model components are returned in ModelComponents. In order to receive reasonable results, it is essential that the same training images that were used to perform the training with train_model_components are passed in TrainingImages. The pose of the newly clustered components within the training images is determined using the shape-based matching. As in train_model_components, one can decide whether the shape models should be pregenerated by using set_system('pregenerate_shape_models',...).

Thus, you can select suitable parameter values interactively by repeatedly calling inspect_clustered_components with different parameter values and then setting the chosen values by using get_training_components.


Parameters

TrainingImages (input_object)
image(-array) -> object : byte
Training images that were used for training the model components.

ModelComponents (output_object)
region(-array) -> object
Contour regions of rigid model components.

ComponentTrainingID (input_control)
component_training -> integer
Handle of the training result.

AmbiguityCriterion (input_control)
string -> string
Criterion for solving the ambiguities.
Default value: 'rigidity'
List of values: 'distance', 'orientation', 'distance_orientation', 'rigidity'

MaxContourOverlap (input_control)
real -> real
Maximum contour overlap of the found initial components.
Default value: 0.2
Suggested values: 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Minimum increment: 0.01
Recommended increment: 0.05
Restriction: (0 <= MaxContourOverlap) && (MaxContourOverlap <= 1)

ClusterThreshold (input_control)
real -> real
Threshold for clustering the initial components.
Default value: 0.5
Suggested values: 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0
Restriction: (0 <= ClusterThreshold) && (ClusterThreshold <= 1)


Example
* Get the model image.
read_image (ModelImage, 'model_image.tif')
* Define the regions for the initial components.
gen_rectangle2 (InitialComponentRegions, 212, 233, 0.62, 167, 29)
gen_rectangle2 (Rectangle2, 298, 363, 1.17, 162, 34)
gen_rectangle2 (Rectangle3, 63, 444, -0.26, 50, 27)
gen_rectangle2 (Rectangle4, 120, 473, 0, 33, 20)
InitialComponentRegions := [InitialComponentRegions,Rectangle2]
InitialComponentRegions := [InitialComponentRegions,Rectangle3]
InitialComponentRegions := [InitialComponentRegions,Rectangle4]
* Get the training images
TrainingImages := []
for i := 1 to 4 by 1
    read_image (TrainingImage, 'training_image-'+i$'02'+'.tif')
    TrainingImages := [TrainingImages,TrainingImage]
endfor
* Extract the model components and train the relations.
train_model_components (ModelImage, InitialComponentRegions, TrainingImages,
                        ModelComponents, 22, 60, 30, 0.65, 0, 0, rad(60),
                        'speed', 'rigidity', 0.2, 0.5, ComponentTrainingID)
* Find the best value for the parameter ClusterThreshold.
inspect_clustered_components (ModelComponents, ComponentTrainingID,
                              'rigidity', 0.2, 0.4)
* Adopt the ClusterThreshold into the training result.
cluster_model_components (TrainingImages, ModelComponents,
                          ComponentTrainingID, 'rigidity', 0.2, 0.4)
* Create the component model based on the training result.
create_trained_component_model (ComponentTrainingID, -rad(30), rad(60), 10,
                                0.5, 'auto', 'auto', 'none', 'use_polarity',
                                'false', ComponentModelID, RootRanking)

Result

If the parameter values are correct, the operator cluster_model_components returns the value 2 (H_MSG_TRUE). If the input is empty (no input images are available) the behavior can be set via set_system('no_object_result',<Result>). If necessary, an exception is raised.


Parallelization Information

cluster_model_components is processed completely exclusively without parallelization.


Possible Predecessors

train_model_components, inspect_clustered_components


Possible Successors

get_training_components, create_trained_component_model, modify_component_relations, write_training_components, get_component_relations, clear_training_components, clear_all_training_components


Module

Matching



Copyright © 1996-2008 MVTec Software GmbH