shape_trans ( Region : RegionTrans : Type : )

Transform the shape of a region.

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_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.


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 value: 'convex'
List of values: 'convex', 'ellipse', 'outer_circle', 'inner_circle', 'rectangle1', 'rectangle2', 'inner_center'


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 handling is raised.


Parallelization Information

shape_trans is reentrant and automatically parallelized (on tuple level).


Possible Predecessors

connection, regiongrowing


Possible Successors

disp_region, regiongrowing_mean, area_center


See also

convexity, elliptic_axis, area_center, smallest_rectangle1, smallest_rectangle2, set_shape, select_shape, inner_circle


Module

Foundation



Copyright © 1996-2008 MVTec Software GmbH