moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2nd (Operator)

Name

moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2nd — Ermitteln der geometrischen Momente von Regionen.

Signatur

moments_region_2nd(Regions : : : M11, M20, M02, Ia, Ib)

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)

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)

Beschreibung

moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndMomentsRegion2nd berechnet die geometrischen Momente M11M11M11M11m11, M20M20M20M20m20 und M02M02M02M02m02 der Eingaberegionen in RegionsRegionsRegionsRegionsregions. Weiterhin werden die Hauptachsen IaIaIaIaia und IbIbIbIbib berechnet.

Die Kovarianzmatrix ist definiert durch:

Das zeilenabhängige Moment 2. Ordnung wird in M20M20M20M20m20 und das spaltenabhängige Moment 2. Ordnung wird in M02M02M02M02m02 zurückgegeben. Das Moment M11M11M11M11m11 repräsentiert die Kovarianz zwischen den Zeilen- und Spaltenkoordinaten der Punkte der Region.

Berechnung:

Es seien und die Koordinaten des Schwerpunktes einer Region R. Dann sind die Momente definiert durch:

wobei r und c alle Punkte der Region R durchlaufen.

Zusätzlich sind die Längen der 1. und 2. Hauptachse definiert durch:

wobei

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 der Wert 0.0 zurückgegeben, soweit kein anderes Verhalten eingestellt wurde (siehe set_systemset_systemSetSystemSetSystemSetSystem).

Ausführungsinformationen

Parameter

RegionsRegionsRegionsRegionsregions (input_object)  region(-array) objectHRegionHRegionHobject

Eingaberegionen.

M11M11M11M11m11 (output_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Trägheitsprodukt der Achsen durch den Schwerpunkt parallel zu den Koordinatenachsen.

M20M20M20M20m20 (output_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Moment 2. Ordnung (zeilenabhängig).

M02M02M02M02m02 (output_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Moment 2. Ordnung (spaltenabhängig).

IaIaIaIaia (output_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Länge der 1. Hauptachse der Eingaberegion.

IbIbIbIbib (output_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Länge der 2. Hauptachse der Eingaberegion.

Komplexität

Sei F die Fläche einer Region, dann beträgt die Laufzeitkomplexität im Mittel O(sqrt(F)).

Ergebnis

moments_region_2ndmoments_region_2ndMomentsRegion2ndMomentsRegion2ndMomentsRegion2nd 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>)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>)SetSystem("empty_region_result",<Result>)SetSystem("empty_region_result",<Result>) bestimmt. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

thresholdthresholdThresholdThresholdThreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowing, connectionconnectionConnectionConnectionConnection

Alternativen

moments_region_2nd_invarmoments_region_2nd_invarMomentsRegion2ndInvarMomentsRegion2ndInvarMomentsRegion2ndInvar

Siehe auch

elliptic_axiselliptic_axisEllipticAxisEllipticAxisEllipticAxis

Literatur

R. Haralick, L. Shapiro „Computer and Robot Vision“ Addison-Wesley, 1992, pp. 73-75

Modul

Foundation