regiongrowingπ
Short descriptionπ
regiongrowing β Segment an image using region growing.
Signatureπ
regiongrowing( image Image, out region Regions, extent.y RasterHeight, extent.x RasterWidth, number Tolerance, integer MinSize )
Descriptionπ
regiongrowing segments images into regions of the same
intensity - rastered into rectangles of size RasterHeight
\(\times\) 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 \(g_{1}\) and \(g_{2}\) 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
\(\times\) 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 \(\times\) RasterWidth.
Only regions containing at least MinSize points are
returned.
Region growing 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π
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π
(C)
read_image(&Image,"fabrik")\;
mean_image(Image,&Mean,RasterHeight,RasterWidth)\;
regiongrowing(Mean,&Result,RasterHeight,RasterWidth,6,100)\;
read_image(Image,'fabrik')
mean_image(Image,Mean,RasterHeight,RasterWidth)
regiongrowing(Mean,Result,RasterHeight,RasterWidth,6.0,100)
#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std\;
#endif
#include "HalconCpp.h"
using namespace Halcon\;
int main (int argc, char *argv[])
{
if (argc != 2)
{
cout << "Usage : " << argv[0] << " <name of the image>" << endl\;
return (-1)\;
}
HImage image (argv[1]),
mean\;
HWindow win\;
mean = image.MeanImage (5, 5)\;
HRegionArray reg = mean.Regiongrowing (5, 5, 6, 100)\;
reg.Display (win)\;
win.Click ()\;
return (0)\;
}
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.
Combinations with other operatorsπ
Combinations
Possible predecessors
binomial_filter, mean_image, gauss_filter, smooth_image, median_image, anisotropic_diffusion
Possible successors
select_shape, reduce_domain, select_gray
Alternatives
Moduleπ
Foundation