circularity circularity Circularity Circularity (Operator)
Name
circularity circularity Circularity Circularity
— Ermitteln des Formfaktors für die Kreisförmigkeit einer Region.
Signatur
Beschreibung
circularity circularity Circularity Circularity Circularity
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.
circularity circularity Circularity Circularity Circularity
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 circularity circularity Circularity Circularity Circularity
(soweit kein anderes
Verhalten festgelegt wurde (siehe set_system set_system SetSystem SetSystem SetSystem
)) 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
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf Tupelebene.
Parameter
Regions Regions Regions Regions regions
(input_object) region(-array) →
object HRegion HRegion Hobject
Zu untersuchende Region(en).
Circularity Circularity Circularity Circularity circularity
(output_control) real(-array) →
HTuple HTuple Htuple (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
circularity circularity Circularity Circularity Circularity
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
threshold threshold Threshold Threshold Threshold
,
regiongrowing regiongrowing Regiongrowing Regiongrowing Regiongrowing
,
connection connection Connection Connection Connection
Alternativen
roundness roundness Roundness Roundness Roundness
,
compactness compactness Compactness Compactness Compactness
,
convexity convexity Convexity Convexity Convexity
,
eccentricity eccentricity Eccentricity Eccentricity Eccentricity
Siehe auch
area_center area_center AreaCenter AreaCenter AreaCenter
,
select_shape select_shape SelectShape SelectShape SelectShape
Modul
Foundation