set_generic_shape_model_param — Setzen ausgewählter Parameter eines Formmodells.
set_generic_shape_model_param( : : ModelID, GenParamName, GenParamValue : )
Der Operator set_generic_shape_model_param setzt die Parameter
GenParamName des Formmodells ModelID auf die in
GenParamValue gegebenen Werte.
Verschiedene Aspekte des Matching-Vorgangs können über die in
GenParamName auswählbaren Parameter gesteuert werden.
In den Parameterbeschreibungen weiter unten sind diese nach den
folgenden Kategorien gruppiert (wobei die Kategorie den
Hauptverwendungszweck, aber nicht notwendigerweise den einzigen
Zweck des jeweiligen Parameters angibt):
Modifizieren der Instanz
Aussortieren der gefundenen Matches
Grauwertbehandlung
Verfeinerung
Bildpyramide
Störungen
Ausgabe
Nachfolgend werden die für die verschiedenen Kategorien setzbaren Parameter gelistet und Fälle in denen Parameterwerte automatisch angepasst werden aufgeführt.
In diesem Abschnitt werden die Parameter aufgelistet und erläutert, die
das Modell ModelID selbst modifizieren.
Wird ein zugehöriger Wert verändert, ist es notwendig das angepasste
Modell vor dem Matching zu trainieren.
Folgende Parameter GenParamName werden unterstützt:
Der Kontrast wird als Maß für lokale Grauwertdifferenzen verwendet mit Hilfe derer Objekte vom Hintergrund oder Teile von Objekten untereinander unterschieden werden. Für das Modell werden nur die Pixel gewählt, welche den gewünschten Kontrasteigenschaften in ihrer Umgebung entsprechen. Der gewünschte Kontrast kann ein einfacher Schwellenwert oder ein Hysterese-Schwellenwert sein, je nach dem welche Werte für 'contrast_low' und 'contrast_high' gesetzt wurden:
Einfacher Schwellenwert:
Beide Werte sind gleich, aber nicht 'auto'.
Einer der Werte ist auf 'auto' gesetzt, der andere auf einen anderen Wert.
Hysterese-Schwellenwert:
Die beiden Werte sind nicht gleich und keiner der beiden ist auf 'auto' gesetzt
Beide Werte sind auf 'auto' gesetzt
In diesen Fällen wird das Modell mit Hilfe einer Methode segmentiert,
welche ähnlich zum Hysterese-Schwellenwert-Verfahren in
edges_image ist. Für weitere Informationen zum
Hysterese-Schwellenwert-Verfahren siehe hysteresis_threshold.
Für weitere Informationen zu Kontrast und dessen Einfluss auf das Matching
mit Formmodellen wird auf den „Solution Guide II-B - Matching“
verwiesen.
In bestimmten Fällen kann es vorkommen, dass die automatische Bestimmung
des Kontrastschwellenwerts nicht ausreichend ist. Daher sollte in diesen
Fällen ein manuelles Setzen der Kontrastparameter bevorzugt werden,
beispielsweise falls bestimmte Modellkomponenten aus anwendungsspezifischen
Gründen mit inbegriffen oder unterdrückt werden sollen, oder wenn das
Objekt verschiedene Kontrasteigenschaften aufweist. Die
Kontrast-Schwellenwerte sollten mit inspect_shape_model
überprüft werden bevor das Modell an train_generic_shape_model
übergeben wird.
'contrast_high':
Bestimmt zusammen mit 'contrast_low' den Grauwertbereich in dem ein Pixel liegen muss um als Teil des Modells berücksichtigt zu werden (siehe Beschreibung oben). Wird ein Hysterese-Schwellenwert-Verfahren genutzt bestimmt dieser Parameter den oberen Schwellenwert.
Mögliche Werte: 'auto', 90, 80.
Restriktion: Wird beim Training mit XLDs nicht genutzt.
Default: 'auto'.
'contrast_low':
Bestimmt zusammen mit 'contrast_high' den Grauwertbereich in dem ein Pixel liegen muss um als Teil des Modells berücksichtigt zu werden (siehe Beschreibung oben). Wird ein Hysterese-Schwellenwert-Verfahren genutzt bestimmt dieser Parameter den unteren Schwellenwert.
Mögliche Werte: 'auto', 10, 20.
Restriktion: Wird beim Training mit XLDs nicht genutzt.
Default: 'auto'.
Die Spanne möglicher Rotationen von Formmodellen liegt zwischen 0 und 6.28 (=), kann aber für die Suche eingeschränkt werden. Der Suchraum und damit die Diskretisierungsschritte für die Winkel kann modifiziert werden mit:
'angle_step':
Bestimmt die Schrittweite innerhalb des gewählten Winkelbereichs.
Der übergebene Wert sollte basierend auf der
Objektgröße gewählt werden. Kleinere Modelle haben nicht viele
verschiedene diskrete Rotationen im Bild, weshalb empfohlen wird für
kleinere Modelle größere Werte zu wählen. Wird der Wert 'auto'
gesetzt, so wird die Schrittweite beim Aufruf von
train_generic_shape_model geschätzt. Gesetzte Werte werden auf
ein Maximum von 0.20 (=) begrenzt.
Mögliche Werte: 'auto', 0.1, 0.2.
Zu beachten: Nach Modifikation ist ein Training notwendig.
Default: 'auto'.
Der Suchraum und somit der Suchbereich sowie die Diskretisierungsschritte für die Skalierung kann mit Skalierungsparametern modifiziert werden. Die folgenden Tabelle gibt einen Überblick darüber welche Parameter für welche Art von Skalierung gesetzt werden können. Ein Skalierungswert von 1.0 entspricht dabei der Originalgröße des Modells in der entsprechenden Richtung.
GenParamName |
Isotrope Skalierung | Anisotrope Skalierung |
| 'iso_scale_max' | x | |
| 'iso_scale_min' | x | |
| 'iso_scale_step' | x | |
| 'scale_row_max' | x | |
| 'scale_row_min' | x | |
| 'scale_row_step' | x | |
| 'scale_column_max' | x | |
| 'scale_column_min' | x | |
| 'scale_column_step' | x |
'iso_scale_max':
Beschränkt das Maximum der isotropischen Skalierung bei der Modellsuche.
Mögliche Werte: 1.0, 1.1, 1.2.
Default: 1.0.
'iso_scale_min':
Beschränkt das Minimum der isotropischen Skalierung bei der Modellsuche.
Mögliche Werte: 1.0, 0.9, 0.8.
Default: 1.0.
'iso_scale_step':
Beschränkt die Schrittweite innerhalb des
gewählten Bereichs der isotropischen Skalierung bei der Modellsuche.
Wird der Wert
auf 'auto' gesetzt, dann wird die Schrittweite beim Aufruf von
train_generic_shape_model geschätzt.
'scale_row_max':
Beschränkt das Maximum der isotropischen Skalierung in Zeilenrichtung bei der Modellsuche.
Mögliche Werte: 1.0, 1.1, 1.2.
Default: 1.0.
'scale_row_min':
Beschränkt das Minimum der isotropischen Skalierung in Zeilenrichtung bei der Modellsuche.
Mögliche Werte: 1.0, 0.9, 0.8.
Default: 1.0.
'scale_row_step':
Beschränkt die Schrittweite innerhalb des
gewählten Bereichs der isotropischen Skalierung in Zeilenrichtung
bei der Modellsuche. Wird der Wert
auf 'auto' gesetzt, dann wird die Schrittweite beim Aufruf von
train_generic_shape_model geschätzt.
'scale_column_max':
Beschränkt das Maximum der isotropischen Skalierung in Spaltenrichtung bei der Modellsuche.
Mögliche Werte: 1.0, 1.1, 1.2.
Default: 1.0.
'scale_column_min':
Beschränkt das Minimum der isotropischen Skalierung in Spaltenrichtung bei der Modellsuche.
Mögliche Werte: 1.0, 0.9, 0.8.
Default: 1.0.
'scale_column_step':
Beschränkt die Schrittweite innerhalb des
gewählten Bereichs der isotropischen Skalierung in Spaltenrichtung
bei der Modellsuche. Wird der Wert
auf 'auto' gesetzt, dann wird die Schrittweite beim Aufruf von
train_generic_shape_model geschätzt.
'metric':
Bestimmt die Bedingungen unter denen das Modell im Bild gefunden wird. Folgende Werte werden für 'metric' unterstützt:
'auto':
Der Wert wird beim Aufruf von train_generic_shape_model
in Abhängigkeit davon bestimmt, ob Bilder ('use_polarity')
oder XLDs ('ignore_local_polarity') für das Training
verwendet werden.
'use_polarity':
Die Instanz im Bild und das Modell müssen die selben Kontrasteigenschaften aufweisen.
Restriktion: Wird nur auf Einkanalbilder angewandt. Für Mehrkanalbilder wird nur der erste Kanal genutzt (ohne Fehlermeldung).
Beispiel: Das Modell wurde mit einem hellen Objekt auf dunklem Hintergrund erstellt. Nur Instanzen die ebenfalls heller als der Hintergrund sind werden gefunden.
'ignore_global_polarity':
Eine Instanz wird auch dann
im Bild gefunden, wenn sich der Kontrast global umkehrt.
Die Laufzeit von find_generic_shape_model erhöht sich in diesem
Modus geringfügig im Vergleich zu 'use_polarity'.
Restriktion: Wird nur auf Einkanalbilder angewandt. Für Mehrkanalbilder wird nur der erste Kanal genutzt (ohne Fehlermeldung).
Beispiel: Das Modell wurde mit einem hellen Objekt auf dunklem Hintergrund erstellt. Instanzen die heller als oder dunkler als der Hintergrund sind werden gefunden.
'ignore_local_polarity':
Eine Instanz wird auch dann
im Bild gefunden, wenn sich der Kontrast lokal verändert.
Die Laufzeit von find_generic_shape_model erhöht sich in diesem
Modus signifikant im Vergleich zu 'use_polarity'.
Es ist üblicherweise zu empfehlen mehrere Modelle zu verwenden, die die verschiedenen möglichen Kontrastverhältnisse des Objekts abdecken, und diese gleichzeitig für das Matching zu verwenden.
Restriktion: Wird nur auf Einkanalbilder angewandt. Für Mehrkanalbilder wird nur der erste Kanal genutzt (ohne Fehlermeldung).
Beispiel: Ein Teil des Models oder der Instanz liegt im mittleren Grauwertbereich und schließt Unterobjekte ein die entweder heller oder dunkler sein können.
'ignore_color_polarity':
Eine Instanz wird auch dann
im Bild gefunden, wenn sich der Farbkontrast lokal verändert.
Die Laufzeit von find_generic_shape_model kann sich in diesem
Modus signifikant im Vergleich zu 'use_polarity' erhöhen.
Diese Metrik kann für Bilder mit einer beliebigen Anzahl an Kanälen
angewandt werden, welche keiner spektralen Unterteilung des Lichtes
(wie z.B. bei einem RGB-Bild) entsprechen müssen. Für Einkanalbilder
hat der Parameter denselben Effekt wie 'ignore_local_polarity'.
Die Anzahl Kanäle kann zwischen dem Training mit
train_generic_shape_model und der Suche mit
find_generic_shape_model variieren.
Beispiel: Instanzen werden auch dann gefunden, wenn Teile des Objekts in verschiedenen Farben auftreten können, beispielsweise in rot und grün.
Restriktion: Werden XLDs verwendet, dann is es für das
Zurücksetzen der Metrik notwendig, dass die Informationen zur
Kantenrichtung als XLD-Kontur-Attribut verfügbar ist.
Für weitere Informationen siehe set_shape_model_metric.
Default: 'auto'.
'min_size':
Bestimmt die minimale Anzahl an Punkten, die
ein Modell aufweisen muss um berücksichtigt zu werden. Dementsprechend
werden Komponenten, die weniger als 'min_size' Punkte haben
unterdrückt. Da 'min_size' auf die Größe der Komponenten
angewandt wird können die abgeleiteten Modellkonturen trotzdem kleiner
als die festgelegte Minimalgröße sein. Dieser Schwellenwert für die
minimale Größe wird für jede weitere Pyramidenstufe halbiert. Die
Auswirkungen dieses Parameters können vorab mit
inspect_shape_model überprüft werden.
Wird der Wert auf 'auto' gesetzt, dann wird
der Wert beim Aufruf von train_generic_shape_model
geschätzt.
Restriktion: Wird beim Training mit XLDs nicht berücksichtigt.
Default: 'auto'.
'optimization':
Bestimmt die Anzahl an Punkten um die das Modell reduziert wird. Diese Reduktion kann besonders für sehr große Modelle nützlich sein. Mögliche Werte sind:
'auto': Die Anzahl Punkte wird automatisch
durch train_generic_shape_model bestimmt.
'none': Alle Modellpunkte werden behalten.
'point_reduction_low': Die Anzahl Punkte wird auf etwa reduziert.
'point_reduction_medium': Die Anzahl Punkte wird auf etwa reduziert.
'point_reduction_high': Die Anzahl Punkte wird auf etwa reduziert.
Wird die Anzahl Modellpunkten reduziert, könnte es notwendig sein den Parameter 'greediness' auf einen kleineren Wert zu setzen, z.B. 0.7 oder 0.8. Es ist zu beachten, dass für kleine Modelle eine Reduktion der Punkteanzahl üblicherweise keine Beschleunigung ergibt, da dadurch die Anzahl potentieller Instanzen, die geprüft werden, steigt.
Default: 'auto'.
'num_levels':
Anzahl berücksichtigter Bildpyramidenstufen.
Der Wert muss so gewählt werden, dass das Modell weiterhin
erkennbar ist und ausreichend Punkte (mindestens vier) auf der höchsten
Pyramidenstufe aufweist.
Mit Hilfe der Ausgabe von inspect_shape_model kann dies
überprüft werden. Es ist ratsam den Wert so hoch wie möglich zu setzen,
da es die Laufzeit der Suche nach Instanzen signifikant verkürzt.
Wird der Wert auf 'auto' gesetzt, dann wird
der Wert beim Aufruf von train_generic_shape_model
geschätzt.
Es kann vorkommen, dass der automatisch bestimmte Wert nicht passend ist.
Falls die Anzahl Pyramidenstufen zu hoch geschätzt wird könnte das
Modell in den Bildern nicht erkannt werden, außer es werden sehr niedrige
Werte für die Parameter 'min_score' oder 'greediness'
gesetzt. Wird die Anzahl Pyramidenstufen zu niedrig geschätzt, steigt
die Laufzeit der Suche mit find_generic_shape_model. In beiden
Fällen sollte die Anzahl Pyramidenstufen mit Hilfe der Ausgabe von
inspect_shape_model ausgewählt werden.
Default: 'auto'.
'model_identifier':
Überschreibt den aktuellen Identifikator des Formmodells
auf den String in GenParamValue.
Der gegebene Identifikator muss eindeutig sein, damit es z.B.
beim späteren Auslesen von Ergegnissen keine Mehrdeutigkeiten gibt.
Restriktion: Muss ein nicht-leerer String sein. Die folgenden Wörter sind reserviert und können nicht als Identifikator verwendet werden: 'all', 'best'.
Default: Der String, der beim Erstellen des Formmodells automatisch gesetzt wurde.
In diesem Abschnitt werden die Parameter aufgelistet und erläutert, die
die Suche mit dem Modell ModelID modifizieren.
Wird ein zugehöriger Wert verändert ist es nicht notwendig
das Modell zu trainieren, außer ein zuvor nicht durch automatische
Schätzung ermittelter Wert soll nun von train_generic_shape_model
automatisch geschätzt werden. Die Beschreibungen dieser Parameter
enthalten eine entsprechende Bemerkung.
Folgende Parameter GenParamName werden unterstützt:
Modifizieren der Instanz
'angle_start':
Bestimmt den Startwert des Winkelbereichs möglicher Rotationen, für die das Modell gesucht wird.
Mögliche Werte: 0.0, -3.14, 3.14.
Default: 0.0.
'angle_end'
Bestimmt den Endwert des Winkelbereichs möglicher Rotationen, für die das Modell gesucht wird.
Mögliche Werte: 0.0, 3.14, 6.28.
Default: 6.28 (= ).
Die Werte werden auf den Suchbereich abgebildet. Beispiel: 'angle_start' = '-rad(10)', 'angle_end' = 'rad(10)' sucht nach Matches in den Winkelbereichen [rad(350), rad(360)] und [0, rad(10)].
Der Skalierungsbereich, der für das trainierte Modell
bestimmt wird kann für die Suche weiter eingeschränkt werden.
Wird für diese Parameter der Wert auf 'auto' gesetzt, dann wird
der Wert beim Aufruf von train_generic_shape_model
geschätzt.
Es ist zu beachten, dass diese Einschränkungen nur angewendet werden können, wenn der Suchbereich dadurch weiter eingeschränkt wird. Demnach muss eine kleinere maximale und eine größere minimale Skalierung gesetzt werden. Andernfalls ist ein erneutes Training mit angepassten Skalierungsparametern für das Modell notwendig.
GenParamName |
Isotrope Skalierung | Anisotrope Skalierung |
| 'restrict_iso_scale_max' | x | |
| 'restrict_iso_scale_min' | x | |
| 'restrict_scale_row_max' | x | |
| 'restrict_scale_row_min' | x | |
| 'restrict_scale_column_max' | x | |
| 'restrict_scale_column_min' | x |
'restrict_iso_scale_max':
Beschränkt den möglichen Skalierungsbereich für den das Modell gesucht wird auf ein Maximum.
Mögliche Werte: 'auto', 1.1, 1.2.
Default: 'auto'.
'restrict_iso_scale_min':
Beschränkt den möglichen Skalierungsbereich für den das Modell gesucht wird auf ein Minimum.
Mögliche Werte: 'auto', 0.9, 0.8.
Default: 'auto'.
'restrict_scale_row_max':
Beschränkt den möglichen Skalierungsbereich in Zeilenrichtung für den das Modell gesucht wird auf ein Maximum.
Mögliche Werte: 'auto', 1.1, 1.2.
Default: 'auto'.
'restrict_scale_row_min':
Beschränkt den möglichen Skalierungsbereich in Zeilenrichtung für den das Modell gesucht wird auf ein Minimum.
Mögliche Werte: 'auto', 0.9, 0.8.
Default: 'auto'.
'restrict_scale_column_max':
Beschränkt den möglichen Skalierungsbereich in Spaltenrichtung für den das Modell gesucht wird auf ein Maximum.
Mögliche Werte: 'auto', 1.1, 1.2.
Default: 'auto'.
'restrict_scale_column_min':
Beschränkt den möglichen Skalierungsbereich in Spaltenrichtung für den das Modell gesucht wird auf ein Maximum.
Mögliche Werte: 'auto', 0.9, 0.8.
Default: 'auto'.
'max_deformation':
Bestimmt um wie viel ein Objekt vom Modell abweichen darf um als Match berücksichtigt zu werden. Die maximal zulässige Objektdeformation wird in Pixeln festgelegt. Für einen Wert von 0 wäre daher keine Abweichung für das Objekt zulässig.
Beispiel: Ein Objekt, dessen Form im Vergleich zum Formmodell um 2 Pixel deformiert ist wird mit 'max_deformation' = 2 noch gefunden.
Höhere Werte in 'max_deformation' erhöhen häufig auch die Laufzeit.
Höhere Werte in 'max_deformation' erhöhen außerdem häufig auch das Risiko ungewollte Matches zu finden. Dies ist insbesondere der Fall für kleine Objekte oder Objekte mit feinen Strukturen, da diese somit ihre charakteristische Form, welche wichtig für eine robuste Suche ist, verlieren.
Zusammenspiel mit 'subpixel': Wenn eine Deformation erlaubt ist (also ein Wert größer 0 gesetzt wurde) dann hängt die Berechnung des Scores davon ab ob möglicherweise eine Subpixel-Verfeinerung durchgeführt wurde. In den meisten Fällen ändert sich der Score wenn eine Least-Squares-Adjustment-Methode gesetzt wurde. Mit dieser Methode kann ein höherer Score erreicht werden wenn 'max_deformation' erhöht wird, da für die Modellpunkte mehr übereinstimmende Bildpunkte gefunden werden können.
Default: 0.
Aussortieren der gefundenen Matches
'min_score':
Bestimmt den minimalen Score den ein möglicher Match aufweisen muss um als Instanz im Bild zu gelten. Umso höher 'min_score' gesetzt wird, desto schneller ist die Suche. Falls zu erwarten ist, dass das Modell in den Bildern nie verdeckt auftritt, kann 'min_score' auf 0.8 oder sogar 0.9 gesetzt werden. Falls die Matches nicht bis zur untersten Pyramidenstufe verfolgt werden kann es sein, dass Instanzen mit Scores knapp unter 'min_score' zurückgegeben werden.
Das Zusammenspiel mit 'num_matches' wird in der Beschreibung zu Letzterem erklärt.
Default: 0.5.
'num_matches':
Bestimmt die maximale Anzahl zurückgegebener Matches.
Der Wert 'all' (oder 0) bedeutet, dass alle Instanzen zurückgegeben werden, die einen Score größer als 'min_score' erreichen. Ansonsten ist das Zusammenspiel zwischen 'num_matches' und 'min_score' sowie 'max_clutter' (falls gesetzt) wie folgt:
Keine Störparameter gesetzt:
Für den Fall dass mehr als 'num_matches' Instanzen gefunden werden, die den erforderlichen minimalen Score erreichen, werden nur die 'num_matches' Matches mit den höchsten Scores zurückgegeben.
Falls weniger als 'num_matches' Instanzen mit dem erforderlichen Score gefunden werden, werden nur die Instanzen zurückgegeben, die die Anforderungen an den Score erfüllen.
Störparameter gesetzt:
Für den Fall dass mehr als 'num_matches' Instanzen gefunden werden, die den erforderlichen minimalen Score und einen akzeptablen Störwert erreichen, werden nur die 'num_matches' Matches mit den besten Störwerten zurückgegeben.
Falls weniger als 'num_matches' Instanzen mit dem erforderlichen Score und / oder akzeptablen Störwert gefunden werden, werden nur die Instanzen zurückgegeben, die die Anforderungen an den Score und den Störwert erfüllen.
Das Verfolgen von Matches durch die Bildpyramide hängt davon ab ob Störparameter gesetzt wurden:
Keine Störparameter gesetzt:
Auf jeder Stufe (außer der obersten Pyramidenstufe) werden weniger aussichtsreiche Matches basierend auf 'num_matches' verworfen. Dabei können Matches verworfen werden die auf der niedrigsten Pyramidenstufe einen höheren Score erreicht hätten. Daher kann sich das Ergebnis für beispielsweise 'num_matches' = 1 von der Instanz mit dem höchsten Score unterscheiden, wenn 'num_matches' auf 'all' oder einen Wert größer 1 gesetzt wird. Folglich kann im Fall, dass mehrere Objekte mit ähnlichem Score zu erwarten sind, aber nur der beste Match gewählt werden soll, ratsam sein mehrere Instanzen zurückzugeben und dann den Match mit dem höchsten Score auszuwählen.
Störparameter gesetzt:
Beim Verfolgen der Matches werden keine Matches verworfen. Die Laufzeit mit Nutzung von Störparametern ist mindestens so hoch wie die Laufzeit ohne Störparameter aber Rückgabe aller Matches, d.h., mit auf 'all' gesetztem Parameter 'num_matches'.
Default: 'all'.
'strict_boundaries':
Bestimmt ob gefundene Instanzen nur dann zurückgegeben werden wenn sie strikt innerhalb des gegebenen Suchbereichs liegen ('true') oder nicht ('false'). Es ist zu beachten, dass dieses Auswahlkriterium nach der Reduktion der Matches auf die besten 'num_matches' Matches angewandt wird und daher in Extremfällen dazu führen kann, dass kein Ergebnis zurückgegeben wird.
Kompatibilität: Wird dieser Wert für ein Modell gesetzt, das
nicht mit create_generic_shape_model erstellt wurde, werden
interne Modelleinstellungen verändert. Folglich kann unterschiedliches
Verhalten bezüglich Matches außerhalb des eingestellten Suchbereichs
auftreten wenn für solche Modelle 'strict_boundaries'
auf 'true' und wieder zurück 'false' gesetzt wird.
Default: 'false'.
'max_overlap':
Bestimmt zu welchem Anteil zwei Instanzen
höchstens überlappen dürfen um als unterschiedliche Instanzen zu gelten
und daher separat zurückgegeben zu werden. Falls sich zwei Instanzen
zu einem Anteil von mehr als 'max_overlap' überlappen wird
nur diejenige mit dem höheren Score zurückgegeben. Die Berechnung
der Überlappung basiert auf dem kleinsten umschließenden
Rechteck beliebiger Orientierung (siehe smallest_rectangle2) der
gefundenen Instanzen. Wird 'max_overlap' auf 0
gesetzt, so dürfen gefundene Instanzen überhaupt nicht überlappen,
während für 'max_overlap' = 1 alle Instanzen
zurückgegeben werden, unabhängig von möglicher Überlappung. Für weitere
Informationen zu 'max_overlap', siehe
„Solution Guide II-B - Matching“.
Restriktion: 0 'max_overlap' 1.
Default: 0.5.
'max_clutter':
Bestimmt den maximalen Störwert den ein möglicher Match aufweisen darf um als Modellinstanz im Bild in Frage zu kommen. Dies gilt natürlich nur für Modelle die Störungen berücksichtigen, also wo 'use_clutter' auf 'true' gesetzt wurde.
Default: 0.0.
Grauwertbehandlung
'min_contrast':
Bestimmt den minimalen Kontrast
(Grauwertdifferenz zu Nachbarpixeln) den ein Punkt im Suchbild mindestens
aufweisen muss um mit dem Modell verglichen zu werden. Der
Hauptverwendungszweck dieses Parameters ist es Rauschen im Bild
für den Matching-Vorgang zu unterdrücken. Der Operator
estimate_noise kann zur Einschätzung des Rauschens verwendet
werden.
Beispiel: Das Rauschen im Bild weist Grauwertschwankungen im Bereich von 10 Grauwerten auf. In diesem Fall ist es ratsam 'min_contrast' auf 10 zu setzen.
Mehrkanalige Bilder: Für eine Suche in mehrkanaligen Bildern mit Hilfe von 'metric' = 'ignore_color_polarity', muss das Rauschen in einem Channel multipliziert werden und zwar mit der Quadratwurzel aus der Anzahl an Kanälen für die 'min_contrast' bestimmt werden soll.
Beispiel: Das Rauschen in einem Kanal eines dreikanaligen Bildes weist Grauwertschwankungen im Bereich von 10 Grauwerten auf. In diesem Fall ist es ratsam 'min_contrast' auf 17 zu setzen.
Es ist zu beachten, dass 'min_contrast' kleiner sein muss als der Kontrast-Schwellenwert der mit 'contrast_low' und 'contrast_high' gesetzt wird, siehe oben.
Der Wert 'auto' bedeutet, dass der Wert beim Aufruf von
train_generic_shape_model basierend auf dem Rauschen im
Modellbild geschätzt wird. Für eine sinnvolle automatische Schätzung
muss daher das Rauschen im Modellbild ähnlich zum Rauschen in den
Suchbildern sein.
Training: Wird dieser Wert auf 'auto' gesetzt, dann ist ein Training des Formmodells notwendig.
Mögliche Werte: 'auto', 10, 20.
Default: 'auto'.
'border_shape_models':
Bestimmt, ob das Formmodell ModelID, nach dem beispielsweise mit
find_generic_shape_model gesucht wird, teilweise außerhalb des
Bildes liegen darf (d.h. ob der Bildbereich, unabhängig von der Domäne,
überschritten werden darf).
Teilweise bedeutet, dass der Ursprung des Modells noch innerhalb des
Bildes liegen muss. Ein eventuell mit
set_generic_shape_model_param anders gesetzter Ursprung wird
nicht berücksichtigt.
Der Wert 'system' bedeutet hierbei, dass das Modell den
systemweiten Wert, der über set_system für
'border_shape_models' gesetzt wurde, verwendet.
Werteliste: 'system', 'true', 'false'.
Default: 'system'.
Verfeinerung
'subpixel':
Bestimmt welche Art der Subpixel-Verfeinerung ausgeführt werden soll. Mögliche Werte:
'none': Die Pose des Modells wird lediglich mit Pixelgenauigkeit und der in 'angle_step' angegebenen Winkelauflösung bestimmt.
'interpolation': Die Pose des Modells wird aus der Score-Funktion interpoliert. Dieser Modus zeichnet sich durch sehr niedrigen Berechnungsaufwand aus.
'least_squares': Die Pose des Modells wird mit der Least-Squares-Adjustment-Methode verfeinert, d.h. die Distanzen zwischen den Modellpunkten und den entsprechenden Bildpunkten werden minimiert.
'least_squares_high': Die Pose des Modells wird mit der Least-Squares-Adjustment-Methode verfeinert, d.h. die Distanzen zwischen den Modellpunkten und den entsprechenden Bildpunkten werden minimiert. Hierbei sind mehr Iterationsschritte als für 'least_squares' zugelassen, wodurch sich die Laufzeit erhöhen kann.
'least_squares_very_high': Die Pose des Modells wird mit der Least-Squares-Adjustment-Methode verfeinert, d.h. die Distanzen zwischen den Modellpunkten und den entsprechenden Bildpunkten werden minimiert. Hierbei sind mehr Iterationsschritte als für 'least_squares_high' zugelassen, wodurch sich die Laufzeit erhöhen kann.
Das Zusammenspiel mit 'max_deformation' wird in der Beschreibung zu Letzterem erklärt.
Default: 'least_squares'.
'greediness':
Bestimmt wie „gierig“ die Suche ausgeführt werden soll. Ein höherer Wert resultiert in einer schnelleren Suche, welche allerdings eine weniger sichere Suchheuristik verwendet.
Restriktion: 0 'greediness' 1.
Default: 0.9.
Bildpyramide
'pyramid_level_highest':
Bestimmt die höchste Stufe der Bildpyramide die für die Suche verwendet wird. Damit kann die im Modell gesetzte höchste Pyramidenstufe für die Suche heruntergesetzt werden. Der Wert kann nicht höher sein als die höchste Pyramidenstufe des Modells, welche mit 'num_levels' gesetzt wird. Höhere Werte für 'pyramid_level_highest' werden entsprechend reduziert. Der Wert 'auto' bedeutet, dass die Stufe für die Suche nicht heruntergesetzt wird und das Modell dementsprechend die in 'num_levels' gesetzte höchste Pyramidenstufe nutzt.
Default: 'auto'.
'pyramid_level_lowest':
Bestimmt die niedrigste Stufe der Bildpyramide zu der die gefundenen Matches verfolgt werden. Werden die Matches nicht bis auf die unterste Stufe der Bildpyramide verfolgt verringert sich die Laufzeit. Im Allgemeinen ist die Genauigkeit der erhaltenen Posen allerdings um so niedriger je höher die niedrigste Stufe gesetzt wird. In Extremfällen kann dies auch zum Finden falscher Instanzen führen, für die die gewünschte Genauigkeit nicht erreicht werden kann.
Default: 1.
'pyramid_level_robust_tracking':
Bestimmt ob der sogenannte „increased tolerance“-Modus aktiviert ist ('true') oder nicht ('false'). In diesem Modus wird die niedrigste Pyramidenstufe auf der mindestens ein Match gefunden wird während der Suche automatisch bestimmt. Für den Fall dass Eingabebilder in schlechter Qualität vorliegen, beispielsweise unscharf, verzerrt oder verrauscht, kann dieser Modus hilfreich sein. In diesen Fällen können die Kanteninformationen auf der niedrigsten Pyramidenstufe fehlen oder verzerrt sein und dazu führen, dass keine Instanzen des Formmodells gefunden werden. Nichtsdestotrotz kann die Kanteninformation auf höheren Pyramidenstufen ausreichend sein. Die Wahl der passenden Pyramidenstufe, d.h. der niedrigsten Pyramidenstufe auf der mindestens ein Match gefunden wird, hängt vom Modell und dem Eingabebild ab. Natürlich gelten auch hier die für 'pyramid_level_lowest' genannten Einschränkungen bezüglich Genauigkeit und Robustheit.
Beispiel: 'pyramid_level_highest' wird auf 4, 'pyramid_level_lowest' auf 2 und 'pyramid_level_robust_tracking' auf 'true' gesetzt. Das Matching startet nun auf der vierten Pyramidenstufe und verfolgt die Matches bis zur zweiten Stufe. Falls keine Instanz des Modells auf der zweiten Pyramidenstufe gefunden wird, aber Matches auf höheren Pyramidenstufen gefunden wurden, dann wird die niedrigste Pyramidenstufe auf die Stufe gesetzt auf der mindestens eine Instanz des Modells gefunden wurde. Die Instanzen dieser Pyramidenstufe werden dann zurückgegeben.
Default: 'false'.
Störungen
Die folgenden Parameter werden dazu genutzt die Störregion zu spezifizieren.
Es ist zu beachten, dass dazu zuvor eine Störregion mit
set_generic_shape_model_object gesetzt werden muss.
'use_clutter':
Bestimmt ob das Modell ModelID
Störparameter berücksichtigt ('true') oder nicht
('false'). Die Laufzeit mit Nutzung von Störparametern ist
mindestens so hoch wie die Laufzeit ohne Störparameter aber Rückgabe
aller Matches, d.h., mit auf 'all' gesetztem Parameter
'num_matches'.
Werteliste: 'false', 'true'.
Default: 'false'.
'clutter_contrast':
Bestimmt den minimalen Kontrast, den Kanten in der Störregion haben müssen, damit sie als Störung gezählt werden.
Die Polarität der gefundenen Störkanten wird ignoriert, d.h. helle Objekte auf dunklem Hintergrund erzielen denselben Störwert wie dunkle Objekte auf hellem Hintergrund, unabhängig vom Parameter 'metric' des Formmodells.
Mit dem Wert 'auto' wird sein Wert automatisch geschätzt. Es ist zu beachten, das für eine geeignete Schätzung eine repräsentative Region benötigt wird. Es wird empfohlen, den geschätzten Wert auf Eignung zu überprüfen und gegebenenfalls anzupassen.
Es ist zu beachten, dass die Störwerte stark von Beleuchtungsänderungen beeinflusst werden.
Mögliche Werte: 'auto', 5, 10.
Restriktion: 'clutter_contrast' muss größer oder gleich zu 'min_contrast' sein.
Default: 'auto'.
Achtung: Es ist nicht möglich, geeignete Kontrastwerte aus einem Formmodell zu schätzen, das aus einer XLD-Kontur erzeugt wurde. Deswegen wird in diesem Fall der geschätzte Wert auf den Wert von 'min_contrast' gesetzt, siehe den Abschnitt "Automatische Modifikationen".
'max_clutter':
Der Wert von 'max_clutter' spezifiziert den maximalen Störwert, den ein Match haben darf, um akzeptiert zu werden.
Es ist zu beachten, dass dieser Wert die Laufzeit nicht beeinflusst.
Möglicher Wertebereich: [0.0, 1.0].
Default: 0.0.
'clutter_hom_mat_2d':
Die Transformationsmatrix 'clutter_hom_mat_2d' bildet
den Ursprung des Modells auf dessen entsprechende Position in
dem Bild ab, das zur Spezifikation der Störregion mit
set_generic_shape_model_object verwendet wurde.
Mögliche Werte sind:
'auto': Der Wert wird automatisch gesetzt. Die
Störregion wird relativ zum Modell im Modellbild mit
set_generic_shape_model_object gesetzt.
Transformationsmatrix: Transformation wird vom Nutzer gesetzt.
Default: 'auto'.
'clutter_border_mode':
Mit 'clutter_border_mode' kann das Verhalten des Störwertes für den Fall, dass die Störregion nicht komplett im Bildbereich enthalten ist, beeinflusst werden. Die entsprechenden Werte für 'clutter_border_mode' sind:
'clutter_border_average':
Wenn 'clutter_border_average' gesetzt wird, wird angenommen, dass der verdeckte Teil durchschnittlich den selben Störanteil aufweist wie der sichtbare Teil. Ist die Störregion gar nicht zu sehen, wird der Störwert des gefundenen Matches auf 0.0 gesetzt.
'clutter_border_empty':
Wird 'clutter_border_empty' gesetzt, wird angenommen, dass der verdeckte Teil der Störregionen keine Störungen enthält.
Es ist zu beachten, dass mit 'clutter_border_average' höhere Störwerte erreicht werden als mit 'clutter_border_empty', selbst wenn der Match nicht am Rand des Bildbereichs liegt.
Werteliste: 'clutter_border_average', 'clutter_border_empty'.
Default: 'clutter_border_average'.
Ausgabe
Ursprung:
Der Ursprung (Referenzpunkt) ist relativ zum Schwerpunkt der Domäne
(Region) des Bildes definiert, das zum Trainieren des Formmodells mit
train_generic_shape_model benutzt wurde. Daher bedeutet ein
Ursprung von (0,0), dass der Schwerpunkt der Domäne des Template-Bildes
als Ursprung verwendet wird. Der Ursprung kann mit folgenden
Parametern neu gesetzt werden:
'origin_row': Bestimmt die Zeilenkoordinate des neuen, verschobenen Ursprungs.
Default: 0.
'origin_column': Bestimmt die Spaltenkoordinate des neuen, verschobenen Ursprungs.
Default: 0.
Beispiel: Setzt man 'origin_column' = -20 und 'origin_row' = -40, dann liegt der neue Ursprung links oberhalb des Schwerpunkts des Modells. Es ist zu beachten, dass das Setzen des Ursprungs die verwendeten Transformationsmatrizen verändert, d.h. die 'clutter_hom_mat_2d', die der Nutzer setzt und die berechnete 'hom_mat_2d' eines Matches.
'prepare_contours_for_visualization'
Bestimmt, ob die Kontur eines gefundenen Matches mit
find_generic_shape_model für die Visualisierung vorbereitet
und in MatchResultID ausgegeben werden soll
('true') oder nicht ('false'). Durch die
Deaktivierung von 'prepare_contours_for_visualization' verkürzt
sich die Laufzeit.
In der Dokumentation von get_generic_shape_model_result_object
wird beschrieben wie die generierte Kontur abgefragt werden kann.
Werteliste: 'true', 'false'.
Default: 'true'.
'prepare_clutter_region_for_visualization'
Bestimmt, ob die Störregion eines gefundenen Matches mit
find_generic_shape_model für die Visualisierung vorbereitet
und in MatchResultID ausgegeben werden soll
('true') oder nicht ('false'). Durch die
Deaktivierung von 'prepare_clutter_region_for_visualization'
verkürzt sich die Laufzeit.
In der Dokumentation von get_generic_shape_model_result_object
wird beschrieben wie die generierte Störregion abgefragt werden kann.
Werteliste: 'true', 'false'.
Default: 'true'.
'time_measurement'
Bestimmt, ob während der Suche die benötigte Zeit einzelner Abschnitte
gemessen wird. Die einzelnen Zeiten werden in MatchResultID
zurückgegeben, siehe get_generic_shape_model_result.
Werteliste: 'pipeline', 'false'.
Default: 'false'.
In diesem Abschnitt werden die Parameter aufgelistet und erläutert,
welche technische Einflüsse beim Suchen des Modells ModelID
betreffen.
Folgende Parameter GenParamName werden unterstützt:
'model_cache':
Bestimmt, ob z.B. find_generic_shape_model einen internen Cache,
der auf temporärem Speicher basiert, verwendet ('true') oder
nicht ('false'). Wird 'model_cache' deaktiviert
(durch Setzen von 'false'), kann die Laufzeit leicht
verlängert werden, führt aber zu einem konstant kleineren
Speicherverbrauch.
Die Größe des Cache hängt von der Größe des Suchraums ab,
also ob der Suchbereich viele Diskretisierungsschritte aufweist.
Das bedeutet, dass aus einem engmaschiges Suchgitter mit kleinen
Schrittweiten (step), bei dem große Bereiche
zwischen Start- (start) und Endwerten (end)
abgedeckt werden, großer Speicherverbrauch resultiert.
Default: 'true'.
'timeout':
Bestimmt die maximale Laufzeit der Operatoren,
die zum Suchen des Formmodells ModelID verwendet werden
(z.B. find_generic_shape_model). Die zeitliche Genauigkeit hängt
von einigen Faktoren ab, darunter die Größe des Modells, die
Geschwindigkeit des verwendeten Rechners, und der Modus der in
'timer_mode' über set_system gesetzt wurde.
Es ist zu beachten, dass die Laufzeit der Suche bis zu 10 Prozent
ansteigt wenn 'timeout' aktiviert ist.
Der Wert von 'timeout' muss in Millisekunden angegeben werden. Um 'timeout' zu deaktivieren kann entweder eine negative Zahl oder 'false' gesetzt werden.
Mögliche Werte: 'false', -1, 100.
Default: 'false'.
In diesem Abschnitt werden die Parameter aufgelistet, die ohne weitere Benachrichtigung automatisch modifiziert werden:
'num_levels':
Falls 'num_levels' so gesetzt wird, dass auf der gewünschten Pyramidenstufe nicht mehr ausreichend Modellpunkte generiert werden, dann wird die Anzahl Stufen intern so reduziert, dass auf der obersten Pyramidenstufe ausreichend Modellpunkte gefunden werden können.
Falls dieses Vorgehen zu einem Modell ohne Pyramidenstufen führen würde,
die Anzahl Modellpunkte also von vornherein auf der untersten
Pyramidenstufe zu klein war, dann gibt train_generic_shape_model
eine Fehlermeldung aus.
Parameter, die eine Schrittweite (step_size) bestimmen:
Falls der Suchbereich kein Vielfaches der Schrittweite ist wird letztere entsprechend angepasst.
Beispiele: 'angle_step', 'iso_scale_step'.
Start- und Endwerte (start und end) eines Suchbereichs:
Um sicher zu gehen, dass Modellinstanzen in ihrer exakten Modellposition
von find_generic_shape_model zurückgegeben werden, können
Suchbereiche wie folgt angepasst werden:
Falls keine positive Ganzzahl n existiert, mit welcher der Startwert plus
n mal die Schrittweite (step_size) 0.0 (für Winkel) beziehungsweise
1.0 (für Skalierungen) ergibt, dann wird der Startwert um bis zu eine
Schrittweite verringert und der Endwert wird erhöht, so dass der Suchbereich
um genau einmal die Schrittweite erweitert wurde.
Beispiele: 'angle_start', 'restrict_iso_scale_max'.
'clutter_hom_mat_2d': Wenn man den Ursprung verändert ('origin_row' und 'origin_column'), beeinflusst das die Transformationsmatrizen, insbesondere 'clutter_hom_mat_2d', welcher von dem Nutzer gesetzt wird.
'clutter_contrast': Wenn 'min_contrast' so geändert wird, das er größer als 'clutter_contrast' wird, wird 'clutter_contrast' automatisch erhöht, falls der Nutzer 'auto' gesetzt hat.
Es ist zu beachten das Transformationen intern so berechnet werden, dass die Skalierung und dann die Rotation angewandt wird. Daher sollte das Modell üblicherweise so ausgerichtet werden, dass es horizontal oder vertikal im Modellbild auftritt.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.
ModelID (input_control, Zustand wird modifiziert) shape_model → (handle)
Handle des Formmodells.
GenParamName (input_control) attribute.name-array → (string)
Parameternamen.
Defaultwert: 'min_score'
Werteliste: 'angle_end', 'angle_start', 'angle_step', 'border_shape_models', 'clutter_border_mode', 'clutter_contrast', 'clutter_hom_mat_2d', 'contrast_high', 'contrast_low', 'greediness', 'iso_scale_max', 'iso_scale_min', 'iso_scale_step', 'max_clutter', 'max_deformation', 'max_overlap', 'metric', 'min_contrast', 'min_score', 'min_size', 'model_cache', 'model_identifier', 'num_levels', 'num_matches', 'optimization', 'origin_column', 'origin_row', 'prepare_clutter_region_for_visualization', 'prepare_contours_for_visualization', 'pyramid_level_highest', 'pyramid_level_lowest', 'pyramid_level_robust_tracking', 'restrict_iso_scale_max', 'restrict_iso_scale_min', 'restrict_scale_column_max', 'restrict_scale_column_min', 'restrict_scale_row_max', 'restrict_scale_row_min', 'scale_column_max', 'scale_column_min', 'scale_column_step', 'scale_row_max', 'scale_row_min', 'scale_row_step', 'strict_boundaries', 'subpixel', 'time_measurement', 'timeout', 'use_clutter'
GenParamValue (input_control) attribute.value-array → (real / integer / string)
Parameterwerte.
Defaultwert: 0.5
Wertevorschläge: -3.14, -1.57, -0.79, -0.39, 0.0, 0.39, 0.79, 1.57, 3.14
Sind die Parameterwerte korrekt, dann liefert
set_generic_shape_model_param den Wert 2 (H_MSG_TRUE).
Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
get_generic_shape_model_param,
train_generic_shape_model,
find_generic_shape_model
Matching