ClassesClassesClassesClasses | | | | Operators

erosion1erosion1Erosion1erosion1Erosion1Erosion1 (Operator)

Name

erosion1erosion1Erosion1erosion1Erosion1Erosion1 — Erode a region.

Signature

erosion1(Region, StructElement : RegionErosion : Iterations : )

Herror erosion1(const Hobject Region, const Hobject StructElement, Hobject* RegionErosion, const Hlong Iterations)

Herror T_erosion1(const Hobject Region, const Hobject StructElement, Hobject* RegionErosion, const Htuple Iterations)

Herror erosion1(Hobject Region, Hobject StructElement, Hobject* RegionErosion, const HTuple& Iterations)

HRegion HRegion::Erosion1(const HRegion& StructElement, const HTuple& Iterations) const

HRegionArray HRegionArray::Erosion1(const HRegion& StructElement, const HTuple& Iterations) const

void Erosion1(const HObject& Region, const HObject& StructElement, HObject* RegionErosion, const HTuple& Iterations)

HRegion HRegion::Erosion1(const HRegion& StructElement, Hlong Iterations) const

void HOperatorSetX.Erosion1(
[in] IHUntypedObjectX* Region, [in] IHUntypedObjectX* StructElement, [out] IHUntypedObjectX*RegionErosion, [in] VARIANT Iterations)

IHRegionX* HRegionX.Erosion1(
[in] IHRegionX* StructElement, [in] Hlong Iterations)

static void HOperatorSet.Erosion1(HObject region, HObject structElement, out HObject regionErosion, HTuple iterations)

HRegion HRegion.Erosion1(HRegion structElement, int iterations)

Description

erosion1erosion1Erosion1erosion1Erosion1Erosion1 erodes the input regions with a structuring element. By applying erosion1erosion1Erosion1erosion1Erosion1Erosion1 to a region, its boundary gets smoothed. In the process, the area of the region is reduced. Furthermore, connected regions may be split. Such regions, however, remain logically one region. The erosion is a set-theoretic region operation. It uses the intersection operation.

Let M (StructElementStructElementStructElementStructElementStructElementstructElement) and R (RegionRegionRegionRegionRegionregion) be two regions, where M is the structuring element and R is the region to be processed. Furthermore, let m be a point in M. Then the displacement vector v(m) = (dx,dy) is defined as the difference of the center of gravity of M and the vector v(m). Let t(v(m))(R) denote the translation of a region R by a vector v(m). Then


                       /  \
      erosion1(R,M) := |  | t     (R)
                       |  |  -v(m)
                      m in M

For each point m in M a translation of the region R is performed. The intersection of all these translations is the erosion of R with M. erosion1erosion1Erosion1erosion1Erosion1Erosion1 is similar to the operator minkowski_sub1minkowski_sub1MinkowskiSub1minkowski_sub1MinkowskiSub1MinkowskiSub1, the difference is that in erosion1erosion1Erosion1erosion1Erosion1Erosion1 the structuring element is mirrored at the origin. The position of StructElementStructElementStructElementStructElementStructElementstructElement is meaningless, since the displacement vectors are determined with respect to the center of gravity of M.

The parameter IterationsIterationsIterationsIterationsIterationsiterations determines the number of iterations which are to be performed with the structuring element. The result of iteration n-1 is used as input for iteration n. From the above definition it follows that the maximum region is generated in case of an empty structuring element.

Structuring elements (StructElementStructElementStructElementStructElementStructElementstructElement) can be generated with operators such as gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle, gen_rectangle1gen_rectangle1GenRectangle1gen_rectangle1GenRectangle1GenRectangle1, gen_rectangle2gen_rectangle2GenRectangle2gen_rectangle2GenRectangle2GenRectangle2, gen_ellipsegen_ellipseGenEllipsegen_ellipseGenEllipseGenEllipse, draw_regiondraw_regionDrawRegiondraw_regionDrawRegionDrawRegion, gen_region_polygongen_region_polygonGenRegionPolygongen_region_polygonGenRegionPolygonGenRegionPolygon, gen_region_pointsgen_region_pointsGenRegionPointsgen_region_pointsGenRegionPointsGenRegionPoints, etc.

Parallelization

Parameters

RegionRegionRegionRegionRegionregion (input_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject

Regions to be eroded.

StructElementStructElementStructElementStructElementStructElementstructElement (input_object)  region objectHRegionHRegionHRegionHRegionXHobject

Structuring element.

RegionErosionRegionErosionRegionErosionRegionErosionRegionErosionregionErosion (output_object)  region(-array) objectHRegionHRegionHRegionHRegionXHobject *

Eroded regions.

IterationsIterationsIterationsIterationsIterationsiterations (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Number of iterations.

Default value: 1

Suggested values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 17, 20, 30, 40, 50

Typical range of values: 1 ≤ Iterations Iterations Iterations Iterations Iterations iterations (lin)

Minimum increment: 1

Recommended increment: 1

Complexity

Let F1 be the area of the input region, and F2 be the area of the structuring element. Then the runtime complexity for one region is:

    O(sqrt(F1) * sqrt(F2) * Iterations) .

Result

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

Otherwise, an exception is raised.

Possible Predecessors

thresholdthresholdThresholdthresholdThresholdThreshold, regiongrowingregiongrowingRegiongrowingregiongrowingRegiongrowingRegiongrowing, watershedswatershedsWatershedswatershedsWatershedsWatersheds, class_ndim_normclass_ndim_normClassNdimNormclass_ndim_normClassNdimNormClassNdimNorm, gen_circlegen_circleGenCirclegen_circleGenCircleGenCircle, gen_ellipsegen_ellipseGenEllipsegen_ellipseGenEllipseGenEllipse, gen_rectangle1gen_rectangle1GenRectangle1gen_rectangle1GenRectangle1GenRectangle1, gen_rectangle2gen_rectangle2GenRectangle2gen_rectangle2GenRectangle2GenRectangle2, draw_regiondraw_regionDrawRegiondraw_regionDrawRegionDrawRegion, gen_region_pointsgen_region_pointsGenRegionPointsgen_region_pointsGenRegionPointsGenRegionPoints, gen_struct_elementsgen_struct_elementsGenStructElementsgen_struct_elementsGenStructElementsGenStructElements, gen_region_polygon_filledgen_region_polygon_filledGenRegionPolygonFilledgen_region_polygon_filledGenRegionPolygonFilledGenRegionPolygonFilled

Possible Successors

connectionconnectionConnectionconnectionConnectionConnection, reduce_domainreduce_domainReduceDomainreduce_domainReduceDomainReduceDomain, select_shapeselect_shapeSelectShapeselect_shapeSelectShapeSelectShape, area_centerarea_centerAreaCenterarea_centerAreaCenterAreaCenter

Alternatives

minkowski_sub1minkowski_sub1MinkowskiSub1minkowski_sub1MinkowskiSub1MinkowskiSub1, minkowski_sub2minkowski_sub2MinkowskiSub2minkowski_sub2MinkowskiSub2MinkowskiSub2, erosion2erosion2Erosion2erosion2Erosion2Erosion2, erosion_golayerosion_golayErosionGolayerosion_golayErosionGolayErosionGolay, erosion_seqerosion_seqErosionSeqerosion_seqErosionSeqErosionSeq

See also

transpose_regiontranspose_regionTransposeRegiontranspose_regionTransposeRegionTransposeRegion

Module

Foundation


ClassesClassesClassesClasses | | | | Operators