create_component_model ( ModelImage, ComponentRegions : : VariationRow, VariationColumn, VariationAngle, AngleStart, AngleExtent, ContrastLowComp, ContrastHighComp, MinSizeComp, MinContrastComp, MinScoreComp, NumLevelsComp, AngleStepComp, OptimizationComp, MetricComp, PregenerationComp : ComponentModelID, RootRanking )
Prepare a component model for matching based on explicitly specified
components and relations.
create_component_model prepares patterns, which are passed
in the form of a model image ModelImage and several regions
ComponentRegions, as a component model for matching. The
output parameter ComponentModelID is a handle for this
model, which is used in subsequent calls to
find_component_model. In contrast to
create_trained_component_model, no preceding training with
train_model_components needs to be performed before calling
create_component_model.
Each of the regions passed in ComponentRegions describes a
separate model component. Later, the index of a component region in
ComponentRegions is used to denote the model component.
The reference point of a component is the center of gravity of its
associated region, which is passed in ComponentRegions. It
can be calculated by calling area_center.
The relative movements (relations) of the model components can be
set by passing VariationRow, VariationColumn, and
VariationAngle. Because directly passing the relations is
complicated, instead of the relations the variations of the model
components are passed. The variations describe the movements of the
components independently from each other relative to their poses in
the model image ModelImage. The parameters
VariationRow and VariationColumn describe the
movement of the components in row and column direction by
±VariationRow/2 and
±VariationColumn/2, respectively.
The parameter VariationAngle describes the angle variation
of the component by
±VariationAngle/2. Based on
these values, the relations are automatically computed. The three
parameters must either contain one element, in which case the
parameter is used for all model components, or must contain the same
number of elements as ComponentRegions, in which case each
parameter element refers to the corresponding model component in
ComponentRegions.
The parameters AngleStart and AngleExtent
determine the range of possible rotations of the component model in
an image.
Internally, a separate shape model is built for each model component
(see create_shape_model). Therefore, the parameters
ContrastLowComp, ContrastHighComp,
MinSizeComp, MinContrastComp,
MinScoreComp, NumLevelsComp,
AngleStepComp, OptimizationComp,
MetricComp, and PregenerationComp correspond to
the parameters of create_shape_model, with the following
differences: First, in the parameter Contrast of
create_shape_model the upper as well as the lower threshold
for the hysteresis threshold method can be passed. Additionally, a
third value, which suppresses small connected contour regions, can
be passed. In contrast, the operator
create_trained_component_model offers three separate
parameters ContrastHighComp, ContrastLowComp, and
MinScoreComp in order to set these three
values. Consequently, also the automatic computation of the contrast
threshold(s) is different. If both hysteresis threshold should be
automatically determined, both ContrastLowComp and
ContrastHighComp must be set to 'auto'. In
contrast, if only one threshold value should be determined,
ContrastLowComp must be set to 'auto' while
ContrastHighComp must be set to an arbitrary value
different from 'auto'. Secondly, the parameter
Optimization of create_shape_model provides the
possibility to reduce the number of model points as well as the
possibility to completely pregenerate the shape model. In contrast,
the operator create_trained_component_model uses a separate
parameter PregenerationComp in order to decide whether the
shape models should be completely pregenerated or not. A third
difference concerning the parameter MinScoreComp should be
noted. When using the shape-based matching, this parameter needs not
be passed when preparing the shape model using
create_shape_model, but only during the search using
find_shape_model. In contrast, when preparing the component
model it is favorable to analyze rotational symmetries of the model
components and similarities between the model components. However,
this analysis only leads to meaningful results if the value for
MinScoreComp that is used during the search (see
find_component_model) is already approximately known.
In addition to the parameters ContrastLowComp,
ContrastHighComp, and MinSizeComp also the
parameters MinContrastComp, NumLevelsComp,
AngleStepComp, and OptimizationComp can be
automatically determined by passing 'auto' for the
respective parameters.
All component-specific input parameters (parameter names terminate
with the suffix Comp) must either contain one element, in
which case the parameter is used for all model components, or must
contain the same number of elements as the number of regions in
ComponentRegions, in which case each parameter element
refers to the corresponding element in ComponentRegions.
In addition to the individual shape models, the component model also
contains information about the way the single model components must
be searched relative to each other using
find_component_model in order to minimize the computation
time of the search. For this, the components are represented in a
tree structure. First, the component that stands at the root of this
search tree (root component) is searched. Then, the remaining
components are searched relative to the pose of their predecessor in
the search tree.
The root component can be passed as an input parameter of
find_component_model during the search. To what extent a model
component is suited to act as the root component depends on several factors.
In principle, a model component that can be found in the image with a high
probability should be chosen. Therefore, a component that is sometimes
occluded to a high degree or that is missing in some cases is not well suited
to act as the root component. Additionally, the computation time that is
associated with the root component during the search can serve as a
criterion. A ranking of the model components that is based on the latter
criterion is returned in RootRanking. In this parameter the indices
of the model components are sorted in descending order according to their
associated search time, i.e., RootRanking[0] contains the index of
the model component that, chosen as root component, allows the fastest
search. Note that the ranking returned in RootRanking represents
only a coarse estimation. Furthermore, the calculation of the root ranking
assumes that the image size is identical when calling
create_component_model and find_component_model.
Parameters
ModelImage (input_object)
|
image -> object : byte
|
|
Input image from which the shape models of the
model components should be created. |
ComponentRegions (input_object)
|
region-array -> object
|
|
Input regions from which the shape models of the
model components should be created. |
VariationRow (input_control)
|
integer(-array) -> integer
|
|
Variation of the model components in row direction. |
|
Suggested values: 0, 1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 100, 150 |
|
Restriction: VariationRow >= 0 |
VariationColumn (input_control)
|
integer(-array) -> integer
|
|
Variation of the model components in column direction. |
|
Suggested values: 0, 1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 100, 150 |
|
Restriction: VariationColumn >= 0 |
VariationAngle (input_control)
|
angle.rad(-array) -> real
|
|
Angle variation of the model components. |
|
Suggested values: 0, 0.017, 0, 035, 0.05, 0.07, 0.09, 0.17, 0.35, 0.52, 0.67, 0.87 |
|
Restriction: VariationAngle >= 0 |
AngleStart (input_control)
|
angle.rad -> real
|
|
Smallest rotation of the component model. |
|
Default value: -0.39 |
|
Suggested values: -3.14, -1.57, -0.79, -0.39, -0.20, 0.0 |
AngleExtent (input_control)
|
angle.rad -> real
|
|
Extent of the rotation of the component model. |
|
Default value: 0.79 |
|
Suggested values: 6.28, 3.14, 1.57, 0.79, 0.39 |
|
Restriction: AngleExtent >= 0 |
ContrastLowComp (input_control)
|
integer(-array) -> integer / string
|
|
Lower hysteresis threshold for the contrast of the
components in the model image. |
|
Default value: 'auto' |
|
Suggested values: 'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160 |
|
Restriction: ContrastLowComp > 0 |
ContrastHighComp (input_control)
|
integer(-array) -> integer / string
|
|
Upper hysteresis threshold for the contrast of the
components in the model image. |
|
Default value: 'auto' |
|
Suggested values: 'auto', 10, 20, 30, 40, 60, 80, 100, 120, 140, 160 |
|
Restriction: (ContrastHighComp > 0) && (ContrastHighComp >= ContrastLowComp) |
MinSizeComp (input_control)
|
integer(-array) -> integer / string
|
|
Minimum size of the contour regions in the model. |
|
Default value: 'auto' |
|
Suggested values: 'auto', 0, 5, 10, 20, 30, 40 |
|
Restriction: MinSizeComp >= 0 |
MinContrastComp (input_control)
|
integer(-array) -> integer / string
|
|
Minimum contrast of the components in the search
images. |
|
Default value: 'auto' |
|
Suggested values: 'auto', 10, 20, 20, 40 |
|
Restriction: (MinContrastComp <= ContrastLowComp) && (MinContrastComp >= 0) |
MinScoreComp (input_control)
|
real(-array) -> real
|
|
Minimum score of the instances of the components to
be found. |
|
Default value: 0.5 |
|
Suggested values: 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 <= MinScoreComp) && (MinScoreComp <= 1) |
NumLevelsComp (input_control)
|
integer(-array) -> integer / string
|
|
Maximum number of pyramid levels for the components. |
|
Default value: 'auto' |
|
List of values: 'auto', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |
AngleStepComp (input_control)
|
angle.rad(-array) -> real / string
|
|
Step length of the angles (resolution) for the
components. |
|
Default value: 'auto' |
|
Suggested values: 'auto', 0.0175, 0.0349, 0.0524, 0.0698, 0.0873 |
|
Restriction: AngleStepComp >= 0 |
OptimizationComp (input_control)
|
string -> string
|
|
Kind of optimization for the components. |
|
Default value: 'auto' |
|
List of values: 'auto', 'none', 'point_reduction_low', 'point_reduction_medium', 'point_reduction_high' |
MetricComp (input_control)
|
string(-array) -> string
|
|
Match metric used for the components. |
|
Default value: 'use_polarity' |
|
List of values: 'use_polarity', 'ignore_global_polarity', 'ignore_local_polarity' |
PregenerationComp (input_control)
|
string(-array) -> string
|
|
Complete pregeneration of the shape models for the
components if equal to 'true'. |
|
Default value: 'false' |
|
List of values: 'true', 'false' |
ComponentModelID (output_control)
|
component_model -> integer
|
|
Handle of the component model. |
RootRanking (output_control)
|
integer(-array) -> integer
|
|
Ranking of the model components expressing the
suitability to act as the root component. |
Example
* 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)
ComponentRegions := [ComponentRegions,Rectangle2]
ComponentRegions := [ComponentRegions,Rectangle3]
* Create the component model by explicitly specifying the relations.
create_component_model (ModelImage, ComponentRegions, 20, 20, rad(25), 0,
rad(360), 15, 40, 15, 10, 0.8, 'auto', 'auto',
'none', 'use_polarity', 'false', ComponentModelID,
RootRanking)
* Find the component model in a run-time image.
read_image (SearchImage, 'search_image.tif')
find_component_model (SearchImage, ComponentModelID, RootRanking, 0,
rad(360), 0.5, 0, 0.5, 'stop_search',
'search_from_best', 'none', 0.8, 'least_squares', 0,
0.8, ModelStart, ModelEnd, Score, RowComp, ColumnComp,
AngleComp, ScoreComp, ModelComp)
Result
If the parameters are valid, the operator
create_component_model returns the value 2 (H_MSG_TRUE). If
necessary an exception is raised.
Parallelization Information
create_component_model is processed completely exclusively without parallelization.
Possible Predecessors
draw_region,
concat_obj
Possible Successors
find_component_model
Alternatives
create_trained_component_model
See also
create_shape_model,
find_shape_model
Module
Matching
Copyright © 1996-2008 MVTec Software GmbH