KlassenKlassenKlassenKlassen | | | | Operatoren

best_match_mgbest_match_mgBestMatchMgbest_match_mgBestMatchMgBestMatchMg (Operator)

Name

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

Signatur

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 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 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 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)

Beschreibung

best_match_mgbest_match_mgBestMatchMgbest_match_mgBestMatchMgBestMatchMg führt eine Suche nach dem besten Grauwert-Match in einer Pyramide durch. best_match_mgbest_match_mgBestMatchMgbest_match_mgBestMatchMgBestMatchMg arbeitet analog zu best_matchbest_matchBestMatchbest_matchBestMatchBestMatch, 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 MaxErrorMaxErrorMaxErrorMaxErrorMaxErrormaxError 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 MaxErrorMaxErrorMaxErrorMaxErrorMaxErrormaxError muss gegenüber best_matchbest_matchBestMatchbest_matchBestMatchBestMatch größer gewählt werden, da der Matching-Fehler auf höheren Pyramidenebenen oft größer ist.

Der Parameter SubPixelSubPixelSubPixelSubPixelSubPixelsubPixel legt fest, ob das Ergebnis mit subpixel Genauigkeit bestimmt werden soll. NumLevelsNumLevelsNumLevelsNumLevelsNumLevelsnumLevels bestimmt wieviele Pyramidenstufen für die Suche verwendet werden. Hat NumLevelsNumLevelsNumLevelsNumLevelsNumLevelsnumLevels den Wert 1, dann ist das Verfahren identisch mit best_matchbest_matchBestMatchbest_matchBestMatchBestMatch, 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 (WhichLevelsWhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels = 'all'"all""all""all""all""all"). Als alternatives Verfahren kann der Modus WhichLevelsWhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels mit den Wert 'original'"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 MaxErrorMaxErrorMaxErrorMaxErrorMaxErrormaxError 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""all" und 'original'"original""original""original""original""original" für WhichLevelsWhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels 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""original" und NumLevelsNumLevelsNumLevelsNumLevelsNumLevelsnumLevels - 1 entspricht dem Wert 'all'"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 WhichLevelsWhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels verkürzt die Laufzeit, während ein kleinerer Wert das Verhalten stabiler macht. Der Wert für NumLevelsNumLevelsNumLevelsNumLevelsNumLevelsnumLevels 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 RowRowRowRowRowrow, ColumnColumnColumnColumnColumncolumn übergeben. Der hierbei aufgetretene Fehler steht in ErrorErrorErrorErrorErrorerror. Wenn kein Punkt unterhalb von MaxErrorMaxErrorMaxErrorMaxErrorMaxErrormaxError gefunden wird hat ErrorErrorErrorErrorErrorerror den Wert 255 und RowRowRowRowRowrow und ColumnColumnColumnColumnColumncolumn 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.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  singlechannelimage(-array) objectHImageHImageHImageHImageXHobject (byte)

Eingabebild, in dem das Pattern gefunden werden soll.

TemplateIDTemplateIDTemplateIDTemplateIDTemplateIDtemplateID (input_control)  template HTemplate, HTupleHTupleHTemplate, HTupleHTemplateX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Nummer des Templates.

MaxErrorMaxErrorMaxErrorMaxErrorMaxErrormaxError (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (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 maxError ≤ 255

Minimale Schrittweite: 1

Empfohlene Schrittweite: 3

SubPixelSubPixelSubPixelSubPixelSubPixelsubPixel (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (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"

NumLevelsNumLevelsNumLevelsNumLevelsNumLevelsnumLevels (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Anzahl der verwendeten Auflösungsebenen.

Defaultwert: 4

Werteliste: 1, 2, 3, 4, 5, 6

WhichLevelsWhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevels (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer / string) (int / long / string) (Hlong / HString) (Hlong / char*) (Hlong / BSTR) (Hlong / char*)

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

Defaultwert: 2

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

RowRowRowRowRowrow (output_control)  point.y HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Zeilenposition des Best-Match.

ColumnColumnColumnColumnColumncolumn (output_control)  point.x HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Spaltenposition des Best-Match.

ErrorErrorErrorErrorErrorerror (output_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Mittlere Abweichung der Grauwerte des Best-Match.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert best_match_mgbest_match_mgBestMatchMgbest_match_mgBestMatchMgBestMatchMg 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>)set_system("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_templateCreateTemplatecreate_templateCreateTemplateCreateTemplate, read_templateread_templateReadTemplateread_templateReadTemplateReadTemplate, adapt_templateadapt_templateAdaptTemplateadapt_templateAdaptTemplateAdaptTemplate, draw_regiondraw_regionDrawRegiondraw_regionDrawRegionDrawRegion, draw_rectangle1draw_rectangle1DrawRectangle1draw_rectangle1DrawRectangle1DrawRectangle1, reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain, set_reference_templateset_reference_templateSetReferenceTemplateset_reference_templateSetReferenceTemplateSetReferenceTemplate, set_offset_templateset_offset_templateSetOffsetTemplateset_offset_templateSetOffsetTemplateSetOffsetTemplate

Alternativen

fast_matchfast_matchFastMatchfast_matchFastMatchFastMatch, fast_match_mgfast_match_mgFastMatchMgfast_match_mgFastMatchMgFastMatchMg, best_matchbest_matchBestMatchbest_matchBestMatchBestMatch, best_match_pre_mgbest_match_pre_mgBestMatchPreMgbest_match_pre_mgBestMatchPreMgBestMatchPreMg, best_match_rotbest_match_rotBestMatchRotbest_match_rotBestMatchRotBestMatchRot, best_match_rot_mgbest_match_rot_mgBestMatchRotMgbest_match_rot_mgBestMatchRotMgBestMatchRotMg, exhaustive_matchexhaustive_matchExhaustiveMatchexhaustive_matchExhaustiveMatchExhaustiveMatch, exhaustive_match_mgexhaustive_match_mgExhaustiveMatchMgexhaustive_match_mgExhaustiveMatchMgExhaustiveMatchMg

Modul

Matching


KlassenKlassenKlassenKlassen | | | | Operatoren