| Operatoren |
create_ncc_model — Vorbereiten eines NCC-Modells für das Matching.
create_ncc_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Metric : ModelID)
create_ncc_model bereitet ein Muster, das als Bild Template übergeben wird, als NCC-Modell für das Matching mittels normalisierter Kreuzkorrelation (normalized cross correlation, NCC) vor. Die ROI des Modells wird als der Definitionsbereich von Template übergeben.
Das Modell wird auf mehreren Pyramidenebenen in mehreren Rotationen auf jeder Ebene generiert und im Speicher abgelegt. Der Ausgabeparameter ModelID ist ein Handle für dieses Modell, der in nachfolgenden Aufrufen von find_ncc_model verwendet wird.
Die Anzahl der Pyramidenebenen wird mit NumLevels festgelegt. Sie sollte so groß wie möglich gewählt werden, da hierdurch das Auffinden des Modells erheblich beschleunigt wird. Bei der Wahl von NumLevels ist aber darauf zu achten, dass das Modell auf der obersten Pyramidenstufe noch erkennbar ist und genügend viele Punkte besitzt (mindestens acht). Dies kann anhand des Definitionsbereiches der Bilder in der Ausgabe von gen_gauss_pyramid überprüft werden. Falls nicht genügend Modellpunkte erzeugt werden, wird die Anzahl der Pyramidenstufen intern solange reduziert, bis auf der obersten Pyramidenstufe genügend Modellpunkte vorhanden sind. Falls durch diese Anpassung ein Modell mit keiner Pyramidenstufe entstehen würde, d.h. falls schon auf der untersten Pyramidenstufe zu wenige Modellpunkte vorhanden sind, liefert create_ncc_model eine Fehlermeldung zurück. Falls für NumLevels 'auto' oder 0 übergeben wird, wählt create_ncc_model die Anzahl der Pyramidenstufen automatisch. Die automatisch gewählte Anzahl von Pyramidenstufen kann mit get_ncc_model_params abgefragt werden. In seltenen Fällen kann es vorkommen, dass create_ncc_model die Anzahl der Pyramidenstufen zu hoch oder zu niedrig bestimmt. Falls die Anzahl der Pyramidenstufen zu hoch gewählt wird, kann das dazu führen, dass das Modell im Bild nicht erkannt wird oder dass sehr niedrige Parameter für MinScore in find_ncc_model selektiert werden müssen, damit das Modell gefunden wird. Falls die Anzahl der Pyramidenstufen zu niedrig gewählt wird, kann es zu erhöhten Laufzeiten in find_ncc_model kommen. In diesen Fällen sollte die Anzahl der Pyramidenstufen durch Inspektion der Ausgabebilder von gen_gauss_pyramid gewählt werden. Dabei sollte Mode = 'constant' und Scale = 0.5 verwendet werden.
Die Parameter AngleStart und AngleExtent legen den Winkelbereich für die möglichen Rotationen des Modells im Bild fest. Das Modell kann also mit find_ncc_model nur in diesem Winkelbereich gefunden werden. Der Parameter AngleStep gibt die Schrittweite der Winkel in dem gewählten Winkelbereich an. Falls bei find_ncc_model keine Subpixelgenauigkeit spezifiziert wird, gibt AngleStep also die erreichbare Winkelgenauigkeit an. AngleStep sollte aufgrund der Größe des Objektes gewählt werden. Kleinere Modelle besitzen nur eine kleine Anzahl von verschiedenen diskreten Rotationen im Bild. Deshalb sollte AngleStep für kleinere Modelle größer gewählt werden. Falls AngleExtent kein ganzzahliges Vielfaches von AngleStep ist, wird AngleStep entsprechend angepasst. Um eine Abtastung des Winkelbereiches der möglichen Rotationen zu erreichen, die unabhängig von AngleStart ist, wird der Winkelbereich der möglichen Rotationen folgendermaßen angepasst: Wenn kein positiver ganzzahliger Wert n existiert, für den AngleStart plus n mal AngleStep genau Null ergibt, wird AngleStart um höchstens AngleStep verringert, und AngleExtent wird um AngleStep vergrößert.
Das Modell wird in dem gewählten Winkelbereich vorab generiert und im Speicher abgelegt. Der Speicherbedarf zur Speicherung des Modells ist also proportional zur Anzahl der Winkelschritte und zur Anzahl der Punkte im Modell. Wenn also AngleStep zu klein bzw. AngleExtent zu groß gewählt wird, kann es vorkommen, dass das Modell nicht mehr in den (virtuellen) Speicher passt. In diesem Fall muss entweder AngleStep größer oder AngleExtent kleiner gewählt werden. In jedem Fall ist es aus Laufzeitgründen vorteilhaft, wenn das Modell komplett in den Hauptspeicher passt und somit ein Paging durch das Betriebssystem vermieden werden kann. Da die Möglichkeit zur subpixelgenauen Winkelbestimmung in find_ncc_model gegeben ist, kann bei Modellen mit einem Durchmesser von ca. 200 Pixeln AngleStep >= 1 gewählt werden. Falls AngleStep = 'auto' oder 0 übergeben wird, wählt create_ncc_model automatisch eine Schrittweite basierend auf der Größe des Modells aus. Die automatisch gewählte Schrittweite kann mit get_ncc_model_params abgefragt werden.
Der Parameter Metric legt fest, unter welchen Bedingungen das Muster im Bild noch erkannt wird. Falls Metric = 'use_polarity', muss das Objekt im Bild dieselben Kontrasteigenschaften aufweisen wie das Modell. Wenn z.B. das Modell ein helles Objekt auf dunklem Hintergrund ist, wird das Objekt im Bild nur dann gefunden, wenn es auch heller als der Hintergrund ist. Falls Metric = 'ignore_global_polarity', wird das Objekt auch dann im Bild gefunden, wenn sich der Kontrast global umkehrt. Im obigen Beispiel würde das Objekt also auch dann gefunden, wenn es dunkler als der Hintergrund ist. Die Laufzeit von find_ncc_model erhöht sich in diesem Fall geringfügig.
Als Ursprung (Referenzpunkt) des Modells wird der Schwerpunkt der Region des Modellbildes Template verwendet. Falls ein anderer Ursprung gewünscht wird, kann dieser mit set_ncc_model_origin gesetzt 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.
Eingabebild, dessen Definitionsbereich zum Aufbau des Modells verwendet wird.
Maximale Anzahl von Pyramidenebenen.
Defaultwert: 'auto'
Werteliste: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 'auto'
Kleinste auftretende Rotation des Musters.
Defaultwert: -0.39
Wertevorschläge: -3.14, -1.57, -0.79, -0.39, -0.20, 0.0
Ausdehnung des Winkelbereichs.
Defaultwert: 0.79
Wertevorschläge: 6.29, 3.14, 1.57, 0.79, 0.39
Restriktion: AngleExtent >= 0
Schrittweite der Winkel (Auflösung).
Defaultwert: 'auto'
Wertevorschläge: 'auto', 0.0, 0.0175, 0.0349, 0.0524, 0.0698, 0.0873
Restriktion: AngleStep >= 0 && AngleStep <= pi / 16
Art der zum Matchen verwendeten Metrik.
Defaultwert: 'use_polarity'
Werteliste: 'ignore_global_polarity', 'use_polarity'
Handle des Modells.
Sind die Parameterwerte korrekt, dann liefert create_ncc_model den Wert 2 (H_MSG_TRUE). Wenn der Parameter NumLevels so gewählt wurde, dass das Modell zu wenige Punkte besitzt, wird die Fehlermeldung 8506 zurückgeliefert.
draw_region, reduce_domain, threshold
find_ncc_model, get_ncc_model_params, clear_ncc_model, write_ncc_model, set_ncc_model_origin, set_ncc_model_param, find_ncc_models
create_shape_model, create_scaled_shape_model, create_aniso_shape_model
Matching
| Operatoren |