Skip to content

compare_ext_variation_modelCompareExtVariationModelCompareExtVariationModelcompare_ext_variation_modelT_compare_ext_variation_model🔗

Short description🔗

compare_ext_variation_modelCompareExtVariationModelCompareExtVariationModelcompare_ext_variation_modelT_compare_ext_variation_model — Compare an image to a variation model.

Signature🔗

compare_ext_variation_model( image Image, out region Region, variation_model ModelID, string Mode )void CompareExtVariationModel( const HObject& Image, HObject* Region, const HTuple& ModelID, const HTuple& Mode )static void HOperatorSet.CompareExtVariationModel( HObject image, out HObject region, HTuple modelID, HTuple mode )def compare_ext_variation_model( image: HObject, model_id: HHandle, mode: str ) -> HObject

Herror T_compare_ext_variation_model( const Hobject Image, Hobject* Region, const Htuple ModelID, const Htuple Mode )

HRegion HVariationModel::CompareExtVariationModel( const HImage& Image, const HString& Mode ) const

HRegion HVariationModel::CompareExtVariationModel( const HImage& Image, const char* Mode ) const

HRegion HVariationModel::CompareExtVariationModel( const HImage& Image, const wchar_t* Mode ) const (Windows only)

HRegion HImage::CompareExtVariationModel( const HVariationModel& ModelID, const HString& Mode ) const

HRegion HImage::CompareExtVariationModel( const HVariationModel& ModelID, const char* Mode ) const

HRegion HImage::CompareExtVariationModel( const HVariationModel& ModelID, const wchar_t* Mode ) const (Windows only)

HRegion HVariationModel.CompareExtVariationModel( HImage image, string mode )

HRegion HImage.CompareExtVariationModel( HVariationModel modelID, string mode )

Description🔗

compare_ext_variation_modelCompareExtVariationModel compares the input image Imageimageimage to the variation model given by ModelIDmodelIDmodel_id. compare_ext_variation_modelCompareExtVariationModel is an extension of compare_variation_modelCompareVariationModel that provides more modes for the image comparison. Before compare_ext_variation_modelCompareExtVariationModel can be called, the two internal threshold images of the variation model must have been created with prepare_variation_modelPrepareVariationModel or prepare_direct_variation_modelPrepareDirectVariationModel. Let c(x,y) denote the input image Imageimageimage and \(t_{u,l}\) denote the two threshold images (see prepare_variation_modelPrepareVariationModel or prepare_direct_variation_modelPrepareDirectVariationModel). Then, for Modemodemode \(=\) 'absolute'"absolute" the output region Regionregionregion contains all points that differ substantially from the model, i.e., the points that fulfill the following condition:

\[\begin{eqnarray*} c(x,y) > t_{u}(x,y) \lor c(x,y) < t_{l}(x,y) \enspace . \end{eqnarray*}\]

This mode is identical to compare_variation_modelCompareVariationModel. For Modemodemode \(=\) 'light'"light", Regionregionregion contains all points that are too bright:

\[\begin{eqnarray*} c(x,y) > t_{u}(x,y) \enspace . \end{eqnarray*}\]

For Modemodemode \(=\) 'dark'"dark", Regionregionregion contains all points that are too dark:

\[\begin{eqnarray*} c(x,y) < t_{l}(x,y) \enspace . \end{eqnarray*}\]

Finally, for Modemodemode \(=\) 'light_dark'"light_dark" two regions are returned in Regionregionregion. The first region contains the result of Modemodemode \(=\) 'light'"light", while the second region contains the result of Modemodemode \(=\) 'dark'"dark". The respective regions can be selected with select_objSelectObj.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Automatically parallelized on tuple level.

  • Automatically parallelized on domain level.

Parameters🔗

Imageimageimage (input_object) singlechannelimage(-array) → object (byte / int2 / uint2)HObject (byte / int2 / uint2)HImage (byte / int2 / uint2)HObject (byte / int2 / uint2)Hobject (byte / int2 / uint2)

Image of the object to be compared.

Regionregionregion (output_object) region(-array) → objectHObjectHRegionHObjectHobject *

Region containing the points that differ substantially from the model.

ModelIDmodelIDmodel_id (input_control) variation_model → (handle)HTuple (HHandle)HVariationModel, HTuple (IntPtr)HHandleHtuple (handle)

ID of the variation model.

Modemodemode (input_control) string → (string)HTuple (HString)HTuple (string)strHtuple (char*)

Method used for comparing the variation model.

Default: 'absolute'"absolute"
Suggested values: 'absolute', 'light', 'dark', 'light_dark'"absolute", "light", "dark", "light_dark"

Example🔗

(HDevelop)

read_shape_model ('model.shm', TemplateID)
read_variation_model ('model.var', ModelID)
for K := 1 to 10 by 1
    read_image (Image, 'pen-' + K$'02')
    find_generic_shape_model (Image, TemplateID, MatchResultID, \
                              NumMatchResult)
    get_generic_shape_model_result (MatchResultID, 'all', 'hom_mat_2d', \
                                    HomMat2D)
    dev_display (Image)
    if (NumMatchResult == 1)
        affine_trans_image (Image, ImageTrans, HomMat2D, 'constant', \
                            'false')
        compare_ext_variation_model (ImageTrans, RegionDiff, ModelID, \
                                     'absolute')
        dev_display (RegionDiff)
    endif
endfor

Result🔗

compare_ext_variation_modelCompareExtVariationModel returns 2 (H_MSG_TRUE) if all parameters are correct and if the internal threshold images have been generated with prepare_variation_modelPrepareVariationModel or prepare_direct_variation_modelPrepareDirectVariationModel.

Combinations with other operators🔗

Combinations

Possible predecessors

prepare_variation_modelPrepareVariationModel, prepare_direct_variation_modelPrepareDirectVariationModel

Possible successors

select_objSelectObj, connectionConnection

Alternatives

compare_variation_modelCompareVariationModel, dyn_thresholdDynThreshold

See also

get_thresh_images_variation_modelGetThreshImagesVariationModel

Module🔗

Matching