gen_measure_rectangle2
— Vorbereitung der Extraktion geradliniger Kanten senkrecht zu einem Rechteck.
gen_measure_rectangle2( : : Row, Column, Phi, Length1, Length2, Width, Height, Interpolation : MeasureHandle)
gen_measure_rectangle2
bereitet die Extraktion
geradliniger Kanten, die senkrecht zur Hauptachse eines
Rechtecks liegen, vor. Der Mittelpunkt des Rechtecks wird in den
Parametern Row
und Column
übergeben, die Richtung
der Hauptachse in Phi
und die Längen der beiden Achsen,
d.h. die halben Durchmesser des Rechtecks, in Length1
und
Length2
.
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 beschrieben, 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_rectangle2
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.
Row
(input_control) rectangle2.center.y →
(real / integer)
Zeilenkoordinate des Mittelpunktes des Rechtecks.
Defaultwert: 300.0
Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0
Typischer Wertebereich: 0.0
≤
Row
≤
511.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Column
(input_control) rectangle2.center.x →
(real / integer)
Spaltenkoordinate des Mittelpunktes des Rechtecks.
Defaultwert: 200.0
Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0
Typischer Wertebereich: 0.0
≤
Column
≤
511.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Phi
(input_control) rectangle2.angle.rad →
(real / integer)
Winkel der Längsachse des Rechtecks zur Horizontalen (Bogenmaß).
Defaultwert: 0.0
Wertevorschläge: -1.178097, -0.785398, -0.392699, 0.0, 0.392699, 0.785398, 1.178097
Typischer Wertebereich: -1.178097
≤
Phi
≤
1.178097
(lin)
Minimale Schrittweite: 0.001
Empfohlene Schrittweite: 0.1
Restriktion: - pi < Phi && Phi <= pi
Length1
(input_control) rectangle2.hwidth →
(real / integer)
Halbe Breite des Rechtecks.
Defaultwert: 100.0
Wertevorschläge: 3.0, 5.0, 10.0, 15.0, 20.0, 50.0, 100.0, 200.0, 300.0, 500.0
Typischer Wertebereich: 1.0
≤
Length1
≤
511.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Restriktion: Length1 >= 1.0
Length2
(input_control) rectangle2.hheight →
(real / integer)
Halbe Höhe des Rechtecks.
Defaultwert: 20.0
Wertevorschläge: 1.0, 2.0, 3.0, 5.0, 10.0, 15.0, 20.0, 50.0, 100.0, 200.0
Typischer Wertebereich: 0.0
≤
Length2
≤
511.0
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Restriktion: Length2 >= 0.0
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_rectangle2
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
,
measure_thresh
1D Metrology