gen_measure_arcT_gen_measure_arcGenMeasureArcGenMeasureArcgen_measure_arc (Operator)
Name
gen_measure_arcT_gen_measure_arcGenMeasureArcGenMeasureArcgen_measure_arc — Vorbereitung der Extraktion geradliniger Kanten senkrecht zu einem
Kreisringsegment.
Signatur
void GenMeasureArc(const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& Radius, const HTuple& AngleStart, const HTuple& AngleExtent, const HTuple& AnnulusRadius, const HTuple& Width, const HTuple& Height, const HTuple& Interpolation, HTuple* MeasureHandle)
void HMeasure::HMeasure(const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& Radius, const HTuple& AngleStart, const HTuple& AngleExtent, const HTuple& AnnulusRadius, Hlong Width, Hlong Height, const HString& Interpolation)
void HMeasure::HMeasure(double CenterRow, double CenterCol, double Radius, double AngleStart, double AngleExtent, double AnnulusRadius, Hlong Width, Hlong Height, const HString& Interpolation)
void HMeasure::HMeasure(double CenterRow, double CenterCol, double Radius, double AngleStart, double AngleExtent, double AnnulusRadius, Hlong Width, Hlong Height, const char* Interpolation)
void HMeasure::HMeasure(double CenterRow, double CenterCol, double Radius, double AngleStart, double AngleExtent, double AnnulusRadius, Hlong Width, Hlong Height, const wchar_t* Interpolation)
(Nur Windows)
void HMeasure::GenMeasureArc(const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& Radius, const HTuple& AngleStart, const HTuple& AngleExtent, const HTuple& AnnulusRadius, Hlong Width, Hlong Height, const HString& Interpolation)
void HMeasure::GenMeasureArc(double CenterRow, double CenterCol, double Radius, double AngleStart, double AngleExtent, double AnnulusRadius, Hlong Width, Hlong Height, const HString& Interpolation)
void HMeasure::GenMeasureArc(double CenterRow, double CenterCol, double Radius, double AngleStart, double AngleExtent, double AnnulusRadius, Hlong Width, Hlong Height, const char* Interpolation)
void HMeasure::GenMeasureArc(double CenterRow, double CenterCol, double Radius, double AngleStart, double AngleExtent, double AnnulusRadius, Hlong Width, Hlong Height, const wchar_t* Interpolation)
(Nur Windows)
static void HOperatorSet.GenMeasureArc(HTuple centerRow, HTuple centerCol, HTuple radius, HTuple angleStart, HTuple angleExtent, HTuple annulusRadius, HTuple width, HTuple height, HTuple interpolation, out HTuple measureHandle)
public HMeasure(HTuple centerRow, HTuple centerCol, HTuple radius, HTuple angleStart, HTuple angleExtent, HTuple annulusRadius, int width, int height, string interpolation)
public HMeasure(double centerRow, double centerCol, double radius, double angleStart, double angleExtent, double annulusRadius, int width, int height, string interpolation)
void HMeasure.GenMeasureArc(HTuple centerRow, HTuple centerCol, HTuple radius, HTuple angleStart, HTuple angleExtent, HTuple annulusRadius, int width, int height, string interpolation)
void HMeasure.GenMeasureArc(double centerRow, double centerCol, double radius, double angleStart, double angleExtent, double annulusRadius, int width, int height, string interpolation)
def gen_measure_arc(center_row: Union[int, float], center_col: Union[int, float], radius: Union[int, float], angle_start: Union[int, float], angle_extent: Union[int, float], annulus_radius: Union[int, float], width: int, height: int, interpolation: str) -> HHandle
Beschreibung
gen_measure_arcgen_measure_arcGenMeasureArcGenMeasureArcGenMeasureArcgen_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
CenterRowCenterRowCenterRowCenterRowcenterRowcenter_row und CenterColCenterColCenterColCenterColcenterColcenter_col übergeben, sein Radius in
RadiusRadiusRadiusRadiusradiusradius, der Startwinkel in AngleStartAngleStartAngleStartAngleStartangleStartangle_start und der
Winkelbereich des Bogens relativ zum Startwinkel in
AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent. Falls AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent > 0 wird ein
Bogen entgegen dem Uhrzeigersinn erzeugt, ansonsten ein Bogen im
Uhrzeigersinn. Der Radius des Rings, d.h. seine halbe Dicke, wird
mit AnnulusRadiusAnnulusRadiusAnnulusRadiusAnnulusRadiusannulusRadiusannulus_radius bestimmt.
Das Konzept der 1D-Vermessung ist bei der Einleitung
zu Kapitel 1D-Vermessung beschrieben.
Der Algorithmus zur Kantenextraktion ist bei measure_posmeasure_posMeasurePosMeasurePosMeasurePosmeasure_pos
beschrieben. Wie dort dargestellt, können verschiedene Arten der
Interpolation zur Berechnung des Grauwertprofils verwendet werden.
Mit InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation = 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor" werden die
Grauwerte bei der Messung durch den Grauwert des nächstgelegenen
Pixels, d.h. durch konstante Interpolation, bestimmt. Für
InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear" wird bilineare
Interpolation verwendet und für InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation =
'bicubic'"bicubic""bicubic""bicubic""bicubic""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_arcgen_measure_arcGenMeasureArcGenMeasureArcGenMeasureArcgen_measure_arc ausgeführt. Hierzu wird eine optimierte
Datenstruktur, ein sogenanntes Messobjekt, aufgebaut, das in
MeasureHandleMeasureHandleMeasureHandleMeasureHandlemeasureHandlemeasure_handle zurückgegeben wird. Die später bei der Messung
verwendete Bildgröße muss in den Parametern WidthWidthWidthWidthwidthwidth und
HeightHeightHeightHeightheightheight angegeben werden.
Der Systemparameter 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming""int_zooming" (siehe
set_systemset_systemSetSystemSetSystemSetSystemset_system) beeinflusst die Genauigkeit und Geschwindigkeit
der Berechnung des Messobjekts. Falls 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming""int_zooming"
auf 'true'"true""true""true""true""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'"int_zooming""int_zooming""int_zooming""int_zooming""int_zooming" auf 'false'"false""false""false""false""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.
Achtung
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.
Es ist außerdem zu beachten, dass die Mittelpunktskoordinaten des
Kreisringsegments intern gerundet werden, so dass der Mittelpunkt auf dem
Pixelraster liegt. Dadurch kann Konsistenz sichergestellt 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.
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.
Parameter
CenterRowCenterRowCenterRowCenterRowcenterRowcenter_row (input_control) point.y → HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
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
CenterRow
CenterRow
CenterRow
centerRow
center_row
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
CenterColCenterColCenterColCenterColcenterColcenter_col (input_control) point.x → HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
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
CenterCol
CenterCol
CenterCol
centerCol
center_col
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
RadiusRadiusRadiusRadiusradiusradius (input_control) number → HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
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:
Radius
Radius
Radius
Radius
radius
radius
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Restriktion: AnnulusRadius <= Radius
AngleStartAngleStartAngleStartAngleStartangleStartangle_start (input_control) angle.rad → HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
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
AngleStart
AngleStart
AngleStart
angleStart
angle_start
≤
3.14159 (lin)
Minimale Schrittweite: 0.03142
Empfohlene Schrittweite: 0.31416
AngleExtentAngleExtentAngleExtentAngleExtentangleExtentangle_extent (input_control) angle.rad → HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
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
AngleExtent
AngleExtent
AngleExtent
angleExtent
angle_extent
≤
6.28318 (lin)
Minimale Schrittweite: 0.03142
Empfohlene Schrittweite: 0.31416
AnnulusRadiusAnnulusRadiusAnnulusRadiusAnnulusRadiusannulusRadiusannulus_radius (input_control) number → HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
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:
AnnulusRadius
AnnulusRadius
AnnulusRadius
AnnulusRadius
annulusRadius
annulus_radius
(lin)
Minimale Schrittweite: 1.0
Empfohlene Schrittweite: 10.0
Restriktion: AnnulusRadius > 0
WidthWidthWidthWidthwidthwidth (input_control) extent.x → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
Breite des später zu verarbeitenden Bildes.
Defaultwert: 512
Wertevorschläge: 128, 160, 192, 256, 320, 384, 512, 640, 768
Typischer Wertebereich: 0
≤
Width
Width
Width
Width
width
width
(lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 16
HeightHeightHeightHeightheightheight (input_control) extent.y → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
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
Height
Height
Height
height
height
(lin)
Minimale Schrittweite: 1
Empfohlene Schrittweite: 16
InterpolationInterpolationInterpolationInterpolationinterpolationinterpolation (input_control) string → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Art der zu verwendenden Interpolation.
Defaultwert:
'nearest_neighbor'
"nearest_neighbor"
"nearest_neighbor"
"nearest_neighbor"
"nearest_neighbor"
"nearest_neighbor"
Werteliste: 'bicubic'"bicubic""bicubic""bicubic""bicubic""bicubic", 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor"
MeasureHandleMeasureHandleMeasureHandleMeasureHandlemeasureHandlemeasure_handle (output_control) measure → HMeasure, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des Messobjekts.
Ergebnis
Sind die Parameterwerte korrekt, dann liefert
gen_measure_arcgen_measure_arcGenMeasureArcGenMeasureArcGenMeasureArcgen_measure_arc den Wert 2 (H_MSG_TRUE). Andernfalls wird eine
Fehlerbehandlung durchgeführt.
Vorgänger
draw_circledraw_circleDrawCircleDrawCircleDrawCircledraw_circle
Nachfolger
measure_posmeasure_posMeasurePosMeasurePosMeasurePosmeasure_pos,
measure_pairsmeasure_pairsMeasurePairsMeasurePairsMeasurePairsmeasure_pairs,
fuzzy_measure_posfuzzy_measure_posFuzzyMeasurePosFuzzyMeasurePosFuzzyMeasurePosfuzzy_measure_pos,
fuzzy_measure_pairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairsFuzzyMeasurePairsfuzzy_measure_pairs,
fuzzy_measure_pairingfuzzy_measure_pairingFuzzyMeasurePairingFuzzyMeasurePairingFuzzyMeasurePairingfuzzy_measure_pairing
Alternativen
edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixEdgesSubPixedges_sub_pix
Siehe auch
gen_measure_rectangle2gen_measure_rectangle2GenMeasureRectangle2GenMeasureRectangle2GenMeasureRectangle2gen_measure_rectangle2
Modul
1D Metrology