set_local_deformable_model_metricT_set_local_deformable_model_metricSetLocalDeformableModelMetricSetLocalDeformableModelMetric (Operator)


set_local_deformable_model_metricT_set_local_deformable_model_metricSetLocalDeformableModelMetricSetLocalDeformableModelMetric — Set the metric of a local deformable model that was created from XLD contours.


set_local_deformable_model_metric(Image, VectorField : : ModelID, Metric : )

Herror T_set_local_deformable_model_metric(const Hobject Image, const Hobject VectorField, const Htuple ModelID, const Htuple Metric)

void SetLocalDeformableModelMetric(const HObject& Image, const HObject& VectorField, const HTuple& ModelID, const HTuple& Metric)

void HDeformableModel::SetLocalDeformableModelMetric(const HImage& Image, const HImage& VectorField, const HString& Metric) const

void HDeformableModel::SetLocalDeformableModelMetric(const HImage& Image, const HImage& VectorField, const char* Metric) const

void HDeformableModel::SetLocalDeformableModelMetric(const HImage& Image, const HImage& VectorField, const wchar_t* Metric) const   (Windows only)

void HImage::SetLocalDeformableModelMetric(const HImage& VectorField, const HDeformableModel& ModelID, const HString& Metric) const

void HImage::SetLocalDeformableModelMetric(const HImage& VectorField, const HDeformableModel& ModelID, const char* Metric) const

void HImage::SetLocalDeformableModelMetric(const HImage& VectorField, const HDeformableModel& ModelID, const wchar_t* Metric) const   (Windows only)

static void HOperatorSet.SetLocalDeformableModelMetric(HObject image, HObject vectorField, HTuple modelID, HTuple metric)

void HDeformableModel.SetLocalDeformableModelMetric(HImage image, HImage vectorField, string metric)

void HImage.SetLocalDeformableModelMetric(HImage vectorField, HDeformableModel modelID, string metric)


set_planar_uncalib_deformable_model_metricset_planar_uncalib_deformable_model_metricSetPlanarUncalibDeformableModelMetricSetPlanarUncalibDeformableModelMetricSetPlanarUncalibDeformableModelMetric changes the value of the parameter MetricMetricMetricMetricmetric that was selected during the creation of the deformable model ModelIDModelIDModelIDModelIDmodelID from XLD contours. Because no information about the polarity of the model contours is available for XLD contours, the polarity is determined based on a representative ImageImageImageImageimage. For this, the model contours are mapped to the respective position where the object appears in the ImageImageImageImageimage, which is done with the VectorFieldVectorFieldVectorFieldVectorFieldvectorField which must be of the semantic type 'vector_field_absolute' and which can be obtained by a previous call to find_local_deformable_modelfind_local_deformable_modelFindLocalDeformableModelFindLocalDeformableModelFindLocalDeformableModel. Here, the returned VectorFieldVectorFieldVectorFieldVectorFieldvectorField is used for the deformable transformation. Note, that the 'expand_border' option should not be used in find_local_deformable_modelfind_local_deformable_modelFindLocalDeformableModelFindLocalDeformableModelFindLocalDeformableModel, because then the returned VectorFieldVectorFieldVectorFieldVectorFieldvectorField has the wrong image size.

The parameter MetricMetricMetricMetricmetric then determines the conditions under which the model is recognized later in the search image. If MetricMetricMetricMetricmetric = 'use_polarity'"use_polarity""use_polarity""use_polarity""use_polarity", the object in the image and the model must have the same contrast. If, e.g., the model is a bright object on a dark background, the object is found only if it is also brighter than the background. If MetricMetricMetricMetricmetric = 'ignore_global_polarity'"ignore_global_polarity""ignore_global_polarity""ignore_global_polarity""ignore_global_polarity", the object is found in the image also if the contrast reverses globally. In the above example, the object hence is also found if it is darker than the background. The runtime of find_local_deformable_modelfind_local_deformable_modelFindLocalDeformableModelFindLocalDeformableModelFindLocalDeformableModel will increase slightly in this case.

It must be ensured that the object contours in the ImageImageImageImageimage have the same (or inverse) polarity as the object contours in the image in which the object must be searched later. Especially, the object must not be occluded in the ImageImageImageImageimage and the background must be either brighter than the object or darker. Otherwise, the determined polarity of the model contour will not represent the polarity of the object contour during the search. Note that only the polarity of the contours is determined, not their contrast. Note also that the polarity is determined from a single-channel image, only. If a multi-channel image is passed in ImageImageImageImageimage, only the first channel will be used (and no error message will be returned).

A typical proceeding is to read the XLD contours from file. Since these XLD contours do not provide polarity information, the model must be created from the XLD contours by setting the parameter MetricMetricMetricMetricmetric to 'ignore_local_polarity'"ignore_local_polarity""ignore_local_polarity""ignore_local_polarity""ignore_local_polarity". Then, in a first search image the model is recognized. The transformation that maps the model contours to the position of the object in the search image is provided in VectorFieldVectorFieldVectorFieldVectorFieldvectorField, which is of the semantic type 'vector_field_absolute'. If the matching result is correct, the value of the parameter MetricMetricMetricMetricmetric can be changed, e.g., to 'use_polarity'"use_polarity""use_polarity""use_polarity""use_polarity". This leads to a faster and more robust recognition in the following images.


set_local_deformable_model_metricset_local_deformable_model_metricSetLocalDeformableModelMetricSetLocalDeformableModelMetricSetLocalDeformableModelMetric can only be used with deformable models that were created from XLD contours.

Execution Information

This operator modifies the state of the following input parameter:

During execution of this operator, access to the value of this parameter must be synchronized if it is used across multiple threads.


ImageImageImageImageimage (input_object)  singlechannelimage objectHImageHImageHobject (byte / uint2)

Input image used for the determination of the polarity.

VectorFieldVectorFieldVectorFieldVectorFieldvectorField (input_object)  singlechannelimage objectHImageHImageHobject (vector_field)

Vector field of the local deformation.

ModelIDModelIDModelIDModelIDmodelID (input_control, state is modified)  deformable_model HDeformableModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle of the model.

MetricMetricMetricMetricmetric (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Match metric.

Default value: 'use_polarity' "use_polarity" "use_polarity" "use_polarity" "use_polarity"

List of values: 'ignore_global_polarity'"ignore_global_polarity""ignore_global_polarity""ignore_global_polarity""ignore_global_polarity", 'use_polarity'"use_polarity""use_polarity""use_polarity""use_polarity"


If the parameters are valid, the operator set_local_deformable_model_metricset_local_deformable_model_metricSetLocalDeformableModelMetricSetLocalDeformableModelMetricSetLocalDeformableModelMetric returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.

Possible Predecessors

create_local_deformable_model_xldcreate_local_deformable_model_xldCreateLocalDeformableModelXldCreateLocalDeformableModelXldCreateLocalDeformableModelXld, find_local_deformable_modelfind_local_deformable_modelFindLocalDeformableModelFindLocalDeformableModelFindLocalDeformableModel

Possible Successors


See also