roundness (Operator)

Name

`roundness` — Shape factors from contour.

Signature

`roundness(Regions : : : Distance, Sigma, Roundness, Sides)`

Description

The operator `roundness` examines the distance between the contour and the center of the area. In particular the mean distance (`Distance`), the deviation from the mean distance (`Sigma`) and two shape features derived therefrom are determined. `Roundness` is the relation between mean value and standard deviation, and `Sides` indicates the number of polygon pieces if a regular polygon is concerned.

In the documentation of this chapter (Regions / Features), you can find an image illustrating regions which vary in their mean distance, distance deviation, roundness and number of polygon pieces.

The contour for calculating the features is determined depending on the global neighborhood (see `set_system`).

Calculation:

If p is the center of the area, the pixels and F the area of the contour.

If more than one region is passed the results are stored in tuples, the index of a value in the tuple corresponding to the index of a region in the input.

In case of empty region all parameters have the value 0.0 if no other behavior was set (see `set_system`).

Execution Information

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

Parameters

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

Region(s) to be examined.

`Distance` (output_control)  real(-array) `→` (real)

Mean distance from the center.

Assertion: `Distance >= 0.0`

`Sigma` (output_control)  real(-array) `→` (real)

Standard deviation of `Distance`.

Assertion: `Sigma >= 0.0`

`Roundness` (output_control)  real(-array) `→` (real)

Shape factor for roundness.

Assertion: `Roundness <= 1.0`

`Sides` (output_control)  real(-array) `→` (real)

Number of polygon sides.

Assertion: `Sides >= 0`

Complexity

If F is the area of a region the mean runtime complexity is O(sqrt(F)).

Result

The operator `roundness` returns the value 2 (H_MSG_TRUE) if the input is not empty. The behavior in case of empty input (no input regions available) is set via the operator `set_system('no_object_result',<Result>)`, the behavior in case of empty region is set via `set_system('empty_region_result',<Result>)`. If necessary an exception is raised.

Possible Predecessors

`threshold`, `regiongrowing`, `connection`

Alternatives

`compactness`

`contlength`