Skip to content

closing_circleClosingCircleClosingCircleclosing_circleclosing_circleπŸ”—

Short descriptionπŸ”—

closing_circleClosingCircleClosingCircleclosing_circleclosing_circle β€” Close a region with a circular structuring element.

SignatureπŸ”—

closing_circle( region Region, out region RegionClosing, real Radius )void ClosingCircle( const HObject& Region, HObject* RegionClosing, const HTuple& Radius )static void HOperatorSet.ClosingCircle( HObject region, out HObject regionClosing, HTuple radius )def closing_circle( region: HObject, radius: Union[float, int] ) -> HObject

Herror closing_circle( const Hobject Region, Hobject* RegionClosing, double Radius )

Herror T_closing_circle( const Hobject Region, Hobject* RegionClosing, const Htuple Radius )

HRegion HRegion::ClosingCircle( const HTuple& Radius ) const

HRegion HRegion::ClosingCircle( double Radius ) const

HRegion HRegion.ClosingCircle( HTuple radius )

HRegion HRegion.ClosingCircle( double radius )

DescriptionπŸ”—

closing_circleClosingCircle behaves analogously to closingClosing, i.e., the regions’ boundaries are smoothed and holes within a region which are smaller than the circular structuring element of radius Radiusradiusradius are closed. The closing_circleClosingCircle operation is defined as a dilation followed by a Minkowski subtraction, both with the same circular structuring element.

AttentionπŸ”—

closing_circleClosingCircle is applied to each input region separately. If gaps between different regions are to be closed, union1Union1 or union2Union2 has to be called first.

Execution informationπŸ”—

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Automatically parallelized on tuple level.

ParametersπŸ”—

Regionregionregion (input_object) region(-array) β†’ objectHObjectHRegionHObjectHobject

Regions to be closed.

RegionClosingregionClosingregion_closing (output_object) region(-array) β†’ objectHObjectHRegionHObjectHobject *

Closed regions.

Radiusradiusradius (input_control) real β†’ (real / integer)HTuple (double / Hlong)HTuple (double / int / long)Union[float, int]Htuple (double / Hlong)

Radius of the circular structuring element.

Default: 3.53.5
Suggested values: 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 12.5, 15.5, 19.5, 25.5, 33.5, 45.5, 60.5, 110.51.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 12.5, 15.5, 19.5, 25.5, 33.5, 45.5, 60.5, 110.5
Value range: 0.5 ≀ Radius ≀ 511.5 (lin)
Minimum increment: 1.0
Recommended increment: 1.0

ExampleπŸ”—

(C)

my_closing_circle(Hobject In, double Radius, Hobject *Out)
{
  Hobject  tmp, StructElement\;
  gen_circle(StructElement,100.0,100.0,Radius)\;
  dilation1(In,StructElement,&tmp,1)\;
  minkowski_sub1(tmp,StructElement,Out,1)\;
}

ComplexityπŸ”—

Let \(F1\) be the area of the input region. Then the runtime complexity for one region is:

\[\begin{eqnarray*} O(4 \cdot \sqrt{F1} \cdot \textrm{Radius}) \enspace . \end{eqnarray*}\]

ResultπŸ”—

closing_circleClosingCircle returns 2 (H_MSG_TRUE) if all parameters are correct. The behavior in case of empty or no input region can be set via:

  • no region: set_system('no_object_result',<RegionResult>)

  • empty region: set_system('empty_region_result',<RegionResult>)

Otherwise, an exception is raised.

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

thresholdThreshold, regiongrowingRegiongrowing, connectionConnection, union1Union1, watershedsWatersheds, class_ndim_normClassNdimNorm

Possible successors

reduce_domainReduceDomain, select_shapeSelectShape, area_centerAreaCenter, connectionConnection

Alternatives

rank_regionRankRegion, fill_upFillUp, closingClosing

See also

dilation1Dilation1, minkowski_sub1MinkowskiSub1, erosion1Erosion1, openingOpening

ModuleπŸ”—

Foundation