measure_pos T_measure_pos MeasurePos MeasurePos measure_pos (Operator)
Name
measure_pos T_measure_pos MeasurePos MeasurePos measure_pos — Extraktion geradliniger Kanten senkrecht zu einem Rechteck oder
Kreisringsegment.
Signatur
void MeasurePos (const HObject& Image , const HTuple& MeasureHandle , const HTuple& Sigma , const HTuple& Threshold , const HTuple& Transition , const HTuple& Select , HTuple* RowEdge , HTuple* ColumnEdge , HTuple* Amplitude , HTuple* Distance )
void HMeasure ::MeasurePos (const HImage& Image , double Sigma , double Threshold , const HString& Transition , const HString& Select , HTuple* RowEdge , HTuple* ColumnEdge , HTuple* Amplitude , HTuple* Distance ) const
void HMeasure ::MeasurePos (const HImage& Image , double Sigma , double Threshold , const char* Transition , const char* Select , HTuple* RowEdge , HTuple* ColumnEdge , HTuple* Amplitude , HTuple* Distance ) const
void HMeasure ::MeasurePos (const HImage& Image , double Sigma , double Threshold , const wchar_t* Transition , const wchar_t* Select , HTuple* RowEdge , HTuple* ColumnEdge , HTuple* Amplitude , HTuple* Distance ) const
(Nur Windows)
void HImage ::MeasurePos (const HMeasure& MeasureHandle , double Sigma , double Threshold , const HString& Transition , const HString& Select , HTuple* RowEdge , HTuple* ColumnEdge , HTuple* Amplitude , HTuple* Distance ) const
void HImage ::MeasurePos (const HMeasure& MeasureHandle , double Sigma , double Threshold , const char* Transition , const char* Select , HTuple* RowEdge , HTuple* ColumnEdge , HTuple* Amplitude , HTuple* Distance ) const
void HImage ::MeasurePos (const HMeasure& MeasureHandle , double Sigma , double Threshold , const wchar_t* Transition , const wchar_t* Select , HTuple* RowEdge , HTuple* ColumnEdge , HTuple* Amplitude , HTuple* Distance ) const
(Nur Windows)
static void HOperatorSet .MeasurePos (HObject image , HTuple measureHandle , HTuple sigma , HTuple threshold , HTuple transition , HTuple select , out HTuple rowEdge , out HTuple columnEdge , out HTuple amplitude , out HTuple distance )
void HMeasure .MeasurePos (HImage image , double sigma , double threshold , string transition , string select , out HTuple rowEdge , out HTuple columnEdge , out HTuple amplitude , out HTuple distance )
void HImage .MeasurePos (HMeasure measureHandle , double sigma , double threshold , string transition , string select , out HTuple rowEdge , out HTuple columnEdge , out HTuple amplitude , out HTuple distance )
Beschreibung
measure_pos measure_pos MeasurePos MeasurePos MeasurePos 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 measure_pos MeasurePos MeasurePos MeasurePos 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 Image Image Image image 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 gen_measure_rectangle2 GenMeasureRectangle2 GenMeasureRectangle2 GenMeasureRectangle2 gen_measure_rectangle2 b.z.w. gen_measure_arc gen_measure_arc GenMeasureArc GenMeasureArc GenMeasureArc gen_measure_arc verwendet,
um diese Berechnungen nur
einmal ausführen zu müssen, und somit die Geschwindigkeit von
measure_pos measure_pos MeasurePos MeasurePos MeasurePos 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 gen_measure_rectangle2 GenMeasureRectangle2 GenMeasureRectangle2 GenMeasureRectangle2 gen_measure_rectangle2 und
gen_measure_arc gen_measure_arc GenMeasureArc GenMeasureArc GenMeasureArc 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_rectangle2 GenMeasureRectangle2 GenMeasureRectangle2 GenMeasureRectangle2 gen_measure_rectangle2 /
gen_measure_arc gen_measure_arc GenMeasureArc GenMeasureArc GenMeasureArc gen_measure_arc erzeugt wurde, wird in MeasureHandle MeasureHandle MeasureHandle MeasureHandle measureHandle measure_handle
übergeben.
Nach der Bestimmung des eindimensionalen Kantenprofils werden die
subpixelgenauen Kantenpositionen durch Faltung des Profils mit den
Ableitungen einer Gauß-Maske mit Standardabweichung Sigma Sigma Sigma Sigma sigma sigma
berechnet. Auffällige Kanten können mit dem Parameter
Threshold Threshold Threshold Threshold threshold threshold , der einen Schwellenwert für die Kantenamplitude
(Amplitude Amplitude Amplitude Amplitude amplitude amplitude ), 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 Transition Transition Transition transition transition =
'positive' "positive" "positive" "positive" "positive" "positive" ), nur negative Kanten, also
Hell-Dunkel-Übergänge, (Transition Transition Transition Transition transition transition = 'negative' "negative" "negative" "negative" "negative" "negative" )
oder alle Kanten zu selektieren (Transition Transition Transition Transition transition transition =
'all' "all" "all" "all" "all" "all" ). Schließlich kann gewählt werden, welche der
extrahierten Kanten zurückgeliefert werden sollen. Wenn
Select Select Select Select select select auf 'all' "all" "all" "all" "all" "all" gesetzt wird, werden alle
gefundenen Kanten zurückgegeben, falls Select Select Select Select select select auf
'first' "first" "first" "first" "first" "first" gesetzt wird, nur die erste Kante, und falls
Select Select Select Select select select auf 'last' "last" "last" "last" "last" "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 RowEdge RowEdge RowEdge rowEdge row_edge , ColumnEdge ColumnEdge ColumnEdge ColumnEdge columnEdge column_edge ) zurückgegeben. Die
zugehörigen Kantenamplituden werden in Amplitude Amplitude Amplitude Amplitude amplitude amplitude
zurückgeliefert. Zusätzlich wird noch der Abstand von
aufeinanderfolgenden Kantenpunkten in Distance Distance Distance Distance distance distance
zurückgeliefert. Dabei entspricht Distance[i] dem Abstand von
Edge[i] und Edge[i+1]. D.h., das Tupel Distance Distance Distance Distance distance distance enthält
ein Element weniger als die Tupel RowEdge RowEdge RowEdge RowEdge rowEdge row_edge und
ColumnEdge ColumnEdge ColumnEdge ColumnEdge columnEdge column_edge .
Achtung
measure_pos measure_pos MeasurePos MeasurePos MeasurePos 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 measure_pos MeasurePos MeasurePos MeasurePos 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 Sigma Sigma Sigma sigma sigma nicht größer als ca. 0.5 * Length1 Length1 Length1 Length1 length1 length_1
(siehe gen_measure_rectangle2 gen_measure_rectangle2 GenMeasureRectangle2 GenMeasureRectangle2 GenMeasureRectangle2 gen_measure_rectangle2 für Length1 Length1 Length1 Length1 length1 length_1 ) sein.
Es ist zu beachten, dass measure_pos measure_pos MeasurePos MeasurePos MeasurePos measure_pos den Definitionsbereich
von Image Image Image Image image image aus Geschwindigkeitsgründen ignoriert. Falls
bestimmte Bildbereiche von der Messung ausgeschlossen werden sollen,
sollte ein neues Messobjekt mit entsprechend angepassten
Parametern erzeugt werden.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Wird ohne Parallelisierung verarbeitet.
Parameter
Image Image Image Image image image (input_object) singlechannelimage → object HImage HObject HImage Hobject (byte / uint2 / real)
Eingabebild.
MeasureHandle MeasureHandle MeasureHandle MeasureHandle measureHandle measure_handle (input_control) measure → HMeasure , HTuple HHandle HTuple Htuple (handle) (IntPtr ) (HHandle ) (handle )
Handle des Messobjekts.
Sigma Sigma Sigma Sigma sigma sigma (input_control) number → HTuple float HTuple Htuple (real) (double ) (double ) (double )
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
Sigma
Sigma
Sigma
sigma
sigma
≤
100 (lin)
Minimale Schrittweite: 0.01
Empfohlene Schrittweite: 0.1
Threshold Threshold Threshold Threshold threshold threshold (input_control) number → HTuple float HTuple Htuple (real) (double ) (double ) (double )
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
Threshold
Threshold
Threshold
threshold
threshold
≤
255 (lin)
Minimale Schrittweite: 0.5
Empfohlene Schrittweite: 2
Transition Transition Transition Transition transition transition (input_control) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Hell/dunkel oder dunkel/hell Kante.
Defaultwert:
'all'
"all"
"all"
"all"
"all"
"all"
Werteliste: 'all' "all" "all" "all" "all" "all" , 'negative' "negative" "negative" "negative" "negative" "negative" , 'positive' "positive" "positive" "positive" "positive" "positive"
Select Select Select Select select select (input_control) string → HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Auswahl der Endpunkte.
Defaultwert:
'all'
"all"
"all"
"all"
"all"
"all"
Werteliste: 'all' "all" "all" "all" "all" "all" , 'first' "first" "first" "first" "first" "first" , 'last' "last" "last" "last" "last" "last"
RowEdge RowEdge RowEdge RowEdge rowEdge row_edge (output_control) point.y-array → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Zeilenkoordinate des Mittelpunktes der Kante.
ColumnEdge ColumnEdge ColumnEdge ColumnEdge columnEdge column_edge (output_control) point.x-array → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Spaltenkoordinate des Mittelpunktes der Kante.
Amplitude Amplitude Amplitude Amplitude amplitude amplitude (output_control) real-array → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Kantenamplitude der Kante (mit Vorzeichen).
Distance Distance Distance Distance distance distance (output_control) real-array → HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Abstand zwischen aufeinanderfolgenden Kanten.
Ergebnis
Sind die Parameterwerte korrekt, dann liefert measure_pos measure_pos MeasurePos MeasurePos MeasurePos measure_pos
den Wert 2 (H_MSG_TRUE ). Andernfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
gen_measure_rectangle2 gen_measure_rectangle2 GenMeasureRectangle2 GenMeasureRectangle2 GenMeasureRectangle2 gen_measure_rectangle2
Nachfolger
close_measure close_measure CloseMeasure CloseMeasure CloseMeasure close_measure
Alternativen
edges_sub_pix edges_sub_pix EdgesSubPix EdgesSubPix EdgesSubPix edges_sub_pix ,
fuzzy_measure_pos fuzzy_measure_pos FuzzyMeasurePos FuzzyMeasurePos FuzzyMeasurePos fuzzy_measure_pos
Siehe auch
measure_pairs measure_pairs MeasurePairs MeasurePairs MeasurePairs measure_pairs ,
fuzzy_measure_pairs fuzzy_measure_pairs FuzzyMeasurePairs FuzzyMeasurePairs FuzzyMeasurePairs fuzzy_measure_pairs ,
fuzzy_measure_pairing fuzzy_measure_pairing FuzzyMeasurePairing FuzzyMeasurePairing FuzzyMeasurePairing fuzzy_measure_pairing
Modul
1D Metrology