fast_matchT_fast_matchFastMatchFastMatch (Operator)


fast_matchT_fast_matchFastMatchFastMatch — Searching all good matches of a template and an image.


fast_matchfast_matchFastMatchFastMatchFastMatch is obsolete and is only provided for reasons of backward compatibility. New applications should use the shape-based or NCC-based operators instead.


fast_match(Image : Matches : TemplateID, MaxError : )

Herror T_fast_match(const Hobject Image, Hobject* Matches, const Htuple TemplateID, const Htuple MaxError)

void FastMatch(const HObject& Image, HObject* Matches, const HTuple& TemplateID, const HTuple& MaxError)

HRegion HTemplate::FastMatch(const HImage& Image, double MaxError) const

HRegion HImage::FastMatch(const HTemplate& TemplateID, double MaxError) const

static void HOperatorSet.FastMatch(HObject image, out HObject matches, HTuple templateID, HTuple maxError)

HRegion HTemplate.FastMatch(HImage image, double maxError)

HRegion HImage.FastMatch(HTemplate templateID, double maxError)


The operator fast_matchfast_matchFastMatchFastMatchFastMatch 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 always lies completely inside of ImageImageImageImageimage. The matching criterion (“displaced frame difference”) is defined as follows: The difference between fast_matchfast_matchFastMatchFastMatchFastMatch and exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatchExhaustiveMatch is that the matching for one position is stopped if the error is to high. This leads to a reduced runtime but one might miss correct matches. The runtime of the operator depends mainly 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 show. The lower this value is, the faster the operator runs.

All points which show a matching error smaller than MaxErrorMaxErrorMaxErrorMaxErrormaxError will be returned in the output region MatchesMatchesMatchesMatchesmatches. This region can be used for further processing. For example by using a connection and best_matchbest_matchBestMatchBestMatchBestMatch to find all the matching objects. If no point has a match error below MaxErrorMaxErrorMaxErrorMaxErrormaxError the empty region (i.e no points) is returned.

Execution Information


ImageImageImageImageimage (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte)

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

MatchesMatchesMatchesMatchesmatches (output_object)  region(-array) objectHRegionHRegionHobject *

All points whose error lies below a certain threshold.

TemplateIDTemplateIDTemplateIDTemplateIDtemplateID (input_control)  template HTemplate, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Template number.

MaxErrorMaxErrorMaxErrorMaxErrormaxError (input_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Maximal 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

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

Minimum increment: 1

Recommended increment: 1


If the parameter values are correct, the operator fast_matchfast_matchFastMatchFastMatchFastMatch 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>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>). If necessary, an exception is raised.

Possible Predecessors

create_templatecreate_templateCreateTemplateCreateTemplateCreateTemplate, read_templateread_templateReadTemplateReadTemplateReadTemplate, adapt_templateadapt_templateAdaptTemplateAdaptTemplateAdaptTemplate, draw_regiondraw_regionDrawRegionDrawRegionDrawRegion, draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain

Possible Successors

connectionconnectionConnectionConnectionConnection, best_matchbest_matchBestMatchBestMatchBestMatch


best_matchbest_matchBestMatchBestMatchBestMatch, best_match_mgbest_match_mgBestMatchMgBestMatchMgBestMatchMg, fast_match_mgfast_match_mgFastMatchMgFastMatchMgFastMatchMg, exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatchExhaustiveMatch, exhaustive_match_mgexhaustive_match_mgExhaustiveMatchMgExhaustiveMatchMgExhaustiveMatchMg