Name
moments_region_2ndmoments_region_2ndMomentsRegion2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2nd — Ermitteln der geometrischen Momente von Regionen.
Herror moments_region_2nd(const Hobject Regions, double* M11, double* M20, double* M02, double* Ia, double* Ib)
Herror T_moments_region_2nd(const Hobject Regions, Htuple* M11, Htuple* M20, Htuple* M02, Htuple* Ia, Htuple* Ib)
Herror moments_region_2nd(Hobject Regions, double* M11, double* M20, double* M02, double* Ia, double* Ib)
Herror moments_region_2nd(Hobject Regions, HTuple* M11, HTuple* M20, HTuple* M02, HTuple* Ia, HTuple* Ib)
double HRegion::MomentsRegion2nd(double* M20, double* M02, double* Ia, double* Ib) const
HTuple HRegionArray::MomentsRegion2nd(HTuple* M20, HTuple* M02, HTuple* Ia, HTuple* Ib) const
void MomentsRegion2nd(const HObject& Regions, HTuple* M11, HTuple* M20, HTuple* M02, HTuple* Ia, HTuple* Ib)
HTuple HRegion::MomentsRegion2nd(HTuple* M20, HTuple* M02, HTuple* Ia, HTuple* Ib) const
double HRegion::MomentsRegion2nd(double* M20, double* M02, double* Ia, double* Ib) const
static void HOperatorSet.MomentsRegion2nd(HObject regions, out HTuple m11, out HTuple m20, out HTuple m02, out HTuple ia, out HTuple ib)
HTuple HRegion.MomentsRegion2nd(out HTuple m20, out HTuple m02, out HTuple ia, out HTuple ib)
double HRegion.MomentsRegion2nd(out double m20, out double m02, out double ia, out double ib)
moments_region_2ndmoments_region_2ndMomentsRegion2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2nd berechnet die geometrischen Momente M11M11M11M11M11m11,
M20M20M20M20M20m20 und M02M02M02M02M02m02 der Eingaberegionen in RegionsRegionsRegionsRegionsRegionsregions.
Weiterhin werden die Hauptachsen IaIaIaIaIaia und IbIbIbIbIbib
berechnet.
Die Kovarianzmatrix ist definiert durch:
/ M_20 M_11 \
\ M_11 M_02 /
Das zeilenabhängige Moment 2. Ordnung wird in M20M20M20M20M20m20 und das
spaltenabhängige Moment 2. Ordnung wird in M02M02M02M02M02m02 zurückgegeben.
Das Moment M11M11M11M11M11m11 repräsentiert die Kovarianz zwischen den Zeilen- und
Spaltenkoordinaten der Punkte der Region.
- Berechnung:
-
Es seien r0 und c0 die Koordinaten
des Schwerpunktes einer Region R.
Dann sind die Momente Mij definiert durch:
Mij = SUM ( (r0 - r)^i (c0 - c)^j )
wobei r und c alle Punkte der Region R durchlaufen.
Zusätzlich sind die Längen der 1. und 2. Hauptachse definiert durch:
Ia = h + sqrt ( h^2 - M20 x M02 + M11^2 )
Ib = h - sqrt ( h^2 - M20 x M02 + M11^2 )
wobei
h = (M20 + M02) / 2
Die Gleichung zur Berechnung der 1. und 2. Hauptachse kann von der Definition
der Momente abgeleitet werden durch Diagonalisieren der Kovarianzmatrix und
Umformen der daraus resultierenden Formel.
Wird mehr als eine Region übergeben, werden die Ergebnisse in
Tupeln abgespeichert, wobei der Index eines Wertes in dem Tupel
dem Index einer Region in der Eingabe entspricht.
Bei leerer Region wird für alle Parameter den Wert 0.0 zurückgegeben, soweit kein
anderes Verhalten eingestellt wurde (siehe set_systemset_systemSetSystemset_systemSetSystemSetSystem).
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf Tupelebene.
Trägheitsprodukt der Achsen durch den Schwerpunkt
parallel zu den Koordinatenachsen.
Moment 2. Ordnung (zeilenabhängig).
Moment 2. Ordnung (spaltenabhängig).
IaIaIaIaIaia (output_control) real(-array) → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Länge der 1. Hauptachse der Eingaberegion.
IbIbIbIbIbib (output_control) real(-array) → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Länge der 2. Hauptachse der Eingaberegion.
Sei F die Fläche einer Region, dann beträgt die
Laufzeitkomplexität im Mittel O(sqrt(F)).
moments_region_2ndmoments_region_2ndMomentsRegion2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2nd liefert den Wert 2 (H_MSG_TRUE), falls die Eingabe nicht
leer ist. Das Verhalten bei leerer Eingabe (keine Eingaberegionen
vorhanden) lässt sich mittels
set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>) festlegen.
Das Verhalten bei einer leeren Region (Region ist die leere Menge)
wird mit set_system('empty_region_result',<Result>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)set_system("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>)
bestimmt. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
thresholdthresholdThresholdthresholdThresholdThreshold,
regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing,
connectionconnectionConnectionconnectionConnectionConnection
moments_region_2nd_invarmoments_region_2nd_invarMomentsRegion2ndInvarmoments_region_2nd_invarMomentsRegion2ndInvarMomentsRegion2ndInvar
elliptic_axiselliptic_axisEllipticAxiselliptic_axisEllipticAxisEllipticAxis
R. Haralick, L. Shapiro
„Computer and Robot Vision“
Addison-Wesley, 1992, pp. 73-75
Foundation