gen_measure_arc
— Vorbereitung der Extraktion geradliniger Kanten senkrecht zu einem
Kreisringsegment.
gen_measure_arc( : : CenterRow, CenterCol, Radius, AngleStart, AngleExtent, AnnulusRadius, Width, Height, Interpolation : MeasureHandle)
gen_measure_arc
bereitet die Extraktion geradliniger
Kanten, die senkrecht zu einem Kreisringsegment liegen, vor. Mit
Kreisring ist hier ein Kreisbogen mit zugehöriger Dicke gemeint.
Der Mittelpunkt des Kreisbogens wird in den Parametern
CenterRow
und CenterCol
übergeben, sein Radius in
Radius
, der Startwinkel in AngleStart
und der
Winkelbereich des Bogens relativ zum Startwinkel in
AngleExtent
. Falls AngleExtent
> 0 wird ein
Bogen entgegen dem Uhrzeigersinn erzeugt, ansonsten ein Bogen im
Uhrzeigersinn. Der Radius des Rings, d.h. seine halbe Dicke, wird
mit AnnulusRadius
bestimmt.
Das Konzept der 1D-Vermessung ist bei der Einleitung zu Kapitel 1D-Vermessung beschrieben.
Der Algorithmus zur Kantenextraktion ist bei measure_pos
beschrieben. Wie dort dargestellt, können verschiedene Arten der
Interpolation zur Berechnung des Grauwertprofils verwendet werden.
Mit Interpolation
= 'nearest_neighbor' werden die
Grauwerte bei der Messung durch den Grauwert des nächstgelegenen
Pixels, d.h. durch konstante Interpolation, bestimmt. Für
Interpolation
= 'bilinear' wird bilineare
Interpolation verwendet und für Interpolation
=
'bicubic' bikubische Interpolation.
Um die eigentlichen Messungen möglichst schnell ausführen zu können, werden
alle Berechnungen, die für mehrere Messungen verwendet werden können, schon
im Operator gen_measure_arc
ausgeführt. Hierzu wird eine optimierte
Datenstruktur, ein sogenanntes Messobjekt, aufgebaut, das in
MeasureHandle
zurückgegeben wird. Die später bei der Messung
verwendete Bildgröße muss in den Parametern Width
und
Height
angegeben werden.
Der Systemparameter 'int_zooming' (siehe
set_system
) beeinflusst die Genauigkeit und Geschwindigkeit
der Berechnung des Messobjekts. Falls 'int_zooming'
auf 'true' gesetzt wird, werden die internen Berechnungen
in Festkommaarithmetik durchgeführt, was zu wesentlich kürzeren
Laufzeiten führt. Allerdings ist hier die geometrische Genauigkeit
etwas geringer. Falls 'int_zooming' auf 'false'
gesetzt wird, werden die internen Berechnungen in
Gleitkommaarithmetik durchgeführt, was zur bestmöglichen
geometrischen Genauigkeit führt, die Laufzeit allerdings
signifikant erhöht.
Es ist zu beachten, dass bei Verwendung von bilinearer oder bikubischer Interpolation nicht nur das Messrechteck ins Bild passen muss, sondern auch ein Rand um das Messrechteck. Die Breite des Randes (in alle vier Richtungen) muss mindestens ein Pixel für bilineare Interpolation und mindestens zwei Pixel für bikubische Interpolation sein. Für Projektionslinien, die diese Bedingung nicht erfüllen, wird kein Grauwert berechnet. Somit kann an diesen Stellen auch keine Kante extrahiert 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.
CenterRow
(input_control) point.y →
(real / integer)
Zeilenkoordinate des Mittelpunktes des Bogens.
Defaultwert: 100.0
Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0
Typischer Wertebereich: 0.0
≤
CenterRow
≤
511.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
CenterCol
(input_control) point.x →
(real / integer)
Spaltenkoordinate des Mittelpunktes des Bogens.
Defaultwert: 100.0
Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0
Typischer Wertebereich: 0.0
≤
CenterCol
≤
511.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Radius
(input_control) number →
(real / integer)
Radius des Bogens.
Defaultwert: 50.0
Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0
Typischer Wertebereich: 0.0
≤
Radius
≤
511.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
AngleStart
(input_control) angle.rad →
(real / integer)
Start des Bogens im Bogenmaß.
Defaultwert: 0.0
Wertevorschläge: -3.14159, -2.35619, -1.57080, -0.78540, 0.0, 0.78540, 1.57080, 2.35619, 3.14159
Typischer Wertebereich: -3.14159
≤
AngleStart
≤
3.14159
(lin)
Minimale Schrittweite: 0.03142
Empfohlene Schrittweite: 0.31416
AngleExtent
(input_control) angle.rad →
(real / integer)
Winkelausdehnung des Bogens im Bogenmaß.
Defaultwert: 6.28318
Wertevorschläge: -6.28318, -5.49779, -4.71239, -3.92699, -3.14159, -2.35619, -1.57080, -0.78540, 0.78540, 1.57080, 2.35619, 3.14159, 3.92699, 4.71239, 5.49779, 6.28318
Typischer Wertebereich: -6.28318
≤
AngleExtent
≤
6.28318
(lin)
Minimale Schrittweite: 0.03142
Empfohlene Schrittweite: 0.31416
Restriktion: AngleExtent != 0.0
AnnulusRadius
(input_control) number →
(real / integer)
Radius (halbe Breite) des Rings.
Defaultwert: 10.0
Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0
Typischer Wertebereich: 0.0
≤
AnnulusRadius
≤
511.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Restriktion: AnnulusRadius <= Radius
Width
(input_control) extent.x →
(integer)
Breite des später zu verarbeitenden Bildes.
Defaultwert: 512
Wertevorschläge: 128, 160, 192, 256, 320, 384, 512, 640, 768
Typischer Wertebereich: 0
≤
Width
≤
1024
(lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 16
Height
(input_control) extent.y →
(integer)
Höhe des später zu verarbeitenden Bildes.
Defaultwert: 512
Wertevorschläge: 120, 128, 144, 240, 256, 288, 480, 512, 576
Typischer Wertebereich: 0
≤
Height
≤
1024
(lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 16
Interpolation
(input_control) string →
(string)
Art der zu verwendenden Interpolation.
Defaultwert: 'nearest_neighbor'
Werteliste: 'bicubic' , 'bilinear' , 'nearest_neighbor'
MeasureHandle
(output_control) measure →
(handle)
Handle des Messobjekts.
Sind die Parameterwerte korrekt, dann liefert
gen_measure_arc
den Wert 2 (H_MSG_TRUE). Andernfalls wird eine
Fehlerbehandlung durchgeführt.
measure_pos
,
measure_pairs
,
fuzzy_measure_pos
,
fuzzy_measure_pairs
,
fuzzy_measure_pairing
1D Metrology