create_template
— Aufbereiten eines Musters für Template Matching. Neue
Applikationen sollten stattdessen die
Form-basierten oder NCC-basierten Operatoren verwenden.
create_template
ist veraltet und wird nur aus Gründen
der Rückwärtskompatibilität zur Verfügung gestellt.
create_template(Template : : FirstError, NumLevel, Optimize, GrayValues : TemplateID)
create_template
bereitet ein Muster (Template
),
das als Bild übergeben wird, für das Template Matching vor.
Dem Template wird nach der Transformation eine Nummer
zugewiesen (TemplateID
), die bei der
weiteren Verarbeitung verwendet wird.
Die Form und Größe von Template
sind beliebig.
Es ist jedoch zu beachten, dass das Matching nur in
dem Teil des Bildes ausgeführt wird, in dem Template
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 threshold
oder die draw_* Operatoren verwendet werden.
Soll die Position des Templates später mit sub-Pixel-Genauigkeit
bestimmt werden, dann muss Template
zusätzlich
um ein Pixel kleiner
sein als das eigentliche Muster. Die kann z.B. mit dem
Operator erosion_circle
realsiert werden.
Der Parameter NumLevel
gibt die Anzahl der
Pyramidenebenen an (NumLevel
= 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 GrayValues
legt fest, ob
die Originalgrauwerte ('original' bzw. 'normalized' ) oder
die Kantenamplitude ('gradient' bzw. 'sobel' )
verwendet werden soll.
Bei 'original' wird die Summe der Differenzen als Merkmal
verwendet. Dieses Verfahren ist abhängig von der Beleuchtung.
Bei '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_model
).
Falls die Grauwerte sich nicht ändern ist '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' 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_template
verwendet werden,
falls die Beleuchtungsänderung bekannt ist.
Der Parameter Optimize
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_template
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_template
auf die Größe eines konkreten Bildes angepasst werden.
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.
Template
(input_object) singlechannelimage →
object (byte)
Eingabebild, dessen Definitionsbereich für das Pattern Matching aufbereitet wird.
FirstError
(input_control) integer →
(integer)
Noch nicht verwendet.
Defaultwert: 255
Werteliste: 255
NumLevel
(input_control) integer →
(integer)
Maximale Anzahl von Pyramidenebenen.
Defaultwert: 4
Werteliste: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Optimize
(input_control) string →
(string)
Art der Optimierung.
Defaultwert: 'sort'
Werteliste: 'none' , 'sort'
GrayValues
(input_control) string →
(string)
Art der Grauwerte.
Defaultwert: 'original'
Werteliste: 'gradient' , 'normalized' , 'original' , 'sobel'
TemplateID
(output_control) template →
(handle)
Nummer des Templates.
Sind die Parameterwerte korrekt, dann liefert
create_template
den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
draw_region
,
reduce_domain
,
threshold
adapt_template
,
set_reference_template
,
clear_template
,
write_template
,
set_offset_template
,
best_match
,
best_match_mg
,
fast_match
,
fast_match_mg
create_ncc_model
,
create_template_rot
,
read_template
Matching