best_match_mgT_best_match_mgBestMatchMgBestMatchMg (Operator)

Name

best_match_mgT_best_match_mgBestMatchMgBestMatchMg — Suche nach dem besten Grauwert-Match in einer Pyramide.

Warnung

best_match_mgbest_match_mgBestMatchMgBestMatchMgBestMatchMg 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_mg(Image : : TemplateID, MaxError, SubPixel, NumLevels, WhichLevels : Row, Column, 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)

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

void HTemplate::BestMatchMg(const HImage& Image, double MaxError, const HString& SubPixel, Hlong NumLevels, const HTuple& WhichLevels, double* Row, double* Column, double* Error) const

void HTemplate::BestMatchMg(const HImage& Image, double MaxError, const HString& SubPixel, Hlong NumLevels, Hlong WhichLevels, double* Row, double* Column, double* Error) const

void HTemplate::BestMatchMg(const HImage& Image, double MaxError, const char* SubPixel, Hlong NumLevels, Hlong WhichLevels, double* Row, double* Column, double* Error) const

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

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

void HImage::BestMatchMg(const HTemplate& TemplateID, double MaxError, const HString& SubPixel, Hlong NumLevels, Hlong WhichLevels, double* Row, double* Column, double* Error) const

void HImage::BestMatchMg(const HTemplate& TemplateID, double MaxError, const char* SubPixel, Hlong NumLevels, Hlong WhichLevels, double* Row, double* Column, double* Error) const

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

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)

Beschreibung

best_match_mgbest_match_mgBestMatchMgBestMatchMgBestMatchMg führt eine Suche nach dem besten Grauwert-Match in einer Pyramide durch. best_match_mgbest_match_mgBestMatchMgBestMatchMgBestMatchMg arbeitet analog zu best_matchbest_matchBestMatchBestMatchBestMatch, es wird jedoch die Suche durch die Verwendung einer Auflösungspyramide beschleunigt. Als Eingabe dient ein Bild, eventuell mit eingeschränktem Definitionsbereich. Der Grauwert-Match wird innerhalb des Definitionsbereiches des Eingabebildes nur an den Stellen gesucht, an denen der Grauwert-Match vollständig in das Bild passt. Das bedeutet, dass kein Match gefunden wird, wenn er aus dem Bild herausragt. Der Parameter MaxErrorMaxErrorMaxErrorMaxErrormaxError gibt den maximalen Fehler vor, der bei dem Mustervergleich auftreten darf. Bei einem kleinen Wert beschleunigt sich der Operator, es kann jedoch vorkommen, dass das Muster nicht gefunden wird. Der Wert von MaxErrorMaxErrorMaxErrorMaxErrormaxError muss gegenüber best_matchbest_matchBestMatchBestMatchBestMatch größer gewählt werden, da der Matching-Fehler auf höheren Pyramidenebenen oft größer ist.

Der Parameter SubPixelSubPixelSubPixelSubPixelsubPixel legt fest, ob das Ergebnis mit subpixel Genauigkeit bestimmt werden soll. NumLevelsNumLevelsNumLevelsNumLevelsnumLevels bestimmt wieviele Pyramidenstufen für die Suche verwendet werden. Hat NumLevelsNumLevelsNumLevelsNumLevelsnumLevels den Wert 1, dann ist das Verfahren identisch mit best_matchbest_matchBestMatchBestMatchBestMatch, d.h. es wird nur auf den Originaldaten gerechnet. Für Werte größer als 1, beginnt das Verfahren die Suche bei der geringsten Auflösung und sucht dort die Position mit dem geringsten Fehler. In der nächst höheren Auflösung wird dann die gefundene Position verfeinert. Dies wird bis zur höchsten Auflösung (Originaldaten) vorgesetzt (WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels = 'all'"all""all""all""all"). Als alternatives Verfahren kann der Modus WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels mit den Wert 'original'"original""original""original""original" verwendet werden. Hierbei wird auf allen Ebenen mit reduzierter Auflösung nicht nur der Punkt mit dem geringsten Fehler, sondern alle Punkte die unterhalb von MaxErrorMaxErrorMaxErrorMaxErrormaxError liegen weiter untersucht. Dieses Verfahren ist langsamer, aber die Gefahr, dass der richtige Punkt nicht gefunden wird, ist geringer. Gegebenenfalls kann in diesem Modus eine geringere Auflösung, d.h. eine höhere Pyramidenstufe verwendet werden, was zu einer verbesserten Laufzeit führt. Neben den Modi 'all'"all""all""all""all" und 'original'"original""original""original""original" für WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels kann die gewünschte Ebene bei der zwischen den Verfahren umgeschaltet werden soll auch explizit angegeben werden. Hier entspricht 0 dem Wert 'original'"original""original""original""original" und NumLevelsNumLevelsNumLevelsNumLevelsnumLevels - 1 entspricht dem Wert 'all'"all""all""all""all". Ein Wert zwischen diesen beiden Extremen ist in den meisten Fällen ein guter Kompromis zwischen Stabilität und Laufzeit. Ein größerer Wert für WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels verkürzt die Laufzeit, während ein kleinerer Wert das Verhalten stabiler macht. Der Wert für NumLevelsNumLevelsNumLevelsNumLevelsnumLevels muss gleich oder kleiner sein als die Anzahl der Ebenen, die bei der Erzeugung des Templates verwendet wurde.

Die gefunden Position des Musters wird in RowRowRowRowrow, ColumnColumnColumnColumncolumn übergeben. Der hierbei aufgetretene Fehler steht in ErrorErrorErrorErrorerror. Wenn kein Punkt unterhalb von MaxErrorMaxErrorMaxErrorMaxErrormaxError gefunden wird hat ErrorErrorErrorErrorerror den Wert 255 und RowRowRowRowrow und ColumnColumnColumnColumncolumn haben den Wert 0. 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

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

Eingabebild, in dem das Pattern gefunden werden soll.

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

Nummer des Templates.

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

Maximale mittlere Differenz der Grauwerte.

Defaultwert: 30.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 ≤ 255

Minimale Schrittweite: 1

Empfohlene Schrittweite: 3

SubPixelSubPixelSubPixelSubPixelsubPixel (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

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

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

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

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

Anzahl der verwendeten Auflösungsebenen.

Defaultwert: 4

Wertevorschläge: 1, 2, 3, 4, 5, 6

WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels (input_control)  integer HTupleHTupleHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*)

Auflösungsebene bis zu der die Methode „best match“ verwendet wird.

Defaultwert: 2

Wertevorschläge: 'all'"all""all""all""all", 'original'"original""original""original""original", 0, 1, 2, 3, 4, 5, 6

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

Zeilenposition des Best-Match.

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

Spaltenposition des Best-Match.

ErrorErrorErrorErrorerror (output_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Mittlere Abweichung der Grauwerte des Best-Match.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert best_match_mgbest_match_mgBestMatchMgBestMatchMgBestMatchMg 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>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

create_templatecreate_templateCreateTemplateCreateTemplateCreateTemplate, read_templateread_templateReadTemplateReadTemplateReadTemplate, adapt_templateadapt_templateAdaptTemplateAdaptTemplateAdaptTemplate, draw_regiondraw_regionDrawRegionDrawRegionDrawRegion, draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain, set_reference_templateset_reference_templateSetReferenceTemplateSetReferenceTemplateSetReferenceTemplate, set_offset_templateset_offset_templateSetOffsetTemplateSetOffsetTemplateSetOffsetTemplate

Alternativen

fast_matchfast_matchFastMatchFastMatchFastMatch, fast_match_mgfast_match_mgFastMatchMgFastMatchMgFastMatchMg, best_matchbest_matchBestMatchBestMatchBestMatch, best_match_pre_mgbest_match_pre_mgBestMatchPreMgBestMatchPreMgBestMatchPreMg, best_match_rotbest_match_rotBestMatchRotBestMatchRotBestMatchRot, best_match_rot_mgbest_match_rot_mgBestMatchRotMgBestMatchRotMgBestMatchRotMg, exhaustive_matchexhaustive_matchExhaustiveMatchExhaustiveMatchExhaustiveMatch, exhaustive_match_mgexhaustive_match_mgExhaustiveMatchMgExhaustiveMatchMgExhaustiveMatchMg

Modul

Matching