best_matchT_best_matchBestMatchBestMatchbest_match (Operator)

Name

best_matchT_best_matchBestMatchBestMatchbest_match — Suche des besten Matching zwischen einem Template und einem Bild.

Warnung

best_matchbest_matchBestMatchBestMatchBestMatchbest_match ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt. Neue Applikationen sollten stattdessen die Form-basierten oder NCC-basierten Operatoren verwenden.

Signatur

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

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

void BestMatch(const HObject& Image, const HTuple& TemplateID, const HTuple& MaxError, const HTuple& SubPixel, HTuple* Row, HTuple* Column, HTuple* Error)

void HTemplate::BestMatch(const HImage& Image, double MaxError, const HString& SubPixel, HTuple* Row, HTuple* Column, HTuple* Error) const

void HTemplate::BestMatch(const HImage& Image, double MaxError, const HString& SubPixel, double* Row, double* Column, double* Error) const

void HTemplate::BestMatch(const HImage& Image, double MaxError, const char* SubPixel, double* Row, double* Column, double* Error) const

void HTemplate::BestMatch(const HImage& Image, double MaxError, const wchar_t* SubPixel, double* Row, double* Column, double* Error) const   (Nur Windows)

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

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

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

void HImage::BestMatch(const HTemplate& TemplateID, double MaxError, const wchar_t* SubPixel, double* Row, double* Column, double* Error) const   (Nur Windows)

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)

def best_match(image: HObject, template_id: HHandle, max_error: float, sub_pixel: str) -> Tuple[Sequence[float], Sequence[float], Sequence[float]]

def best_match_s(image: HObject, template_id: HHandle, max_error: float, sub_pixel: str) -> Tuple[float, float, float]

Beschreibung

best_matchbest_matchBestMatchBestMatchBestMatchbest_match führt ein Matching zwischen dem Template von TemplateIDTemplateIDTemplateIDTemplateIDtemplateIDtemplate_id und ImageImageImageImageimageimage durch. Dabei wird das Template so über die Punkte von ImageImageImageImageimageimage geschoben, dass es immer vollständig innerhalb von ImageImageImageImageimageimage liegt. best_matchbest_matchBestMatchBestMatchBestMatchbest_match arbeitet ähnlich wie fast_matchfast_matchFastMatchFastMatchFastMatchfast_match mit der Erweiterung, dass jedes mal wenn eine Position mit einem geringeren Matching-Fehler gefunden wurde, der Parameter MaxErrorMaxErrorMaxErrorMaxErrormaxErrormax_error intern entsprechend angepasst (d.h. verkleinert) wird, um die Rechenzeit zu verkürzen. Abhängig vom Parameter SubPixelSubPixelSubPixelSubPixelsubPixelsub_pixel wird die Position in Subpixelgenauigkeit ausgegeben. Das Matching-Kriterium („displaced frame difference“) ist wie folgt definiert: Die Laufzeit des Verfahrens hängt von der Größe des Definitionsbereiches von ImageImageImageImageimageimage ab. Es ist daher wichtig, den Definitionsbereich möglichst einzugrenzen, d.h. den Operator nur in einer möglichst eng umrissenen „region of interest“ anzuwenden. Der Parameter MaxErrorMaxErrorMaxErrorMaxErrormaxErrormax_error legt den maximalen Fehler fest, den die gesuchte Position haben darf. Um so kleiner dieser Wert ist, um so schneller läuft das Verfahren.

RowRowRowRowrowrow und ColumnColumnColumnColumncolumncolumn liefern die Position des Best-Match, wobei ErrorErrorErrorErrorerrorerror die mittlere Abweichung der Grauwerte angibt.

Falls keine Position mit einem Fehler unter MaxErrorMaxErrorMaxErrorMaxErrormaxErrormax_error gefunden wurde, wird die Position (0,0) und ein Matching-Fehler von 255 für ErrorErrorErrorErrorerrorerror geliefert. In diesem Fall muss der Wert für MaxErrorMaxErrorMaxErrorMaxErrormaxErrormax_error größer gewählt werden.

Der maximale Fehler der Position (ohne Rauschen) beträgt im sub-Pixel Modus 0.1 Pixel. Der mittlere Fehler beträgt 0.03 Pixel.

Ausführungsinformationen

Parameter

ImageImageImageImageimageimage (input_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte)

Eingabebild, in dem das Pattern gefunden werden soll.

TemplateIDTemplateIDTemplateIDTemplateIDtemplateIDtemplate_id (input_control)  template HTemplate, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Nummer des Templates.

MaxErrorMaxErrorMaxErrorMaxErrormaxErrormax_error (input_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Maximale mittlere Differenz der Grauwerte.

Defaultwert: 20.0

Wertevorschläge: 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

Typischer Wertebereich: 0 ≤ MaxError MaxError MaxError MaxError maxError max_error ≤ 255

Minimale Schrittweite: 1

Empfohlene Schrittweite: 3

SubPixelSubPixelSubPixelSubPixelsubPixelsub_pixel (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Subpixel Genauigkeit falls 'true'"true""true""true""true""true".

Defaultwert: 'false' "false" "false" "false" "false" "false"

Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"

RowRowRowRowrowrow (output_control)  point.y(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Zeilenposition des Best-Match.

ColumnColumnColumnColumncolumncolumn (output_control)  point.x(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Spaltenposition des Best-Match.

ErrorErrorErrorErrorerrorerror (output_control)  real(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Mittlere Abweichung der Grauwerte des Best-Match.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert best_matchbest_matchBestMatchBestMatchBestMatchbest_match den Wert 2 (H_MSG_TRUE). Das Verhalten bei leerer Eingabe (keine Eingabebilder vorhanden) lässt sich mittels 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>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

create_templatecreate_templateCreateTemplateCreateTemplateCreateTemplatecreate_template, read_templateread_templateReadTemplateReadTemplateReadTemplateread_template, set_offset_templateset_offset_templateSetOffsetTemplateSetOffsetTemplateSetOffsetTemplateset_offset_template, set_reference_templateset_reference_templateSetReferenceTemplateSetReferenceTemplateSetReferenceTemplateset_reference_template, adapt_templateadapt_templateAdaptTemplateAdaptTemplateAdaptTemplateadapt_template, draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region, draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1draw_rectangle1, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain

Alternativen

fast_matchfast_matchFastMatchFastMatchFastMatchfast_match, fast_match_mgfast_match_mgFastMatchMgFastMatchMgFastMatchMgfast_match_mg, best_match_mgbest_match_mgBestMatchMgBestMatchMgBestMatchMgbest_match_mg, best_match_pre_mgbest_match_pre_mgBestMatchPreMgBestMatchPreMgBestMatchPreMgbest_match_pre_mg, best_match_rotbest_match_rotBestMatchRotBestMatchRotBestMatchRotbest_match_rot, best_match_rot_mgbest_match_rot_mgBestMatchRotMgBestMatchRotMgBestMatchRotMgbest_match_rot_mg, exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatchExhaustiveMatchexhaustive_match, exhaustive_match_mgexhaustive_match_mgExhaustiveMatchMgExhaustiveMatchMgExhaustiveMatchMgexhaustive_match_mg

Modul

Matching