Determine gray value thresholds from a histogram.
histo_to_thresh determines gray value thresholds from a histogram for a segmentation of an image using threshold__. The thresholds returned are 0, 255, and all minima extracted from the histogram. Before the thresholds are determined the hostogram is smoothed with a Gaussian.
Histogramm (input_control) |
histogram.values-array -> integer |
Gray value histogram. |
Sigma (input_control) |
number -> real |
Sigma for the Gaussian smoothing of the histogram. | |
Default value: 2.0 | |
Suggested values: 0.5, 1.0, 2.0, 3.0, 4.0, 5.0 | |
Range of values: 0.1 <= Sigma <= 50.0 (lin) | |
Minimum increment: 0.01 | |
Recommended increment: 0.2 |
MinThresh (output_control) |
integer-array -> integer |
Minimum thresholds. |
MaxThresh (output_control) |
integer-array -> integer |
Maximum thresholds. |
#include#include "HCPP.H" int main (int argc, char *argv[]) { if (argc != 2) { cout << "Usage : " << argv[0] << " " << endl; return (-1); } HImage image (argv[1]), Smoothed; HWindow win; Tuple MinThres, MaxThres, HistoAbs, HistoRel, size = 10, iter = 3, thresh = 0.0; HRegionArray reg = image.GetDomain (); HistoAbs = reg.Histo (image, &HistoRel); Smoothed = HistoAbs.HistoMean (size, iter); MinThres = Smoothed.HistoToThres (thresh, &MaxThres); HRegionArray seg = image.Threshold (MinThres, MaxThres); HRegionArray con = seg.Connection (); /* Alternativkonstrukt fuer Threshold() in Aufrufkombination mit Connection() ------------------------------------------------------- HRegionArray con = ((image >= MinThres) & (image <= MaxThres)).Connection (); ------------------------------------------------------- */ con.Display (win); win.Click (); return (0); }
histo__, histo_mean, histo_gauss
auto_threshold1, auto_threshold2