moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXldmoments_any_points_xld (Operator)

Name

moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXldmoments_any_points_xld — Geometrische Momente beliebiger Ordnung von Konturen oder Polygonen, die wie Punktwolken behandelt werden.

Signatur

moments_any_points_xld(XLD : : Mode, Area, CenterRow, CenterCol, P, Q : M)

Herror moments_any_points_xld(const Hobject XLD, const char* Mode, double Area, double CenterRow, double CenterCol, const Hlong P, const Hlong Q, double* M)

Herror T_moments_any_points_xld(const Hobject XLD, const Htuple Mode, const Htuple Area, const Htuple CenterRow, const Htuple CenterCol, const Htuple P, const Htuple Q, Htuple* M)

void MomentsAnyPointsXld(const HObject& XLD, const HTuple& Mode, const HTuple& Area, const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& P, const HTuple& Q, HTuple* M)

HTuple HXLD::MomentsAnyPointsXld(const HString& Mode, const HTuple& Area, const HTuple& CenterRow, const HTuple& CenterCol, const HTuple& P, const HTuple& Q) const

double HXLD::MomentsAnyPointsXld(const HString& Mode, double Area, double CenterRow, double CenterCol, Hlong P, Hlong Q) const

double HXLD::MomentsAnyPointsXld(const char* Mode, double Area, double CenterRow, double CenterCol, Hlong P, Hlong Q) const

double HXLD::MomentsAnyPointsXld(const wchar_t* Mode, double Area, double CenterRow, double CenterCol, Hlong P, Hlong Q) const   (Nur Windows)

static void HOperatorSet.MomentsAnyPointsXld(HObject XLD, HTuple mode, HTuple area, HTuple centerRow, HTuple centerCol, HTuple p, HTuple q, out HTuple m)

HTuple HXLD.MomentsAnyPointsXld(string mode, HTuple area, HTuple centerRow, HTuple centerCol, HTuple p, HTuple q)

double HXLD.MomentsAnyPointsXld(string mode, double area, double centerRow, double centerCol, int p, int q)

def moments_any_points_xld(xld: HObject, mode: str, area: MaybeSequence[float], center_row: MaybeSequence[float], center_col: MaybeSequence[float], p: MaybeSequence[int], q: MaybeSequence[int]) -> Sequence[float]

def moments_any_points_xld_s(xld: HObject, mode: str, area: MaybeSequence[float], center_row: MaybeSequence[float], center_col: MaybeSequence[float], p: MaybeSequence[int], q: MaybeSequence[int]) -> float

Beschreibung

moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXldMomentsAnyPointsXldmoments_any_points_xld berechnet Momente beliebiger Ordnung der durch Konturen oder Polygonen XLDXLDXLDXLDXLDxld gegebenen Punktwolken (d.h. die Reihenfolge der Kontur- oder Polygonpunkte wird nicht berücksichtigt).

Abhängig vom Parameter ModeModeModeModemodemode werden die berechneten Momente wie folgt normiert:

'unnormalized':

Keine Normalisierung.

'unnormalized_central':

Verschiebung der Konturpunkte um ihren Schwerpunkt

'normalized':

Normalisierung durch die Fläche A = AreaAreaAreaAreaareaarea von XLDXLDXLDXLDXLDxld

'central':

Normalisierung durch die Fläche A = AreaAreaAreaAreaareaarea und zusätzlich Verschiebung der Bildregion um ihren Schwerpunkt

Für die Normierung der Momente werden ggf. drei spezielle Werte benötigt: Die Fläche AreaAreaAreaAreaareaarea sowie die Koordinaten CenterRowCenterRowCenterRowCenterRowcenterRowcenter_row,CenterRowCenterRowCenterRowCenterRowcenterRowcenter_row des Schwerpunktes (diese können mittels area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld berechnet werden).

Bei geschlossenen Konturen oder Polygonen (Anfangspunkt = Endpunkt) wird der Endpunkt der Kontur oder des Polygons nicht berücksichtigt, da er sonst doppeltes Gewicht erhielte.

moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXldMomentsAnyPointsXldmoments_any_points_xld sollte dann verwendet werden, wenn die Kontur XLDXLDXLDXLDXLDxld entweder nicht kreuzungsfrei ist oder nicht kreuzungsfrei durch eine Line vom End- zum Anfangspunkt geschlossen werden kann. In diesem Fall liefert moments_xldmoments_xldMomentsXldMomentsXldMomentsXldmoments_xld keine sinnvollen Ergebnisse. Ob sich die Konturen oder Polygone selbst schneiden, kann leicht mit test_self_intersection_xldtest_self_intersection_xldTestSelfIntersectionXldTestSelfIntersectionXldTestSelfIntersectionXldtest_self_intersection_xld überprüft werden.

Wird mehr als eine Kontur oder ein Polygon übergeben, dann werden die Momente für die einzelnen Konturen bzw. Polygone hintereinander in MMMMmm abgelegt.

Ausführungsinformationen

Parameter

XLDXLDXLDXLDXLDxld (input_object)  xld(-array) objectHXLDHObjectHXLDHobject

Zu untersuchende Konturen bzw. Polygone.

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

Modus.

Defaultwert: 'unnormalized' "unnormalized" "unnormalized" "unnormalized" "unnormalized" "unnormalized"

Wertevorschläge: 'unnormalized'"unnormalized""unnormalized""unnormalized""unnormalized""unnormalized", 'unnormalized_central'"unnormalized_central""unnormalized_central""unnormalized_central""unnormalized_central""unnormalized_central", 'normalized'"normalized""normalized""normalized""normalized""normalized", 'central'"central""central""central""central""central"

AreaAreaAreaAreaareaarea (input_control)  real(-array) HTupleMaybeSequence[float]HTupleHtuple (real) (double) (double) (double)

Fläche der Punktwolke.

CenterRowCenterRowCenterRowCenterRowcenterRowcenter_row (input_control)  point.y(-array) HTupleMaybeSequence[float]HTupleHtuple (real) (double) (double) (double)

Zeilenindex des Schwerpunktes.

CenterColCenterColCenterColCenterColcenterColcenter_col (input_control)  point.x(-array) HTupleMaybeSequence[float]HTupleHtuple (real) (double) (double) (double)

Spaltenindex des Schwerpunktes.

PPPPpp (input_control)  point.x(-array) HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Erster Index der zu berechnenden Momente .

Defaultwert: 1

Wertevorschläge: 0, 1, 2, 3, 4

QQQQqq (input_control)  point.x(-array) HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zweiter Index der zu berechnenden Momente .

Defaultwert: 1

Wertevorschläge: 0, 1, 2, 3, 4

MMMMmm (output_control)  real(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Die berechneten Momente.

Komplexität

Sei n die Anzahl der Punkte in der Kontur bzw. dem Polygon. Dann ist die Laufzeit O(n).

Ergebnis

moments_any_points_xldmoments_any_points_xldMomentsAnyPointsXldMomentsAnyPointsXldMomentsAnyPointsXldmoments_any_points_xld liefert den Wert 2 (H_MSG_TRUE), falls die Eingabe nicht leer ist. Das Verhalten bei leerer Eingabe lässt sich mittels set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>) festlegen. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld, gen_contours_skeleton_xldgen_contours_skeleton_xldGenContoursSkeletonXldGenContoursSkeletonXldGenContoursSkeletonXldgen_contours_skeleton_xld, smooth_contours_xldsmooth_contours_xldSmoothContoursXldSmoothContoursXldSmoothContoursXldsmooth_contours_xld, gen_polygons_xldgen_polygons_xldGenPolygonsXldGenPolygonsXldGenPolygonsXldgen_polygons_xld

Alternativen

moments_points_xldmoments_points_xldMomentsPointsXldMomentsPointsXldMomentsPointsXldmoments_points_xld, moments_any_xldmoments_any_xldMomentsAnyXldMomentsAnyXldMomentsAnyXldmoments_any_xld

Siehe auch

moments_points_xldmoments_points_xldMomentsPointsXldMomentsPointsXldMomentsPointsXldmoments_points_xld, area_center_points_xldarea_center_points_xldAreaCenterPointsXldAreaCenterPointsXldAreaCenterPointsXldarea_center_points_xld, moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndMomentsRegion2ndmoments_region_2nd, area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center

Modul

Foundation