circularitycircularityCircularityCircularitycircularity (算子名称)

名称

circularitycircularityCircularityCircularitycircularity — Shape factor for the circularity (similarity to a circle) of a region.

参数签名

circularity(区域 : : : Circularity)

Herror circularity(const Hobject 区域, double* Circularity)

Herror T_circularity(const Hobject 区域, Htuple* Circularity)

void Circularity(const HObject& 区域, HTuple* Circularity)

HTuple HRegion::Circularity() const

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

HTuple HRegion.Circularity()

def circularity(区域: HObject) -> Sequence[float]

def circularity_s(区域: HObject) -> float

描述

该算子 circularitycircularityCircularityCircularityCircularitycircularity calculates the similarity of the input region with a circle.

Calculation:

If F is the area of the region and max is the maximum distance from the center to all contour pixels, the shape factor C is defined as:

C = min(1,C')

The shape factor C of a circle is 1. If the region is long or has holes, C is smaller than 1. 该算子 circularitycircularityCircularityCircularityCircularitycircularity especially responds to large bulges, holes and unconnected regions. The value of C is clipped to 1.0, because the pixel area of a region can only be an approximation of a real circle's area. This approximation error is bigger for small regions than for large regions.

In the documentation of this chapter (Regions / Features), you can find an image illustrating regions which vary in their circularity.

In case of an empty region 该算子 circularitycircularityCircularityCircularityCircularitycircularity returns the value 0 (if no other behavior was set (see set_systemset_systemSetSystemSetSystemSetSystemset_system)). If more than one region is passed the numerical values of the shape factor are stored in a tuple, the position of a value in the tuple corresponding to the position of the region in the input tuple.

运行信息

参数表

区域区域区域区域区域区域 (input_object)  region(-array) objectHRegionHObjectHRegionHobject

Region(s) to be examined.

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

Circularity of the input region(s).

Assertion: 0 <= Circularity && Circularity <= 1.0

例程 (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)

例程 (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_);

例程 (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)

例程 (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)

例程 (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)

结果

该算子 circularitycircularityCircularityCircularityCircularitycircularity 返回值 2 ( H_MSG_TRUE) if the input is not empty. The behavior in case of empty input (no input regions available) is set via 该算子 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>). The behavior in case of empty region (the region is the empty set) is set via 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>)set_system("empty_region_result",<Result>). If necessary an exception is raised.

可能的前置算子

thresholdthresholdThresholdThresholdThresholdthreshold, regiongrowingregiongrowingRegiongrowingRegiongrowingRegiongrowingregiongrowing, connectionconnectionConnectionConnectionConnectionconnection

可替代算子

roundnessroundnessRoundnessRoundnessRoundnessroundness, compactnesscompactnessCompactnessCompactnessCompactnesscompactness, convexityconvexityConvexityConvexityConvexityconvexity, eccentricityeccentricityEccentricityEccentricityEccentricityeccentricity

参考其它

area_centerarea_centerAreaCenterAreaCenterAreaCenterarea_center, select_shapeselect_shapeSelectShapeSelectShapeSelectShapeselect_shape

模块

Foundation