# dilation1 (Operator)

## Name

`dilation1` — Dilate a region.

## Signature

`dilation1(Region, StructElement : RegionDilation : Iterations : )`

## Description

`dilation1` dilates the input regions with a structuring element. By applying `dilation1` to a region, its boundary gets smoothed. In the process, the area of the region is enlarged. Furthermore, disconnected regions may be merged. Such regions, however, remain logically distinct region. The dilation is a set-theoretic region operation. It uses the union 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 union of all these translations is the dilation of R with M. `dilation1` is similar to the operator `minkowski_add1`, the difference is that in `dilation1` 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 an empty 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.

## Attention

A dilation always results in enlarged regions. Closely spaced regions which may touch or overlap as a result of the dilation are still treated as two separate regions. If the desired behavior is to merge them into one region, the operator `union1` has to be called first.

## 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 dilated.

`StructElement` (input_object)  region `→` object

Structuring element.

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

Dilated 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

`dilation1` returns 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

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

## Possible Successors

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

## Alternatives

`minkowski_add1`, `minkowski_add2`, `dilation2`

`erosion1`, `erosion2`, `opening`, `closing`