Name
best_match_mgbest_match_mgBestMatchMgbest_match_mgBestMatchMgBestMatchMg — Suche nach dem besten Grauwert-Match in einer Pyramide.
Warnung
best_match_mgbest_match_mgBestMatchMgbest_match_mgBestMatchMgBestMatchMg 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.
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)
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.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
Eingabebild, in dem das Pattern gefunden werden soll.
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
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"
Anzahl der verwendeten Auflösungsebenen.
Defaultwert: 4
Wertevorschläge: 1, 2, 3, 4, 5, 6
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
Zeilenposition des Best-Match.
Spaltenposition des Best-Match.
Mittlere Abweichung der Grauwerte des Best-Match.
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.
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
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
Matching