# erosion1 (Operator)

## Name

`erosion1` — Erode a region.

## Signature

`erosion1(Region, StructElement : RegionErosion : Iterations : )`

## Description

`erosion1` erodes the input regions with a structuring element. By applying `erosion1` 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 (`StructElement`) and R (`Region`) 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 is defined as the difference of the center of gravity of M and the vector . Let denote the translation of a region R by a vector . Then

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. `erosion1` is similar to the operator `minkowski_sub1`, the difference is that in `erosion1` the structuring element is mirrored at the origin. The position of `StructElement` is meaningless, since the displacement vectors are determined with respect to the center of gravity of M.

The parameter `Iterations` 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 (`StructElement`) can be generated with operators such as `gen_circle`, `gen_rectangle1`, `gen_rectangle2`, `gen_ellipse`, `draw_region`, `gen_region_polygon`, `gen_region_points`, etc.

## Execution Information

• Multithreading type: reentrant (runs in parallel with non-exclusive operators).
• Automatically parallelized on tuple level.

## Parameters

`Region` (input_object)  region(-array) `→` object

Regions to be eroded.

`StructElement` (input_object)  region `→` object

Structuring element.

`RegionErosion` (output_object)  region(-array) `→` object

Eroded regions.

`Iterations` (input_control)  integer `→` (integer)

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 ``` (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:

## Result

`erosion1` 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.

## Possible Predecessors

`threshold`, `regiongrowing`, `watersheds`, `class_ndim_norm`, `gen_circle`, `gen_ellipse`, `gen_rectangle1`, `gen_rectangle2`, `draw_region`, `gen_region_points`, `gen_region_polygon_filled`

## Possible Successors

`connection`, `reduce_domain`, `select_shape`, `area_center`

## Alternatives

`minkowski_sub1`, `minkowski_sub2`, `erosion2`

`transpose_region`