AutoThresholdingValue
            Computes a threshold value partitioning automatically a gray level image into two classes.
Access to parameter description
For an introduction:
        
Four methods of classification are available to determine $C_0$ and $C_1$: Entropy, Factorisation, Moments, and Isodata. These methods are detailed in the AutoThresholdingBright documentation.
The computed threshold is returned in the AutoThresholdingMsr object. See also
		Access to parameter description
For an introduction:
- section Image Segmentation
 - section Binarization
 - section AutoThresholdingBright
 
- $C_0=[I_1,T]$ represents the first class pixels.
 - $C_1=[T+1,I_2]$ represents the second class pixels.
 
Four methods of classification are available to determine $C_0$ and $C_1$: Entropy, Factorisation, Moments, and Isodata. These methods are detailed in the AutoThresholdingBright documentation.
The computed threshold is returned in the AutoThresholdingMsr object. See also
Function Syntax
This function returns the outputMeasurement output parameter.
                        
                    
// Function prototype.
AutoThresholdingMsr::Ptr
autoThresholdingValue( std::shared_ptr< iolink::ImageView > inputGrayImage,
                       AutoThresholdingValue::RangeMode rangeMode,
                       iolink::Vector2d intensityInputRange,
                       AutoThresholdingValue::ThresholdCriterion thresholdCriterion,
                       AutoThresholdingMsr::Ptr outputMeasurement = NULL );
                    
This function returns the outputMeasurement output parameter.
                        
                    
// Function prototype.
auto_thresholding_value( input_gray_image,
                         range_mode = AutoThresholdingValue.RangeMode.MIN_MAX,
                         intensity_input_range = [0, 255],
                         threshold_criterion = AutoThresholdingValue.ThresholdCriterion.ENTROPY,
                         output_measurement = None )
                    
This function returns the outputMeasurement output parameter.
                        
                
// Function prototype.
public static AutoThresholdingMsr
AutoThresholdingValue( IOLink.ImageView inputGrayImage,
                       AutoThresholdingValue.RangeMode rangeMode = ImageDev.AutoThresholdingValue.RangeMode.MIN_MAX,
                       double[] intensityInputRange = null,
                       AutoThresholdingValue.ThresholdCriterion thresholdCriterion = ImageDev.AutoThresholdingValue.ThresholdCriterion.ENTROPY,
                       AutoThresholdingMsr outputMeasurement = null );
                    Class Syntax
Parameters
| Class Name | AutoThresholdingValue | 
|---|
| Parameter Name | Description | Type | Supported Values | Default Value | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
![]()  | 
  inputGrayImage    | 
 The input grayscale image | Image | Grayscale | nullptr | ||||||||
![]()  | 
  rangeMode    | 
 The way to determine the input intensity range.
  | 
Enumeration | MIN_MAX | |||||||||
![]()  | 
  intensityInputRange    | 
 The input intensity range [a,b] inside which the threshold is searched. This parameter is ignored if the range mode is set to MIN_MAX. | Vector2d | Any value | {0.f, 255.f} | ||||||||
![]()  | 
  thresholdCriterion    | 
 The criterion to compute the threshold from the histogram.
  | 
Enumeration | ENTROPY | |||||||||
![]()  | 
  outputMeasurement    | 
 The output measurement containing the computed threshold. | AutoThresholdingMsr | nullptr | |||||||||
Object Examples
std::shared_ptr< iolink::ImageView > polystyrene = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene.tif" );
AutoThresholdingValue autoThresholdingValueAlgo;
autoThresholdingValueAlgo.setInputGrayImage( polystyrene );
autoThresholdingValueAlgo.setRangeMode( AutoThresholdingValue::RangeMode::MIN_MAX );
autoThresholdingValueAlgo.setIntensityInputRange( {0, 255} );
autoThresholdingValueAlgo.setThresholdCriterion( AutoThresholdingValue::ThresholdCriterion::ENTROPY );
autoThresholdingValueAlgo.execute();
std::cout << "threshold: " << autoThresholdingValueAlgo.outputMeasurement()->threshold( 0 ) ;
            
polystyrene = ioformat.read_image(imagedev_data.get_image_path("polystyrene.tif"))
auto_thresholding_value_algo = imagedev.AutoThresholdingValue()
auto_thresholding_value_algo.input_gray_image = polystyrene
auto_thresholding_value_algo.range_mode = imagedev.AutoThresholdingValue.MIN_MAX
auto_thresholding_value_algo.intensity_input_range = [0, 255]
auto_thresholding_value_algo.threshold_criterion = imagedev.AutoThresholdingValue.ENTROPY
auto_thresholding_value_algo.execute()
print( 
print("threshold: ", auto_thresholding_value_algo.output_measurement.threshold( 0 ) ) );
            
ImageView polystyrene = ViewIO.ReadImage( @"Data/images/polystyrene.tif" );
AutoThresholdingValue autoThresholdingValueAlgo = new AutoThresholdingValue
{
    inputGrayImage = polystyrene,
    rangeMode = AutoThresholdingValue.RangeMode.MIN_MAX,
    intensityInputRange = new double[]{0, 255},
    thresholdCriterion = AutoThresholdingValue.ThresholdCriterion.ENTROPY
};
autoThresholdingValueAlgo.Execute();
Console.WriteLine( "threshold: " + autoThresholdingValueAlgo.outputMeasurement.threshold( 0 ) );
            Function Examples
std::shared_ptr< iolink::ImageView > polystyrene = ioformat::readImage( std::string( IMAGEDEVDATA_IMAGES_FOLDER ) + "polystyrene.tif" );
auto result = autoThresholdingValue( polystyrene, AutoThresholdingValue::RangeMode::MIN_MAX, {0, 255}, AutoThresholdingValue::ThresholdCriterion::ENTROPY );
std::cout << "threshold: " << result->threshold( 0 ) ;
            
polystyrene = ioformat.read_image(imagedev_data.get_image_path("polystyrene.tif"))
result = imagedev.auto_thresholding_value( polystyrene, imagedev.AutoThresholdingValue.MIN_MAX, [0, 255], imagedev.AutoThresholdingValue.ENTROPY )
print( "threshold: ", result.threshold( 0 ) );
            
ImageView polystyrene = ViewIO.ReadImage( @"Data/images/polystyrene.tif" );
AutoThresholdingMsr result = Processing.AutoThresholdingValue( polystyrene, AutoThresholdingValue.RangeMode.MIN_MAX, new double[]{0, 255}, AutoThresholdingValue.ThresholdCriterion.ENTROPY );
Console.WriteLine(  "threshold: " + result.threshold( 0 )  );
            
