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.
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)
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.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
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.
Eingabebild, dessen Definitionsbereich für das
Pattern Matching aufbereitet wird.
Noch nicht verwendet.
Defaultwert: 255
Werteliste: 255
Maximale Anzahl von Pyramidenebenen.
Defaultwert: 4
Werteliste: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Art der Optimierung.
Defaultwert:
'sort'
"sort"
"sort"
"sort"
"sort"
"sort"
Werteliste: 'none'"none""none""none""none""none", 'sort'"sort""sort""sort""sort""sort"
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"
Sind die Parameterwerte korrekt, dann liefert
create_templatecreate_templateCreateTemplatecreate_templateCreateTemplateCreateTemplate den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
draw_regiondraw_regionDrawRegiondraw_regionDrawRegionDrawRegion,
reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain,
thresholdthresholdThresholdthresholdThresholdThreshold
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
create_ncc_modelcreate_ncc_modelCreateNccModelcreate_ncc_modelCreateNccModelCreateNccModel,
create_template_rotcreate_template_rotCreateTemplateRotcreate_template_rotCreateTemplateRotCreateTemplateRot,
read_templateread_templateReadTemplateread_templateReadTemplateReadTemplate
Matching