auto_thresholdauto_thresholdAutoThresholdAutoThresholdauto_threshold (Operator)
Name
auto_thresholdauto_thresholdAutoThresholdAutoThresholdauto_threshold
— Segment an image using thresholds determined from its histogram.
Signature
def auto_threshold(image: HObject, sigma: Union[int, float]) -> HObject
Description
auto_thresholdauto_thresholdAutoThresholdAutoThresholdauto_threshold
segments a single-channel image using
multiple thresholding. First, the absolute histogram of the gray
values is determined. Then, relevant minima are extracted from the
histogram, which are used successively as parameters for a
thresholding operation. The thresholds used for byte images are 0,
255, and all minima extracted from the histogram (after the
histogram has been smoothed with a Gaussian filter with standard
deviation SigmaSigmaSigmasigmasigma
). For each gray value interval one
region is generated. Thus, the number of regions is the number of
minima + 1. For uint2 images, the above procedure is used
analogously. However, here the highest threshold is 65535.
Furthermore, for uint2 images the value of SigmaSigmaSigmasigmasigma
(virtually)
refers to a histogram with 256 values, although internally histograms
with a higher resolution are used. This is done to facilitate
switching between image types without having to change the parameter
SigmaSigmaSigmasigmasigma
. For float images the thresholds are the minimum and
maximum gray value in the image and all minima extracted from the
histogram. Here, the scaling of the parameter SigmaSigmaSigmasigmasigma
refers
to the original gray values of the image.
The larger the value of SigmaSigmaSigmasigmasigma
is chosen,
the fewer regions will be extracted. This operator is useful if the
regions to be extracted exhibit similar gray values (homogeneous
regions).
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.
- Automatically parallelized on internal data level.
Parameters
ImageImageImageimageimage
(input_object) singlechannelimage(-array) →
objectHImageHObjectHObjectHobject (byte / uint2 / real)
Input image.
RegionsRegionsRegionsregionsregions
(output_object) region-array →
objectHRegionHObjectHObjectHobject *
Regions with gray values within the automatically
determined intervals.
SigmaSigmaSigmasigmasigma
(input_control) number →
HTupleUnion[int, float]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Sigma for the Gaussian smoothing of the histogram.
Default:
2.0
Suggested values:
0.0, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0
Value range:
Sigma
Sigma
Sigma
sigma
sigma
(lin)
Minimum increment:
0.01
Recommended increment:
0.3
Example (HDevelop)
read_image (Image, 'fabrik')
median_image (Image, Median, 'circle', 3, 'mirrored')
auto_threshold (Median, Seg, 2.0)
connection (Seg, Connected)
Example (C)
read_image(&Image,"fabrik");
median_image(Image,&Median,"circle",3,"mirrored");
auto_threshold(Median,&Seg,2.0);
connection(Seg,&Connected);
set_colored(WindowHandle,12);
disp_obj(Connected,WindowHandle);
Example (C++)
#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] << " 'image' " << endl;
return -1;
}
HImage image(argv[1]);
HImage med;
HWindow w;
w.SetDraw("margin");
w.SetColored(12);
image.Display (w);
med = image.MedianImage("circle", 3, "mirrored");
med.Display(w);
HRegionArray reg = med.AutoThreshold(2.0);
HRegionArray con = reg.Connection();
cout << "Display image after AutoThreshold segmentation " << endl;
con.Display(w);
w.Click();
return 0;
}
Example (HDevelop)
read_image (Image, 'fabrik')
median_image (Image, Median, 'circle', 3, 'mirrored')
auto_threshold (Median, Seg, 2.0)
connection (Seg, Connected)
Possible Predecessors
anisotropic_diffusionanisotropic_diffusionAnisotropicDiffusionAnisotropicDiffusionanisotropic_diffusion
,
median_imagemedian_imageMedianImageMedianImagemedian_image
,
illuminateilluminateIlluminateIlluminateilluminate
Possible Successors
connectionconnectionConnectionConnectionconnection
,
select_shapeselect_shapeSelectShapeSelectShapeselect_shape
,
select_grayselect_graySelectGraySelectGrayselect_gray
Alternatives
binary_thresholdbinary_thresholdBinaryThresholdBinaryThresholdbinary_threshold
,
char_thresholdchar_thresholdCharThresholdCharThresholdchar_threshold
See also
gray_histogray_histoGrayHistoGrayHistogray_histo
,
gray_histo_absgray_histo_absGrayHistoAbsGrayHistoAbsgray_histo_abs
,
histo_to_threshhisto_to_threshHistoToThreshHistoToThreshhisto_to_thresh
,
smooth_funct_1d_gausssmooth_funct_1d_gaussSmoothFunct1dGaussSmoothFunct1dGausssmooth_funct_1d_gauss
,
thresholdthresholdThresholdThresholdthreshold
Module
Foundation