| Operatoren |
measure_pos — Extraktion geradliniger Kanten senkrecht zu einem Rechteck oder Kreisringsegment.
measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance)
measure_pos dient zur Extraktion von geradlinigen Kanten, die senkrecht zur Hauptachse eines Rechtecks oder zu einem Kreisringsegment liegen.
Das Konzept der 1D-Vermessung ist bei der Einleitung zu Kapitel 1D-Vermessung beschrieben.
Der Algorithmus von measure_pos erzeugt zunächst ein eindimensionales Grauwertprofil durch Mittelung der Grauwerte entlang von Geraden senkrecht zur Hauptachse des Rechtecks oder zum Kreisringsegment. Dabei wird das Eingabebild Image an Subpixel-Positionen abgetastet, die einen ganzzahligen Zeilen- und Spalten-Abstand (im Koordinatensystem des Rechtecks) zum Mittelpunkt des Rechtecks haben. Weil die Abtastung des Bildes einige Berechnungen erfordert, die in mehreren Messungen verwendet werden können, wird der Operator gen_measure_rectangle2 b.z.w. gen_measure_arc verwendet, um diese Berechnungen nur einmal ausführen zu müssen, und somit die Geschwindigkeit von measure_pos signifikant zu erhöhen. Aufgrund der Tatsache, dass eine bessere Interpolation bei der Subpixel-Abtastung der Grauwerte zu einer besseren Genauigkeit der extrahierten Kanten führt, aber auch die Laufzeit des Operators erhöht, können verschiedene Interpolationsverfahren in gen_measure_rectangle2 und gen_measure_arc gewählt werden. (Die Interpolation beeinflusst nur Rechtecke, die nicht parallel zu den Koordinatenachsen des Bildes sind, und Kreisringsegmente.) Das Messobjekt, das mit gen_measure_rectangle2 / gen_measure_arc erzeugt wurde, wird in MeasureHandle übergeben.
Nach der Bestimmung des eindimensionalen Kantenprofils werden die subpixelgenauen Kantenpositionen durch Faltung des Profils mit den Ableitungen einer Gauß-Maske mit Standardabweichung Sigma berechnet. Auffällige Kanten können mit dem Parameter Threshold, der einen Schwellwert für die Kantenamplitude, d.h. den Absolutbetrag der ersten Ableitung, angibt, selektiert werden. Es ist zu beachten, dass die Amplitudenwerte mit dem Faktor skaliert werden. Außerdem ist es möglich, nur positive Kanten, also solche, die einen Übergang von Dunkel nach Hell in der Richtung der Hauptachse des Rechtecks oder des Kreisringsegments darstellen, (Transition = 'positive'), nur negative Kanten, also Hell-Dunkel-Übergänge, (Transition = 'negative') oder alle Kanten zu selektieren (Transition = 'all'). Schließlich kann gewählt werden, welche der extrahierten Kanten zurückgeliefert werden sollen. Wenn Select auf 'all' gesetzt wird, werden alle gefundenen Kanten zurückgegeben, falls Select auf 'first' gesetzt wird, nur die erste Kante, und falls Select auf 'last' gesetzt wird, nur die letzte.
Die extrahierten Kanten werden als einzelne Punkte, die auf der Hauptachse des Rechtecks oder dem mittleren Bogen des Kreisringsegments liegen, in (RowEdge,ColumnEdge) zurückgegeben. Die zugehörigen Kantenamplituden werden in Amplitude zurückgeliefert. Zusätzlich wird noch der Abstand von aufeinanderfolgenden Kantenpunkten in Distance zurückgeliefert. Dabei entspricht Distance[i] dem Abstand von Edge[i] und Edge[i+1]. D.h., das Tupel Distance enthält ein Element weniger als die Tupel RowEdge und ColumnEdge.
measure_pos liefert nur dann brauchbare Ergebnisse, falls die Annahme, dass die Kanten gerade und senkrecht zur Hauptachse des Rechtecks oder dem Kreisringsegments sind, erfüllt ist. measure_pos sollte daher z.B. nicht dazu verwendet werden, Kanten von gekrümmten Objekten zu extrahieren. Weiterhin sollte der Benutzer darauf achten, dass das Rechteck / das Kreisringsegment möglichst senkrecht zu den Bildkanten liegt. Außerdem darf Sigma nicht größer als ca. 0.5 * Length1 (siehe gen_measure_rectangle2 für Length1) sein.
Es ist zu beachten, dass measure_pos den Definitionsbereich von Image aus Geschwindigkeitsgründen ignoriert. Falls bestimmte Bildbereiche von der Messung ausgeschlossen werden sollen, sollte ein neues Messobjekt mit entsprechend angepassten Parametern erzeugt werden.
Eingabebild.
Handle des Messobjekts.
Sigma der Gaußglättung.
Defaultwert: 1.0
Wertevorschläge: 0.4, 0.6, 0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 7.0, 10.0
Typischer Wertebereich: 0.4 ≤ Sigma ≤ 100 (lin)
Minimale Schrittweite: 0.01
Empfohlene Schrittweite: 0.1
Restriktion: Sigma >= 0.4
Minimale Amplitude einer Kante.
Defaultwert: 30.0
Wertevorschläge: 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0
Typischer Wertebereich: 1 ≤ Threshold ≤ 255 (lin)
Minimale Schrittweite: 0.5
Empfohlene Schrittweite: 2
Hell/dunkel oder dunkel/hell Kante.
Defaultwert: 'all'
Werteliste: 'all', 'negative', 'positive'
Auswahl der Endpunkte.
Defaultwert: 'all'
Werteliste: 'all', 'first', 'last'
Zeilenkoordinate des Mittelpunktes der Kante.
Spaltenkoordinate des Mittelpunktes der Kante.
Kantenamplitude der Kante (mit Vorzeichen).
Abstand zwischen aufeinanderfolgenden Kanten.
Sind die Parameterwerte korrekt, dann liefert measure_pos den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt.
edges_sub_pix, fuzzy_measure_pos
measure_pairs, fuzzy_measure_pairs, fuzzy_measure_pairing
1D Metrology
| Operatoren |