KlassenKlassenKlassenKlassen | | | | Operatoren

create_templatecreate_templateCreateTemplatecreate_templateCreateTemplateCreateTemplate (Operator)

Name

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

Warnung

create_templatecreate_templateCreateTemplatecreate_templateCreateTemplateCreateTemplate 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 create_template(const Hobject Template, const Hlong FirstError, const Hlong NumLevel, const char* Optimize, const char* GrayValues, Hlong* TemplateID)

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

Herror create_template(Hobject Template, const HTuple& FirstError, const HTuple& NumLevel, const HTuple& Optimize, const HTuple& GrayValues, Hlong* TemplateID)

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

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

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

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

void HOperatorSetX.CreateTemplate(
[in] IHUntypedObjectX* Template, [in] VARIANT FirstError, [in] VARIANT NumLevel, [in] VARIANT Optimize, [in] VARIANT GrayValues, [out] VARIANT* TemplateID)

void HTemplateX.CreateTemplate(
[in] IHImageX* Template, [in] Hlong FirstError, [in] Hlong NumLevel, [in] BSTR Optimize, [in] BSTR GrayValues)

IHTemplateX* HImageX.CreateTemplate(
[in] Hlong FirstError, [in] Hlong NumLevel, [in] BSTR Optimize, [in] BSTR GrayValues)

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_templateCreateTemplatecreate_templateCreateTemplateCreateTemplate bereitet ein Muster (TemplateTemplateTemplateTemplateTemplatetemplate), das als Bild übergeben wird, für das Template Matching vor. Dem Template wird nach der Transformation eine Nummer zugewiesen (TemplateIDTemplateIDTemplateIDTemplateIDTemplateIDtemplateID), die bei der weiteren Verarbeitung verwendet wird. Die Form und Größe von TemplateTemplateTemplateTemplateTemplatetemplate sind beliebig. Es ist jedoch zu beachten, dass das Matching nur in dem Teil des Bildes ausgeführt wird, in dem TemplateTemplateTemplateTemplateTemplatetemplate 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 thresholdthresholdThresholdthresholdThresholdThreshold oder die draw_* Operatoren verwendet werden. Soll die Position des Templates später mit sub-Pixel-Genauigkeit bestimmt werden, dann muss TemplateTemplateTemplateTemplateTemplatetemplate zusätzlich um ein Pixel kleiner sein als das eigentliche Muster. Die kann z.B. mit dem Operator erosion_circleerosion_circleErosionCircleerosion_circleErosionCircleErosionCircle realsiert werden.

Der Parameter NumLevelNumLevelNumLevelNumLevelNumLevelnumLevel gibt die Anzahl der Pyramidenebenen an (NumLevelNumLevelNumLevelNumLevelNumLevelnumLevel = 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 GrayValuesGrayValuesGrayValuesGrayValuesGrayValuesgrayValues legt fest, ob die Originalgrauwerte ('original'"original""original""original""original""original" bzw. 'normalized'"normalized""normalized""normalized""normalized""normalized") oder die Kantenamplitude ('gradient'"gradient""gradient""gradient""gradient""gradient" bzw. 'sobel'"sobel""sobel""sobel""sobel""sobel") verwendet werden soll. Bei 'original'"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""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_modelCreateNccModelcreate_ncc_modelCreateNccModelCreateNccModel). Falls die Grauwerte sich nicht ändern ist 'original'"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""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_templateSetOffsetTemplateset_offset_templateSetOffsetTemplateSetOffsetTemplate verwendet werden, falls die Beleuchtungsänderung bekannt ist.

Der Parameter OptimizeOptimizeOptimizeOptimizeOptimizeoptimize 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_templateSetReferenceTemplateset_reference_templateSetReferenceTemplateSetReferenceTemplate 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.

Das Pattern muss nach Gebrauch mit clear_templateclear_templateClearTemplateclear_templateClearTemplateClearTemplate gelöscht werden um den Speicher wieder freizugeben. Vor der Verwendung kann das Template, das bildformatunabhängig gespeichert ist, noch mit adapt_templateadapt_templateAdaptTemplateadapt_templateAdaptTemplateAdaptTemplate auf die Größe eines konkreten Bildes angepasst werden.

Parallelisierung

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

TemplateTemplateTemplateTemplateTemplatetemplate (input_object)  singlechannelimage objectHImageHImageHImageHImageXHobject (byte)

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

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

Noch nicht verwendet.

Defaultwert: 255

Werteliste: 255

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

Maximale Anzahl von Pyramidenebenen.

Defaultwert: 4

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

OptimizeOptimizeOptimizeOptimizeOptimizeoptimize (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Art der Optimierung.

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

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

GrayValuesGrayValuesGrayValuesGrayValuesGrayValuesgrayValues (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Art der Grauwerte.

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

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

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

Nummer des Templates.

Ergebnis

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

Vorgänger

draw_regiondraw_regionDrawRegiondraw_regionDrawRegionDrawRegion, reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain, thresholdthresholdThresholdthresholdThresholdThreshold

Nachfolger

adapt_templateadapt_templateAdaptTemplateadapt_templateAdaptTemplateAdaptTemplate, set_reference_templateset_reference_templateSetReferenceTemplateset_reference_templateSetReferenceTemplateSetReferenceTemplate, clear_templateclear_templateClearTemplateclear_templateClearTemplateClearTemplate, write_templatewrite_templateWriteTemplatewrite_templateWriteTemplateWriteTemplate, set_offset_templateset_offset_templateSetOffsetTemplateset_offset_templateSetOffsetTemplateSetOffsetTemplate, best_matchbest_matchBestMatchbest_matchBestMatchBestMatch, best_match_mgbest_match_mgBestMatchMgbest_match_mgBestMatchMgBestMatchMg, fast_matchfast_matchFastMatchfast_matchFastMatchFastMatch, fast_match_mgfast_match_mgFastMatchMgfast_match_mgFastMatchMgFastMatchMg

Alternativen

create_ncc_modelcreate_ncc_modelCreateNccModelcreate_ncc_modelCreateNccModelCreateNccModel, create_template_rotcreate_template_rotCreateTemplateRotcreate_template_rotCreateTemplateRotCreateTemplateRot, read_templateread_templateReadTemplateread_templateReadTemplateReadTemplate

Modul

Matching


KlassenKlassenKlassenKlassen | | | | Operatoren