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
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
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
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