Remove the result of a hit-or-miss operation from a region (sequential).
thickening_seq calculates the sequential thickening of the input regions with a structuring element from the Golay alphabet (GolayElement). To do so, thickening_seq calls the operator thickening_golay with all possible rotations of the structuring element Iterations times. If Iterations is chosen large enough, the operator calculates the skeleton of a region if the structuring elements 'l' or 'm' are used. For the element 'c' the background and foreground are exchanged in order to have an effect on the interior boundary of a region. If a very large value or 'maximal' is passed for Iterations the iteration stops if no more changes occur. The following structuring elements are available:
'l' Skeleton, similar to skeleton. This structuring element is also used in morph_skiz. 'm' A skeleton with many ``hairs'' and multiple (parallel) branches. 'd' A skeleton without multiple branches, but with many gaps, similar to morph_skeleton. 'c' Uniform erosion of the region. 'e' One pixel wide lines are shortened. This structuring element is also used in morph_skiz. 'i' Isolated points are removed. (Only Iterations = 1 is useful.) 'f' Y-junctions are eliminated. (Only Iterations = 1 is useful.) 'f2' One pixel long branches and corners are removed. (Only Iterations = 1 is useful.) 'h' A kind of inner boundary, which, however, is thicker than the result of boundary, is generated. (Only Iterations = 1 is useful.) 'k' Junction points are eliminated, but also new ones are generated.The Golay elements, together with all possible rotations, are described with the operator golay_elements.
Region (input_object) |
region(-array) -> object |
Regions to be processed. |
RegionThin (output_object) |
region(-array) -> object |
Result of the thinning operator. |
GolayElement (input_control) |
string -> string |
Structuring element from the Golay alphabet. | |
Default value: 'l' | |
List of values: 'l', 'm', 'd', 'c', 'e', 'i', 'f', 'f2', 'h', 'k' |
Iterations (input_control) |
integer -> integer / string |
Number of iterations; For 'f', 'f2', 'h' and 'k' the only useful value is 1. | |
Default value: 20 | |
Suggested values: 'maximal', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 30, 40, 50, 70, 100, 150, 200 | |
Range of values: 1 <= Iterations | |
Minimum increment: 1 | |
Recommended increment: 1 |
Let F be the area of an input region. Then the runtime for one region is:
O(Iterations * 6 * sqrt(F)) .
thinning_seq returns TRUE if all parameters are correct. The behavior in case of empty or no input region can be set via:
a) no region: set_system(::'no_object_result',<RegionResult>:) b) empty region: set_system(::'empty_region_result',<RegionResult>:)Otherwise, an exception is raised.
threshold__, regiongrowing__, connection, union1, watersheds, class_ndim1__, circle, ellipse, rectangle1, rectangle2, draw_region, store_coord, struct_elements, store_filled_polygon
pruning, reduce_domain, select_shape, area_center, connection, complement__
hit_or_miss_seq, erosion_golay, difference, thinning_golay, thinning, thickening_seq