shape_trans🔗
Short description🔗
shape_trans — Transform the shape of a region.
Signature🔗
shape_trans( region Region, out region RegionTrans, string Type )
Description🔗
shape_trans transforms the shape of the input regions
depending on the parameter Type:
-
'convex' Convex hull.
-
'ellipse' Ellipse with the same moments and area as the input region.
-
'outer_circle' Smallest enclosing circle.
-
'inner_circle' Largest circle fitting into the region.
-
'rectangle1' Smallest enclosing rectangle parallel to the coordinate axes.
-
'rectangle2' Smallest enclosing rectangle.
-
'inner_rectangle1' Largest axis-parallel rectangle fitting into the region.
-
'inner_center' The point on the skeleton of the input region having the smallest distance to the center of gravity of the input region.
Attention🔗
If Type = 'outer_circle' is selected it might
happen that the resulting circular region does not completely cover
the input region. This is because internally the operators
smallest_circle and gen_circle are used to compute
the outer circle. As described in the documentation of
smallest_circle, the calculated radius can be too small by
up to \(1/\sqrt{2}-0.5\) pixels. Additionally, the
circle that is generated by gen_circle is translated by up
to 0.5 pixels in both directions, i.e., by up to
\(1/\sqrt{2}\) pixels. Consequently, when adding up
both effects, the original region might protrude beyond the returned
circular region by at most 1 pixel.
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🔗
Region (input_object) region(-array) → object
Regions to be transformed.
RegionTrans (output_object) region(-array) → object
Transformed regions.
Type (input_control) string → (string)
Type of transformation.
Default: 'convex'
List of values: 'convex', 'ellipse', 'inner_center', 'inner_circle', 'inner_rectangle1', 'outer_circle', 'rectangle1', 'rectangle2'
Complexity🔗
Let \(F\) be the area of the input region. Then the runtime complexity is \(O(F)\).
Result🔗
shape_trans returns 2 (H_MSG_TRUE) if all parameters are correct.
The behavior in case of empty input (no regions given) can be set
via set_system('no_object_result',<Result>).
If necessary, an exception is raised.
Combinations with other operators🔗
Combinations
Possible predecessors
Possible successors
disp_region, regiongrowing_mean, area_center
See also
convexity, elliptic_axis, area_center, smallest_rectangle1, smallest_rectangle2, inner_rectangle1, set_shape, select_shape, inner_circle
Module🔗
Foundation