circularitycircularityCircularityCircularity (Operator)

Name

circularitycircularityCircularityCircularity — Ermitteln des Formfaktors für die Kreisförmigkeit einer Region.

Signatur

circularity(Regions : : : Circularity)

Herror circularity(const Hobject Regions, double* Circularity)

Herror T_circularity(const Hobject Regions, Htuple* Circularity)

void Circularity(const HObject& Regions, HTuple* Circularity)

HTuple HRegion::Circularity() const

static void HOperatorSet.Circularity(HObject regions, out HTuple circularity)

HTuple HRegion.Circularity()

Beschreibung

circularitycircularityCircularityCircularityCircularity berechnet die Ähnlichkeit der Eingaberegion mit einem Kreis.

Berechnung:

Sei F die Fläche der Region und max der maximale Abstand vom Schwerpunkt zu allen Konturpunkten, dann ist der Formfaktor C definiert als:

C = min(1,C')

Der Formfaktor C ist bei einem Kreis gleich 1. Wenn die Region langgestreckt ist oder Hohlflächen hat, ist C kleiner als 1. circularitycircularityCircularityCircularityCircularity spricht besonders auf große Ausbuchtungen, Hohlflächen und nicht zusammenhängende Regionen an. Der Wert von C wird auf 1 begrenzt, weil die Pixel-Fläche einer Region nur eine Approximation der Fläche eines echten Kreises sein kann. Dieser Approximationsfehler ist umso größer, je kleiner die Region ist.

In der Dokumentation zu diesem Kapitel (Regionen / Merkmale) finden Sie ein Bild mit Regionen, die sich in ihrer Kreisförmigkeit unterscheiden.

Bei einer leeren Region liefert circularitycircularityCircularityCircularityCircularity (soweit kein anderes Verhalten festgelegt wurde (siehe set_systemset_systemSetSystemSetSystemSetSystem)) den Wert 0. Wird mehr als eine Region übergeben, dann werden die Zahlenwerte des Formfaktors in einem Tupel abgespeichert, wobei die Position eines Wertes in dem Tupel der Position der Region im Eingabetupel entspricht.

Ausführungsinformationen

Parameter

RegionsRegionsRegionsRegionsregions (input_object)  region(-array) objectHRegionHRegionHobject

Zu untersuchende Region(en).

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

Kreisförmigkeit der Eingaberegion(en).

Zusicherung: 0 <= Circularity && Circularity <= 1.0

Beispiel (HDevelop)

* Comparison between shape factors of rectangle, circle and ellipse:
gen_rectangle1(R1,10,10,20,20)
gen_rectangle2(R2,100,100,0.0,100,20)
gen_ellipse(E100,100,100,0.0,100,20)
gen_circle(C,100,100,20)
circularity(R1,M_R1)
circularity(R2,M_R2)
circularity(E100,M_E)
circularity(C,M_C)
fwrite_string(FileId,['quadrate:  ',M_R1])
fnew_line(FileId)
fwrite_string(FileId,['rectangle: ',M_R2])
fnew_line(FileId)
fwrite_string(FileId,['ellipse:   ',M_E])
fnew_line(FileId)
fwrite_string(FileId,['circle:    ',M_C])
fnew_line(FileId)

Beispiel (C)

/* Comparison between shape factors of rectangle, circle and ellipse */
gen_rectangle1(&R1,10.0,10.0,20.0,20.0);
gen_rectangle2(&R2,100.0,100.0,0.0,100.0,20.0);
gen_ellipse(&E,100.0,100.0,0.0,100.0,20.0);
gen_circle(&C,100.0,100.0,20.0);
circularity(R1,&R1_);
circularity(R2,&R2_);
circularity(E,&E_);
circularity(C,&C_);
printf("quadrate:   %g\n",R1_);
printf("rectangle:  %g\n",R2_);
printf("ellipse:    %g\n",E_);
printf("circle:     %g\n",C_);

Beispiel (HDevelop)

* Comparison between shape factors of rectangle, circle and ellipse:
gen_rectangle1(R1,10,10,20,20)
gen_rectangle2(R2,100,100,0.0,100,20)
gen_ellipse(E100,100,100,0.0,100,20)
gen_circle(C,100,100,20)
circularity(R1,M_R1)
circularity(R2,M_R2)
circularity(E100,M_E)
circularity(C,M_C)
fwrite_string(FileId,['quadrate:  ',M_R1])
fnew_line(FileId)
fwrite_string(FileId,['rectangle: ',M_R2])
fnew_line(FileId)
fwrite_string(FileId,['ellipse:   ',M_E])
fnew_line(FileId)
fwrite_string(FileId,['circle:    ',M_C])
fnew_line(FileId)

Beispiel (HDevelop)

* Comparison between shape factors of rectangle, circle and ellipse:
gen_rectangle1(R1,10,10,20,20)
gen_rectangle2(R2,100,100,0.0,100,20)
gen_ellipse(E100,100,100,0.0,100,20)
gen_circle(C,100,100,20)
circularity(R1,M_R1)
circularity(R2,M_R2)
circularity(E100,M_E)
circularity(C,M_C)
fwrite_string(FileId,['quadrate:  ',M_R1])
fnew_line(FileId)
fwrite_string(FileId,['rectangle: ',M_R2])
fnew_line(FileId)
fwrite_string(FileId,['ellipse:   ',M_E])
fnew_line(FileId)
fwrite_string(FileId,['circle:    ',M_C])
fnew_line(FileId)

Beispiel (HDevelop)

* Comparison between shape factors of rectangle, circle and ellipse:
gen_rectangle1(R1,10,10,20,20)
gen_rectangle2(R2,100,100,0.0,100,20)
gen_ellipse(E100,100,100,0.0,100,20)
gen_circle(C,100,100,20)
circularity(R1,M_R1)
circularity(R2,M_R2)
circularity(E100,M_E)
circularity(C,M_C)
fwrite_string(FileId,['quadrate:  ',M_R1])
fnew_line(FileId)
fwrite_string(FileId,['rectangle: ',M_R2])
fnew_line(FileId)
fwrite_string(FileId,['ellipse:   ',M_E])
fnew_line(FileId)
fwrite_string(FileId,['circle:    ',M_C])
fnew_line(FileId)

Ergebnis

circularitycircularityCircularityCircularityCircularity 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

roundnessroundnessRoundnessRoundnessRoundness, compactnesscompactnessCompactnessCompactnessCompactness, convexityconvexityConvexityConvexityConvexity, eccentricityeccentricityEccentricityEccentricityEccentricity

Siehe auch

area_centerarea_centerAreaCenterAreaCenterAreaCenter, select_shapeselect_shapeSelectShapeSelectShapeSelectShape

Modul

Foundation