best_match_mgT_best_match_mgBestMatchMgBestMatchMgbest_match_mg (Operator)

Name

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

Warnung

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

def best_match_mg(image: HObject, template_id: HHandle, max_error: float, sub_pixel: str, num_levels: int, which_levels: Union[str, int]) -> Tuple[float, float, float]

Beschreibung

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

Der Parameter SubPixelSubPixelSubPixelSubPixelsubPixelsub_pixel legt fest, ob das Ergebnis mit subpixel Genauigkeit bestimmt werden soll. NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels bestimmt wie viele Pyramidenstufen für die Suche verwendet werden. Hat NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels den Wert 1, dann ist das Verfahren identisch mit best_matchbest_matchBestMatchBestMatchBestMatchbest_match, 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 (WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevelswhich_levels = 'all'"all""all""all""all""all"). Als alternatives Verfahren kann der Modus WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevelswhich_levels 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 MaxErrorMaxErrorMaxErrorMaxErrormaxErrormax_error 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 WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevelswhich_levels 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 NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels - 1 entspricht dem Wert 'all'"all""all""all""all""all". Ein Wert zwischen diesen beiden Extremen ist in den meisten Fällen ein guter Kompromiss zwischen Stabilität und Laufzeit. Ein größerer Wert für WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevelswhich_levels verkürzt die Laufzeit, während ein kleinerer Wert das Verhalten stabiler macht. Der Wert für NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels 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 MaxErrorMaxErrorMaxErrorMaxErrormaxErrormax_error 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.

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: 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 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"

NumLevelsNumLevelsNumLevelsNumLevelsnumLevelsnum_levels (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Anzahl der verwendeten Auflösungsebenen.

Defaultwert: 4

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

WhichLevelsWhichLevelsWhichLevelsWhichLevelswhichLevelswhich_levels (input_control)  integer HTupleUnion[str, int]HTupleHtuple (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""all", 'original'"original""original""original""original""original", 0, 1, 2, 3, 4, 5, 6

RowRowRowRowrowrow (output_control)  point.y HTuplefloatHTupleHtuple (real) (double) (double) (double)

Zeilenposition des Best-Match.

ColumnColumnColumnColumncolumncolumn (output_control)  point.x HTuplefloatHTupleHtuple (real) (double) (double) (double)

Spaltenposition des Best-Match.

ErrorErrorErrorErrorerrorerror (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Mittlere Abweichung der Grauwerte des Best-Match.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert best_match_mgbest_match_mgBestMatchMgBestMatchMgBestMatchMgbest_match_mg den Wert 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, adapt_templateadapt_templateAdaptTemplateAdaptTemplateAdaptTemplateadapt_template, draw_regiondraw_regionDrawRegionDrawRegionDrawRegiondraw_region, draw_rectangle1draw_rectangle1DrawRectangle1DrawRectangle1DrawRectangle1draw_rectangle1, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain, set_reference_templateset_reference_templateSetReferenceTemplateSetReferenceTemplateSetReferenceTemplateset_reference_template, set_offset_templateset_offset_templateSetOffsetTemplateSetOffsetTemplateSetOffsetTemplateset_offset_template

Alternativen

fast_matchfast_matchFastMatchFastMatchFastMatchfast_match, fast_match_mgfast_match_mgFastMatchMgFastMatchMgFastMatchMgfast_match_mg, best_matchbest_matchBestMatchBestMatchBestMatchbest_match, 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