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

gen_measure_arc( : : CenterRow, CenterCol, Radius, AngleStart, AngleExtent, AnnulusRadius, Width, Height, Interpolation : MeasureHandle)

Herror T_gen_measure_arc(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 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_arcGenMeasureArcGenMeasureArcgen_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 CenterRowCenterRowCenterRowcenterRowcenter_row und CenterColCenterColCenterColcenterColcenter_col übergeben, sein Radius in RadiusRadiusRadiusradiusradius, der Startwinkel in AngleStartAngleStartAngleStartangleStartangle_start und der Winkelbereich des Bogens relativ zum Startwinkel in AngleExtentAngleExtentAngleExtentangleExtentangle_extent. Falls AngleExtentAngleExtentAngleExtentangleExtentangle_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 AnnulusRadiusAnnulusRadiusAnnulusRadiusannulusRadiusannulus_radius bestimmt.

Das Konzept der 1D-Vermessung ist bei der Einleitung zu Kapitel 1D-Vermessung beschrieben.

Der Algorithmus zur Kantenextraktion ist bei measure_posmeasure_posMeasurePosMeasurePosmeasure_pos beschrieben. Wie dort dargestellt, können verschiedene Arten der Interpolation zur Berechnung des Grauwertprofils verwendet werden. Mit InterpolationInterpolationInterpolationinterpolationinterpolation = '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 InterpolationInterpolationInterpolationinterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear" wird bilineare Interpolation verwendet und für InterpolationInterpolationInterpolationinterpolationinterpolation = '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_arcGenMeasureArcGenMeasureArcgen_measure_arc ausgeführt. Hierzu wird eine optimierte Datenstruktur, ein sogenanntes Messobjekt, aufgebaut, das in MeasureHandleMeasureHandleMeasureHandlemeasureHandlemeasure_handle zurückgegeben wird. Die später bei der Messung verwendete Bildgröße muss in den Parametern WidthWidthWidthwidthwidth und HeightHeightHeightheightheight angegeben werden.

Der Systemparameter 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming" (siehe set_systemset_systemSetSystemSetSystemset_system) beeinflusst die Genauigkeit und Geschwindigkeit der Berechnung des Messobjekts. Falls 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming" auf '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" auf '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

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

CenterRowCenterRowCenterRowcenterRowcenter_row (input_control)  point.y HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Zeilenkoordinate des Mittelpunktes des Bogens.

Default: 100.0

Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0

Wertebereich: 0.0 ≤ CenterRow CenterRow CenterRow centerRow center_row (lin)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

CenterColCenterColCenterColcenterColcenter_col (input_control)  point.x HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Spaltenkoordinate des Mittelpunktes des Bogens.

Default: 100.0

Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0

Wertebereich: 0.0 ≤ CenterCol CenterCol CenterCol centerCol center_col (lin)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

RadiusRadiusRadiusradiusradius (input_control)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Radius des Bogens.

Default: 50.0

Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0

Wertebereich: Radius Radius Radius radius radius (lin)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

Restriktion: AnnulusRadius <= Radius

AngleStartAngleStartAngleStartangleStartangle_start (input_control)  angle.rad HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Start des Bogens im Bogenmaß.

Default: 0.0

Wertevorschläge: -3.14159, -2.35619, -1.57080, -0.78540, 0.0, 0.78540, 1.57080, 2.35619, 3.14159

Wertebereich: -3.14159 ≤ AngleStart AngleStart AngleStart angleStart angle_start ≤ 3.14159 (lin)

Minimale Schrittweite: 0.03142

Empfohlene Schrittweite: 0.31416

AngleExtentAngleExtentAngleExtentangleExtentangle_extent (input_control)  angle.rad HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Winkelausdehnung des Bogens im Bogenmaß.

Default: 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

Wertebereich: -6.28318 ≤ AngleExtent AngleExtent AngleExtent angleExtent angle_extent ≤ 6.28318 (lin)

Minimale Schrittweite: 0.03142

Empfohlene Schrittweite: 0.31416

AnnulusRadiusAnnulusRadiusAnnulusRadiusannulusRadiusannulus_radius (input_control)  number HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Radius (halbe Breite) des Rings.

Default: 10.0

Wertevorschläge: 10.0, 20.0, 50.0, 100.0, 200.0, 300.0, 400.0, 500.0

Wertebereich: AnnulusRadius AnnulusRadius AnnulusRadius annulusRadius annulus_radius (lin)

Minimale Schrittweite: 1.0

Empfohlene Schrittweite: 10.0

Restriktion: AnnulusRadius > 0

WidthWidthWidthwidthwidth (input_control)  extent.x HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite des später zu verarbeitenden Bildes.

Default: 512

Wertevorschläge: 128, 160, 192, 256, 320, 384, 512, 640, 768

Wertebereich: 0 ≤ Width Width Width width width (lin)

Minimale Schrittweite: 1

Empfohlene Schrittweite: 16

HeightHeightHeightheightheight (input_control)  extent.y HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Höhe des später zu verarbeitenden Bildes.

Default: 512

Wertevorschläge: 120, 128, 144, 240, 256, 288, 480, 512, 576

Wertebereich: 0 ≤ Height Height Height height height (lin)

Minimale Schrittweite: 1

Empfohlene Schrittweite: 16

InterpolationInterpolationInterpolationinterpolationinterpolation (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Art der zu verwendenden Interpolation.

Default: 'nearest_neighbor' "nearest_neighbor" "nearest_neighbor" "nearest_neighbor" "nearest_neighbor"

Werteliste: 'bicubic'"bicubic""bicubic""bicubic""bicubic", 'bilinear'"bilinear""bilinear""bilinear""bilinear", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor"

MeasureHandleMeasureHandleMeasureHandlemeasureHandlemeasure_handle (output_control)  measure HMeasure, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Messobjekts.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert gen_measure_arcgen_measure_arcGenMeasureArcGenMeasureArcgen_measure_arc den Wert 2 ( H_MSG_TRUE) . Andernfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

draw_circledraw_circleDrawCircleDrawCircledraw_circle

Nachfolger

measure_posmeasure_posMeasurePosMeasurePosmeasure_pos, measure_pairsmeasure_pairsMeasurePairsMeasurePairsmeasure_pairs, fuzzy_measure_posfuzzy_measure_posFuzzyMeasurePosFuzzyMeasurePosfuzzy_measure_pos, fuzzy_measure_pairsfuzzy_measure_pairsFuzzyMeasurePairsFuzzyMeasurePairsfuzzy_measure_pairs, fuzzy_measure_pairingfuzzy_measure_pairingFuzzyMeasurePairingFuzzyMeasurePairingfuzzy_measure_pairing

Alternativen

edges_sub_pixedges_sub_pixEdgesSubPixEdgesSubPixedges_sub_pix

Siehe auch

gen_measure_rectangle2gen_measure_rectangle2GenMeasureRectangle2GenMeasureRectangle2gen_measure_rectangle2

Modul

1D Metrology