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

best_match_mgbest_match_mgbest_match_mgBestMatchMgBestMatchMg (Operator)

Name

best_match_mgbest_match_mgbest_match_mgBestMatchMgBestMatchMg — Searching the best grayvalue matches in a pyramid.

Signature

best_match_mg(Image : : TemplateID, MaxError, SubPixel, NumLevels, WhichLevels : Row, Column, Error)

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

Herror T_best_match_mg(const Hobject Image, const Htuple TemplateID, const Htuple MaxError, const Htuple SubPixel, const Htuple NumLevels, const Htuple WhichLevels, Htuple* Row, Htuple* Column, Htuple* Error)

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

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

double HImageArray::BestMatchMg(const HTemplate& TemplateID, const HTuple& MaxError, const HTuple& SubPixel, const HTuple& NumLevels, const HTuple& WhichLevels, HTuple* Column, HTuple* Error) const

double HTemplate::BestMatchMg(const HImageArray& Image, const HTuple& MaxError, const HTuple& SubPixel, const HTuple& NumLevels, const HTuple& WhichLevels, HTuple* Column, HTuple* Error) const

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

double HTemplateX.BestMatchMg(
[in] IHImageX* Image, [in] double MaxError, [in] BSTR SubPixel, [in] Hlong NumLevels, [in] VARIANT WhichLevels, [out] double* Column, [out] double* Error)

double HImageX.BestMatchMg(
[in] IHTemplateX* TemplateID, [in] double MaxError, [in] BSTR SubPixel, [in] Hlong NumLevels, [in] VARIANT WhichLevels, [out] double* Column, [out] double* Error)

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

void HTemplate.BestMatchMg(HImage image, double maxError, string subPixel, int numLevels, HTuple whichLevels, out double row, out double column, out double error)

void HTemplate.BestMatchMg(HImage image, double maxError, string subPixel, int numLevels, int whichLevels, out double row, out double column, out double error)

void HImage.BestMatchMg(HTemplate templateID, double maxError, string subPixel, int numLevels, HTuple whichLevels, out double row, out double column, out double error)

void HImage.BestMatchMg(HTemplate templateID, double maxError, string subPixel, int numLevels, int whichLevels, out double row, out double column, out double error)

Description

best_match_mgbest_match_mgbest_match_mgBestMatchMgBestMatchMg applies gray value matching using an image pyramid. best_match_mgbest_match_mgbest_match_mgBestMatchMgBestMatchMg works analogously to best_matchbest_matchbest_matchBestMatchBestMatch, but it is faster due to the use of a pyramid. Input is an image with an optionally reduced domain. The parameter MaxErrorMaxErrorMaxErrorMaxErrormaxError specifies the maximum error for template matching. Using smaller values results in a reduced runtime but it is possible that the pattern might be missed. The value of MaxErrorMaxErrorMaxErrorMaxErrormaxError has to set larger compared with best_matchbest_matchbest_matchBestMatchBestMatch, because the error is at higher levels of the pyramid often increased.

SubPixelSubPixelSubPixelSubPixelsubPixel specifies if the result is calculated with sub pixel accuracy or not. A value of 1 for NumLevelsNumLevelsNumLevelsNumLevelsnumLevels results in an operator similar to best_matchbest_matchbest_matchBestMatchBestMatch, i.e. only the original gray values are used. For values larger than 1, the algorithm starts at the lowest resultion and searches for a position with the lowest matching error. At the next higher resolution this position is refined. This is continued up to the maximum resolution (WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels = 'all'"all""all""all""all"). As an alternative Method the mode WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels with value 'original'"original""original""original""original" can be used. In this case not only the position with the lowest error but all points below MaxErrorMaxErrorMaxErrorMaxErrormaxError are analysed further on in the next higher resolution. This method is slower but it is more stable and the possibilty to miss the correct position is very low. In this case it is often possible to start with a lower resolution (higher level in Pyramid, i.e. larger value for NumLevelsNumLevelsNumLevelsNumLevelsnumLevels) which leads to a reduced runtime. Besides the values 'all'"all""all""all""all" and 'original'"original""original""original""original" for WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels you can specify the pyramid level explicitly where to switch between a “match all” and the ”best match”. Here 0 corresponds to 'original'"original""original""original""original" and NumLevelsNumLevelsNumLevelsNumLevelsnumLevels - 1 is equivalent to 'all'"all""all""all""all". A value in between is in most cases a good compromise between speed and a stable detection. A larger value for WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels results in a reduced runtime, a smaller value results in a more stable detection. The value of NumLevelsNumLevelsNumLevelsNumLevelsnumLevels has to equal or smaller than the value used to create the template.

The position of the found matching position is returned in RowRowRowRowrow and ColumnColumnColumnColumncolumn. The corresponding error is given in ErrorErrorErrorErrorerror. If no point below MaxErrorMaxErrorMaxErrorMaxErrormaxError is found a value of 255 for ErrorErrorErrorErrorerror and 0 for RowRowRowRowrow and ColumnColumnColumnColumncolumn is returned. If the desired object is missed (no object found or wrong position) you have to set MaxErrorMaxErrorMaxErrorMaxErrormaxError higher or WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels lower. Check also if the illumination has changed (see set_offset_templateset_offset_templateset_offset_templateSetOffsetTemplateSetOffsetTemplate).

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)

Maximal average difference of the grayvalues.

Default value: 30.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*)

Exactness in subpixels 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"

NumLevelsNumLevelsNumLevelsNumLevelsnumLevels (input_control)  integer HTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong)

Number of the used resolution levels.

Default value: 4

List of values: 1, 2, 3, 4, 5, 6

WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels (input_control)  integer HTupleHTupleVARIANTHtuple (integer / string) (int / long / string) (Hlong / char*) (Hlong / BSTR) (Hlong / char*)

Resolution level up to which the method “best match” is used.

Default value: 2

Suggested values: 'all'"all""all""all""all", 'original'"original""original""original""original", 0, 1, 2, 3, 4, 5, 6

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

Row position of the best match.

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

Column position of the best match.

ErrorErrorErrorErrorerror (output_control)  real HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)

Average divergence of the grayvalues in the best match.

Result

If the parameter values are correct, the operator best_match_mgbest_match_mgbest_match_mgBestMatchMgBestMatchMg 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, adapt_templateadapt_templateadapt_templateAdaptTemplateAdaptTemplate, draw_regiondraw_regiondraw_regionDrawRegionDrawRegion, draw_rectangle1draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1, reduce_domainreduce_domainreduce_domainReduceDomainReduceDomain, set_reference_templateset_reference_templateset_reference_templateSetReferenceTemplateSetReferenceTemplate, set_offset_templateset_offset_templateset_offset_templateSetOffsetTemplateSetOffsetTemplate

Alternatives

fast_matchfast_matchfast_matchFastMatchFastMatch, fast_match_mgfast_match_mgfast_match_mgFastMatchMgFastMatchMg, best_matchbest_matchbest_matchBestMatchBestMatch, 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