Operator Reference
regiongrowing (Operator)
regiongrowing
— Segment an image using regiongrowing.
Signature
regiongrowing(Image : Regions : RasterHeight, RasterWidth, Tolerance, MinSize : )
Description
regiongrowing
segments images into regions of the same
intensity - rastered into rectangles of size RasterHeight
RasterWidth
. In order to decide
whether two adjacent rectangles belong to the same region only the
gray value of their center points is used. If the gray value
difference is less then or equal to Tolerance
the rectangles
are merged into one region.
If and are two gray values to be examined, they are merged into the same region if: For images of type 'cyclic', the following formulas are used:
For rectangles larger than one pixel, usually the images should be
smoothed with a lowpass filter with a size of at least RasterHeight
RasterWidth
before calling regiongrowing
(so that the gray values at the centers of the rectangles are
“representative” for the whole rectangle).
If the image contains little noise and the rectangles are small, the
smoothing can be omitted in many cases.
The resulting regions are collections of rectangles of the chosen
size RasterHeight
RasterWidth
.
Only regions containing at least MinSize
points are
returned.
Regiongrowing is a very fast operation, and thus suited for time-critical applications.
Attention
RasterWidth
and RasterHeight
are automatically converted to
odd values if necessary.
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
Image
(input_object) singlechannelimage(-array) →
object (byte / direction / cyclic / int1 / int2 / int4 / real)
Input image.
Regions
(output_object) region-array →
object
Segmented regions.
RasterHeight
(input_control) extent.y →
(integer)
Vertical distance between tested pixels (height of the raster).
Default: 3
Suggested values: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21
Value range:
1
≤
RasterHeight
≤
99
(lin)
Minimum increment: 2
Recommended increment: 2
Restriction:
RasterHeight >= 1 && odd(RasterHeight)
RasterWidth
(input_control) extent.x →
(integer)
Horizontal distance between tested pixels (height of the raster).
Default: 3
Suggested values: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21
Value range:
1
≤
RasterWidth
≤
99
(lin)
Minimum increment: 2
Recommended increment: 2
Restriction:
RasterWidth >= 1 && odd(RasterWidth)
Tolerance
(input_control) number →
(real / integer)
Points with a gray value difference less then or equal to tolerance are accumulated into the same object.
Default: 6.0
Suggested values: 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 12.0, 14.0, 18.0, 25.0
Value range:
0
≤
Tolerance
(lin)
Minimum increment: 0.01
Recommended increment: 1.0
MinSize
(input_control) integer →
(integer)
Minimum size of the output regions.
Default: 100
Suggested values: 1, 5, 10, 20, 50, 100, 200, 500, 1000
Value range:
1
≤
MinSize
Minimum increment: 1
Recommended increment: 5
Example (HDevelop)
read_image(Image,'fabrik') mean_image(Image,Mean,RasterHeight,RasterWidth) regiongrowing(Mean,Result,RasterHeight,RasterWidth,6.0,100)
Complexity
Let N be the number of found regions and M the number of points in one of these regions. Then the runtime complexity is O(N * log(M) * M).
Result
regiongrowing
returns 2 (
H_MSG_TRUE)
if all parameters are
correct. The behavior with respect to the input images and output
regions can be determined by setting the values of the flags
'no_object_result' , 'empty_region_result' , and
'store_empty_region' with set_system
.
If necessary, an exception is raised.
Possible Predecessors
binomial_filter
,
mean_image
,
gauss_filter
,
smooth_image
,
median_image
,
anisotropic_diffusion
Possible Successors
select_shape
,
reduce_domain
,
select_gray
Alternatives
regiongrowing_n
,
regiongrowing_mean
,
label_to_region
Module
Foundation