HALCON Reference Manual 10.0.2
Table of Contents / Matching / Gray-Value-Based ClassesClassesClasses | | | Operators

best_matchbest_matchbest_matchBestMatchBestMatch (Operator)

Name

best_matchbest_matchbest_matchBestMatchBestMatch — Searching the best matching of a template and an image.

Signature

best_match(Image : : TemplateID, MaxError, SubPixel : Row, Column, Error)

Herror best_match(const Hobject Image, const Hlong TemplateID, double MaxError, const char* SubPixel, double* Row, double* Column, double* Error)

Herror T_best_match(const Hobject Image, const Htuple TemplateID, const Htuple MaxError, const Htuple SubPixel, Htuple* Row, Htuple* Column, Htuple* Error)

Herror best_match(Hobject Image, const HTuple& TemplateID, const HTuple& MaxError, const HTuple& SubPixel, double* Row, double* Column, double* Error)

Herror best_match(Hobject Image, const HTuple& TemplateID, const HTuple& MaxError, const HTuple& SubPixel, HTuple* Row, HTuple* Column, HTuple* Error)

double HImage::BestMatch(const HTemplate& TemplateID, const HTuple& MaxError, const HTuple& SubPixel, double* Column, double* Error) const

HTuple HImageArray::BestMatch(const HTemplate& TemplateID, const HTuple& MaxError, const HTuple& SubPixel, HTuple* Column, HTuple* Error) const

HTuple HTemplate::BestMatch(const HImageArray& Image, const HTuple& MaxError, const HTuple& SubPixel, HTuple* Column, HTuple* Error) const

void HOperatorSetX.BestMatch(
[in] IHUntypedObjectX* Image, [in] VARIANT TemplateID, [in] VARIANT MaxError, [in] VARIANT SubPixel, [out] VARIANT* Row, [out] VARIANT* Column, [out] VARIANT* Error)

VARIANT HTemplateX.BestMatch(
[in] IHImageX* Image, [in] double MaxError, [in] BSTR SubPixel, [out] VARIANT* Column, [out] VARIANT* Error)

VARIANT HImageX.BestMatch(
[in] IHTemplateX* TemplateID, [in] double MaxError, [in] BSTR SubPixel, [out] VARIANT* Column, [out] VARIANT* Error)

static void HOperatorSet.BestMatch(HObject image, HTuple templateID, HTuple maxError, HTuple subPixel, out HTuple row, out HTuple column, out HTuple error)

void HTemplate.BestMatch(HImage image, double maxError, string subPixel, out HTuple row, out HTuple column, out HTuple error)

void HTemplate.BestMatch(HImage image, double maxError, string subPixel, out double row, out double column, out double error)

void HImage.BestMatch(HTemplate templateID, double maxError, string subPixel, out HTuple row, out HTuple column, out HTuple error)

void HImage.BestMatch(HTemplate templateID, double maxError, string subPixel, out double row, out double column, out double error)

Description

The operator best_matchbest_matchbest_matchBestMatchBestMatch performs a matching of the template of TemplateIDTemplateIDTemplateIDTemplateIDtemplateID and ImageImageImageImageimage. Hereby the template will be moved over the points of ImageImageImageImageimage so that the template will lie always inside ImageImageImageImageimage. best_matchbest_matchbest_matchBestMatchBestMatch works similar to fast_matchfast_matchfast_matchFastMatchFastMatch, with the exception, that each time a better match is found the value of MaxErrorMaxErrorMaxErrorMaxErrormaxError is internally updated to a lower value to reduce runtime.

With regard to the parameter SubPixelSubPixelSubPixelSubPixelsubPixel, the position will be indicated by subpixel accuracy. The matching criterion (“displaced frame difference”) is defined as follows:


                   SUMu,v {ABS { Image[row-u,col-v] - Template[u,v] }}
error[row,col] =  -----------------------------------------------------,
                                    AREA ( Template )

The runtime of the operator depends on the size of the domain of ImageImageImageImageimage. Therefore it is important to restrict the domain as far as possible, i.e. to apply the operator only in a very confined “region of interest”. The parameter MaxErrorMaxErrorMaxErrorMaxErrormaxError determines the maximal error which the searched position is allowed to have at most. The lower this value is, the faster the operator runs.

RowRowRowRowrow and ColumnColumnColumnColumncolumn return the position of the best match, whereby ErrorErrorErrorErrorerror indicates the average difference of the grayvalues. If no position with an error below MaxErrorMaxErrorMaxErrorMaxErrormaxError was found the position (0,0) and a matching result of 255 for ErrorErrorErrorErrorerror are returned. In this case MaxErrorMaxErrorMaxErrorMaxErrormaxError has to be set larger.

The maximum error of the position (without noise) is 0.1 pixel. The average error is 0.03 pixel.

Parallelization

Parameters

ImageImageImageImageimage (input_object)  image(-array) objectHImageHImageHImageXHobject (byte)

Input image inside of which the pattern has to be found.

TemplateIDTemplateIDTemplateIDTemplateIDtemplateID (input_control)  template HTemplate, HTupleHTemplate, HTupleHTemplateX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong)

Template number.

MaxErrorMaxErrorMaxErrorMaxErrormaxError (input_control)  real HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Maximum average difference of the grayvalues.

Default value: 20.0

Suggested values: 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 9.0, 11.0, 15.0, 17.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0

Typical range of values: 0 ≤ MaxError MaxError MaxError MaxError maxError ≤ 255

Minimum increment: 1

Recommended increment: 3

SubPixelSubPixelSubPixelSubPixelsubPixel (input_control)  string HTupleHTupleVARIANTHtuple (string) (string) (char*) (BSTR) (char*)

Subpixel accuracy in case of 'true'"true""true""true""true".

Default value: 'false' "false" "false" "false" "false"

List of values: 'true'"true""true""true""true", 'false'"false""false""false""false"

RowRowRowRowrow (output_control)  point.y(-array) HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Row position of the best match.

ColumnColumnColumnColumncolumn (output_control)  point.x(-array) HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Column position of the best match.

ErrorErrorErrorErrorerror (output_control)  real(-array) HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Average divergence of the grayvalues of the best match.

Result

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

Possible Predecessors

create_templatecreate_templatecreate_templateCreateTemplateCreateTemplate, read_templateread_templateread_templateReadTemplateReadTemplate, set_offset_templateset_offset_templateset_offset_templateSetOffsetTemplateSetOffsetTemplate, set_reference_templateset_reference_templateset_reference_templateSetReferenceTemplateSetReferenceTemplate, adapt_templateadapt_templateadapt_templateAdaptTemplateAdaptTemplate, draw_regiondraw_regiondraw_regionDrawRegionDrawRegion, draw_rectangle1draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1, reduce_domainreduce_domainreduce_domainReduceDomainReduceDomain

Alternatives

fast_matchfast_matchfast_matchFastMatchFastMatch, fast_match_mgfast_match_mgfast_match_mgFastMatchMgFastMatchMg, best_match_mgbest_match_mgbest_match_mgBestMatchMgBestMatchMg, best_match_pre_mgbest_match_pre_mgbest_match_pre_mgBestMatchPreMgBestMatchPreMg, best_match_rotbest_match_rotbest_match_rotBestMatchRotBestMatchRot, best_match_rot_mgbest_match_rot_mgbest_match_rot_mgBestMatchRotMgBestMatchRotMg, exhaustive_matchexhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatch, exhaustive_match_mgexhaustive_match_mgexhaustive_match_mgExhaustiveMatchMgExhaustiveMatchMg

Module

Matching


Table of Contents / Matching / Gray-Value-Based ClassesClassesClasses | | | Operators
HALCON Reference Manual 10.0.2 Copyright © 1996-2011 MVTec Software GmbH