create_templateT_create_templateCreateTemplateCreateTemplate (Operator)

Name

create_templateT_create_templateCreateTemplateCreateTemplate — Aufbereiten eines Musters für Template Matching. Neue Applikationen sollten stattdessen die Form-basierten oder NCC-basierten Operatoren verwenden.

Warnung

create_templatecreate_templateCreateTemplateCreateTemplateCreateTemplate ist veraltet und wird nur aus Gründen der Rückwärtskompatibilität zur Verfügung gestellt.

Signatur

create_template(Template : : FirstError, NumLevel, Optimize, GrayValues : TemplateID)

Herror T_create_template(const Hobject Template, const Htuple FirstError, const Htuple NumLevel, const Htuple Optimize, const Htuple GrayValues, Htuple* TemplateID)

void CreateTemplate(const HObject& Template, const HTuple& FirstError, const HTuple& NumLevel, const HTuple& Optimize, const HTuple& GrayValues, HTuple* TemplateID)

void HTemplate::HTemplate(const HImage& Template, Hlong FirstError, Hlong NumLevel, const HString& Optimize, const HString& GrayValues)

void HTemplate::HTemplate(const HImage& Template, Hlong FirstError, Hlong NumLevel, const char* Optimize, const char* GrayValues)

void HTemplate::HTemplate(const HImage& Template, Hlong FirstError, Hlong NumLevel, const wchar_t* Optimize, const wchar_t* GrayValues)   (Nur Windows)

void HTemplate::CreateTemplate(const HImage& Template, Hlong FirstError, Hlong NumLevel, const HString& Optimize, const HString& GrayValues)

void HTemplate::CreateTemplate(const HImage& Template, Hlong FirstError, Hlong NumLevel, const char* Optimize, const char* GrayValues)

void HTemplate::CreateTemplate(const HImage& Template, Hlong FirstError, Hlong NumLevel, const wchar_t* Optimize, const wchar_t* GrayValues)   (Nur Windows)

HTemplate HImage::CreateTemplate(Hlong FirstError, Hlong NumLevel, const HString& Optimize, const HString& GrayValues) const

HTemplate HImage::CreateTemplate(Hlong FirstError, Hlong NumLevel, const char* Optimize, const char* GrayValues) const

HTemplate HImage::CreateTemplate(Hlong FirstError, Hlong NumLevel, const wchar_t* Optimize, const wchar_t* GrayValues) const   (Nur Windows)

static void HOperatorSet.CreateTemplate(HObject template, HTuple firstError, HTuple numLevel, HTuple optimize, HTuple grayValues, out HTuple templateID)

public HTemplate(HImage template, int firstError, int numLevel, string optimize, string grayValues)

void HTemplate.CreateTemplate(HImage template, int firstError, int numLevel, string optimize, string grayValues)

HTemplate HImage.CreateTemplate(int firstError, int numLevel, string optimize, string grayValues)

Beschreibung

create_templatecreate_templateCreateTemplateCreateTemplateCreateTemplate bereitet ein Muster (TemplateTemplateTemplateTemplatetemplate), das als Bild übergeben wird, für das Template Matching vor. Dem Template wird nach der Transformation eine Nummer zugewiesen (TemplateIDTemplateIDTemplateIDTemplateIDtemplateID), die bei der weiteren Verarbeitung verwendet wird. Die Form und Größe von TemplateTemplateTemplateTemplatetemplate sind beliebig. Es ist jedoch zu beachten, dass das Matching nur in dem Teil des Bildes ausgeführt wird, in dem TemplateTemplateTemplateTemplatetemplate vollständig hineinpasst.

Das Template sollte so gewählt werden, dass keine Grauwerte des Hintergrundes enthalten sind. Hierbei kann ausgenutzt werden, dass die Form des Template nicht auf Rechtecke beschränkt ist. Zu Gewinnung der Templateregion können Segmentierungsoperatoren wie thresholdthresholdThresholdThresholdThreshold oder die draw_* Operatoren verwendet werden. Soll die Position des Templates später mit sub-Pixel-Genauigkeit bestimmt werden, dann muss TemplateTemplateTemplateTemplatetemplate zusätzlich um ein Pixel kleiner sein als das eigentliche Muster. Die kann z.B. mit dem Operator erosion_circleerosion_circleErosionCircleErosionCircleErosionCircle realsiert werden.

Der Parameter NumLevelNumLevelNumLevelNumLevelnumLevel gibt die Anzahl der Pyramidenebenen an (NumLevelNumLevelNumLevelNumLevelnumLevel = 1 bedeutet, dass nur die Originalgrauwerte verwendet werden), die beim Matching maximal verwendet werden können. Die Anzahl kann bei Matching aber kleiner sein als dieser Wert. Falls das Template durch das Verkleinern zu klein wird, reduziert sich die maximale Anzahl von Pyramidenstufen automatisch (ohne Fehlermeldung!).

Der Parameter GrayValuesGrayValuesGrayValuesGrayValuesgrayValues legt fest, ob die Originalgrauwerte ('original'"original""original""original""original" bzw. 'normalized'"normalized""normalized""normalized""normalized") oder die Kantenamplitude ('gradient'"gradient""gradient""gradient""gradient" bzw. 'sobel'"sobel""sobel""sobel""sobel") verwendet werden soll. Bei 'original'"original""original""original""original" wird die Summe der Differenzen als Merkmal verwendet. Dieses Verfahren ist abhängig von der Beleuchtung. Bei 'normalized'"normalized""normalized""normalized""normalized" wird die normierte Summe der Differenzen verwendet. Dieses Merkmal ist unabhängig von additiven Grauwertänderungen. Es ist etwas langsamer und nicht ganz so stabil. Wenn auch multiplikative Grauwertänderungen auftreten, sollte das Matching mittels normalisierter Kreuzkorrelation (normalized cross correlation, NCC) verwendet werden (create_ncc_modelcreate_ncc_modelCreateNccModelCreateNccModelCreateNccModel). Falls die Grauwerte sich nicht ändern ist 'original'"original""original""original""original" vorzuziehen. Die Kantenamplitude ist eine weitere Methode unabhängig von der Beleuchtung zu sein. Der Nachteil ist die höhere Laufzeit und eine stärkere Abhängigkeit gegenüber Formänderungen. Der Modus 'gradient'"gradient""gradient""gradient""gradient" ist etwas schneller aber auch empfindlicher gegen Rauschen. Der maximale Fehler beim Matching muss bei der Kantenamplitude typischerweise größer gewählt werden. Als Alternative zu den Gradientenverfahren kann der Operator set_offset_templateset_offset_templateSetOffsetTemplateSetOffsetTemplateSetOffsetTemplate verwendet werden, falls die Beleuchtungsänderung bekannt ist.

Der Parameter OptimizeOptimizeOptimizeOptimizeoptimize legt fest ob das Template für eine schnellere Verarbeitung zusätzlich optimiert wird. Dies verlangsamt die Erzeugung des Templates, verkürzt aber das Matching. Zusätzlich wird durch die Optimierung das Matching stabiler, d.h. der Verlust eines korrekten Matches wird unwahrscheinlicher.

Als Referenzwert für das Matching wird der Schwerpunkt verwendet. D.h. wenn man das Template auf das Originalbild anwendet, wird der Schwerpunkt zurückgegeben. Diese Voreinstellung kann mit set_reference_templateset_reference_templateSetReferenceTemplateSetReferenceTemplateSetReferenceTemplate angepasst werden.

Im sub-Pixel Modus wird eine zusätzliche Positionskorrektur verwendet: Das Template wird auf die Originaldaten angewandt und die hierbei entstehende Abweichung der gefundenen Position vom Schwerpunkt wird als Korrekturvektor mit verwendet. Dies ist für Muster, die in einem konstrastreichen Kontext liegen von Bedeutung. Bei den meisten Mustern ist dieser Korrekturvektor Null.

Vor der Verwendung kann das Template, das bildformatunabhängig gespeichert ist, noch mit adapt_templateadapt_templateAdaptTemplateAdaptTemplateAdaptTemplate auf die Größe eines konkreten Bildes angepasst werden.

Ausführungsinformationen

Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.

Parameter

TemplateTemplateTemplateTemplatetemplate (input_object)  singlechannelimage objectHImageHImageHobject (byte)

Eingabebild, dessen Definitionsbereich für das Pattern Matching aufbereitet wird.

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

Noch nicht verwendet.

Defaultwert: 255

Werteliste: 255

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

Maximale Anzahl von Pyramidenebenen.

Defaultwert: 4

Werteliste: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

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

Art der Optimierung.

Defaultwert: 'sort' "sort" "sort" "sort" "sort"

Werteliste: 'none'"none""none""none""none", 'sort'"sort""sort""sort""sort"

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

Art der Grauwerte.

Defaultwert: 'original' "original" "original" "original" "original"

Werteliste: 'gradient'"gradient""gradient""gradient""gradient", 'normalized'"normalized""normalized""normalized""normalized", 'original'"original""original""original""original", 'sobel'"sobel""sobel""sobel""sobel"

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

Nummer des Templates.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert create_templatecreate_templateCreateTemplateCreateTemplateCreateTemplate den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

draw_regiondraw_regionDrawRegionDrawRegionDrawRegion, reduce_domainreduce_domainReduceDomainReduceDomainReduceDomain, thresholdthresholdThresholdThresholdThreshold

Nachfolger

adapt_templateadapt_templateAdaptTemplateAdaptTemplateAdaptTemplate, set_reference_templateset_reference_templateSetReferenceTemplateSetReferenceTemplateSetReferenceTemplate, clear_templateclear_templateClearTemplateClearTemplateClearTemplate, write_templatewrite_templateWriteTemplateWriteTemplateWriteTemplate, set_offset_templateset_offset_templateSetOffsetTemplateSetOffsetTemplateSetOffsetTemplate, best_matchbest_matchBestMatchBestMatchBestMatch, best_match_mgbest_match_mgBestMatchMgBestMatchMgBestMatchMg, fast_matchfast_matchFastMatchFastMatchFastMatch, fast_match_mgfast_match_mgFastMatchMgFastMatchMgFastMatchMg

Alternativen

create_ncc_modelcreate_ncc_modelCreateNccModelCreateNccModelCreateNccModel, create_template_rotcreate_template_rotCreateTemplateRotCreateTemplateRotCreateTemplateRot, read_templateread_templateReadTemplateReadTemplateReadTemplate

Modul

Matching