diff --git a/src/main/java/fr/pasteur/ida/zellige/steps/selection/classification/Threshold.java b/src/main/java/fr/pasteur/ida/zellige/steps/selection/classification/Threshold.java
index 13d71a085c76fcb977bbfea25cae3415c4cd5fbd..1e95e0ecd0836e007fe1b87b9a3163e00f37b0b9 100644
--- a/src/main/java/fr/pasteur/ida/zellige/steps/selection/classification/Threshold.java
+++ b/src/main/java/fr/pasteur/ida/zellige/steps/selection/classification/Threshold.java
@@ -52,31 +52,31 @@ public class Threshold
* @param <T> - the input type
* @return - the maximum value of the specified input
*/
- public static < T extends RealType< T > & NativeType< T > > T findMax( final IterableInterval< T > input )
- {
- Cursor< T > iterator = input.cursor();
- T max = input.firstElement().createVariable();
- while ( iterator.hasNext() )
- {
- final T type = iterator.next();
-
- if ( type.compareTo( max ) > 0 )
- {
- max.set( type );
- }
- }
- return max;
- }
-
-
- public static < T extends RealType< T > & NativeType< T > > T findMin( final IterableInterval< T > input, boolean zero )
- {
- if ( zero )
- {
- return findMinBesideZero( input );
- }
- return findMin( input );
- }
+// public static < T extends RealType< T > & NativeType< T > > T findMax( final IterableInterval< T > input )
+// {
+// Cursor< T > iterator = input.cursor();
+// T max = input.firstElement().createVariable();
+// while ( iterator.hasNext() )
+// {
+// final T type = iterator.next();
+//
+// if ( type.compareTo( max ) > 0 )
+// {
+// max.set( type );
+// }
+// }
+// return max;
+// }
+
+//
+// public static < T extends RealType< T > & NativeType< T > > T findMin( final IterableInterval< T > input, boolean zero )
+// {
+// if ( zero )
+// {
+// return findMinBesideZero( input );
+// }
+// return findMin( input );
+// }
/**
@@ -86,183 +86,183 @@ public class Threshold
* @param <T> - the input type
* @return the minimal value of the specified input
*/
- public static < T extends RealType< T > & NativeType< T > > T findMin( final IterableInterval< T > input )
- {
- Cursor< T > cursor = input.cursor();
- T type = cursor.next();
- T min = type.createVariable();
- while ( cursor.hasNext() )
- {
- type = cursor.next().copy();
- if ( type.compareTo( min ) <= 0 )
- {
- min.set( type.copy() );
- }
- }
- return min;
- }
-
-
- public static < T extends RealType< T > & NativeType< T > > T findMinBesideZero( final IterableInterval< T > input )
- {
- Cursor< T > cursor = input.cursor();
- double min = Max.findMax( input ).get().getRealDouble();
- while ( cursor.hasNext() )
- {
- cursor.fwd();
- final double value = cursor.get().getRealDouble();
- if ( value > 0 && value < min )
- {
- min = value;
- }
- }
-
- T minimum = input.firstElement().createVariable();
- minimum.setReal( min );
- return minimum;
- }
+// public static < T extends RealType< T > & NativeType< T > > T findMin( final IterableInterval< T > input )
+// {
+// Cursor< T > cursor = input.cursor();
+// T type = cursor.next();
+// T min = type.createVariable();
+// while ( cursor.hasNext() )
+// {
+// type = cursor.next().copy();
+// if ( type.compareTo( min ) <= 0 )
+// {
+// min.set( type.copy() );
+// }
+// }
+// return min;
+// }
+//
+//
+// public static < T extends RealType< T > & NativeType< T > > T findMinBesideZero( final IterableInterval< T > input )
+// {
+// Cursor< T > cursor = input.cursor();
+// double min = Max.findMax( input ).get().getRealDouble();
+// while ( cursor.hasNext() )
+// {
+// cursor.fwd();
+// final double value = cursor.get().getRealDouble();
+// if ( value > 0 && value < min )
+// {
+// min = value;
+// }
+// }
+//
+// T minimum = input.firstElement().createVariable();
+// minimum.setReal( min );
+// return minimum;
+// }
// TODO implements Otsu-2D ???
-
- public static < T extends RealType< T > & NativeType< T > > int[] getHistogram( IterableInterval< T > image, T min, T max, int numBins )
- {
- HistogramZ< T > H = new HistogramZ<>( new RealBinMapper<>( min, max, numBins ), image );
- H.process();
-
- return H.getHistogram();
- }
-
-
- public static int OtsuCelebiIndex( int[] histogram )
- {
- // Otsu's threshold algorithm
- // M. Emre Celebi 6.15.2007, Fourier Library https://sourceforge.net/projects/fourier-ipal/
- // ported to ImageJ plugin by G.Landini
-
- int ih;
- int threshold;
- int num_pixels = 0;
- double total_mean; /* mean gray-level for the whole image */
- double bcv, term; /* between-class variance, scaling term */
- double max_bcv; /* max BCV */
- double[] cnh = new double[ histogram.length ]; /* cumulative normalized histogram */
- double[] mean = new double[ histogram.length ]; /* mean gray-level */
- double[] h = new double[ histogram.length ];/* normalized histogram */
-
- /* Calculate total number of pixels */
- for ( ih = 0; ih < histogram.length; ih++ )
- {
- num_pixels = num_pixels + histogram[ ih ];
- }
-
- term = 1.0 / ( double ) num_pixels;
-
- /* Calculate the normalized histogram */
- for ( ih = 0; ih < histogram.length; ih++ )
- {
- h[ ih ] = term * histogram[ ih ];
- }
-
- /* Calculate the cumulative normalized histogram */
- cnh[ 0 ] = h[ 0 ];
- for ( ih = 1; ih < histogram.length; ih++ )
- {
- cnh[ ih ] = cnh[ ih - 1 ] + h[ ih ];
- }
-
- mean[ 0 ] = 0.0;
-
- for ( ih = 1; ih < histogram.length; ih++ )
- {
- mean[ ih ] = mean[ ih - 1 ] + ih * h[ ih ];
- }
-
- total_mean = mean[ histogram.length - 1 ];
-
- // Calculate the BCV at each gray-level and find the threshold that maximizes it
- threshold = Integer.MIN_VALUE;
- max_bcv = 0.0;
-
- for ( ih = 0; ih < histogram.length; ih++ )
- {
- bcv = total_mean * cnh[ ih ] - mean[ ih ];
- bcv *= bcv / ( cnh[ ih ] * ( 1.0 - cnh[ ih ] ) );
-
- if ( max_bcv < bcv )
- {
- max_bcv = bcv;
- threshold = ih;
- }
- }
- return threshold;
- }
-
-
- public static < T extends RealType< T > & NativeType< T > > T getThreshold( IterableInterval< T > input )
- {
- T max = Threshold.findMax( input );
- T min = Threshold.findMin( input );
- int[] histogram = getHistogram( input, min, max, 256 );
- return getThreshold( min, max, histogram );
- }
-
-
- public static < T extends RealType< T > & NativeType< T > > T getThreshold( IterableInterval< T > input, double percent )
- {
- T max = Threshold.findMax( input );
- T min = Threshold.findMin( input );
- int[] histogram = getHistogram( input, min, max, 256 );
- T threshold = getThreshold( min, max, histogram );
- threshold.mul( percent );
- return threshold;
- }
-
- public static < T extends RealType< T > & NativeType< T > > T getThreshold( T min, T max, int[] histogram )
- {
- histogram[ 0 ] = 0;
- int thresholdIndex = OtsuCelebiIndex( histogram );
- return getBinValueFromIndex( min, max, histogram, thresholdIndex );
- }
-
-
- public static < T extends RealType< T > & NativeType< T > > T getBinValueFromIndex( T min, T max, int[] histogram, int thresholdIndex )
- {
- double binWidth = ( max.getRealDouble() - min.getRealDouble() ) / ( double ) histogram.length;
- double result = ( ( double ) ( thresholdIndex + 1 ) * binWidth + min.getRealDouble() );
- T threshold = min.createVariable();
- threshold.setReal( result );
- return threshold;
- }
-
- public static < T extends RealType< T > & NativeType< T > > T getFirstMaxValue( Img< T > input, boolean zero )
- {
- T max = Threshold.findMax( input );
- T min = Threshold.findMin( input );
- int numBins = (int)max.getRealDouble();
- HistogramZ< T > H = new HistogramZ<>( new RealBinMapper<>( min, max, 256 ), input );
- H.process();
- int[] histogram = H.getHistogram();
-
- if ( zero )
- {
- histogram[ 0 ] = 0;
- }
- int index = getFirstMaxIndex( histogram );
-
- return H.getBinCenter( index );
- }
-
- public static int getFirstMaxIndex( int[] histogram )
- {
- for ( int i = 2; i <= histogram.length - 2; i++ )
- {
- if ( histogram[ i - 1 ] < histogram[ i ] && histogram[ i ] > histogram[ i + 1 ] )
- {
- return i;
- }
- }
- return - 1; // no max ?
- }
+//
+// public static < T extends RealType< T > & NativeType< T > > int[] getHistogram( IterableInterval< T > image, T min, T max, int numBins )
+// {
+// HistogramZ< T > H = new HistogramZ<>( new RealBinMapper<>( min, max, numBins ), image );
+// H.process();
+//
+// return H.getHistogram();
+// }
+
+
+// public static int OtsuCelebiIndex( int[] histogram )
+// {
+// // Otsu's threshold algorithm
+// // M. Emre Celebi 6.15.2007, Fourier Library https://sourceforge.net/projects/fourier-ipal/
+// // ported to ImageJ plugin by G.Landini
+//
+// int ih;
+// int threshold;
+// int num_pixels = 0;
+// double total_mean; /* mean gray-level for the whole image */
+// double bcv, term; /* between-class variance, scaling term */
+// double max_bcv; /* max BCV */
+// double[] cnh = new double[ histogram.length ]; /* cumulative normalized histogram */
+// double[] mean = new double[ histogram.length ]; /* mean gray-level */
+// double[] h = new double[ histogram.length ];/* normalized histogram */
+//
+// /* Calculate total number of pixels */
+// for ( ih = 0; ih < histogram.length; ih++ )
+// {
+// num_pixels = num_pixels + histogram[ ih ];
+// }
+//
+// term = 1.0 / ( double ) num_pixels;
+//
+// /* Calculate the normalized histogram */
+// for ( ih = 0; ih < histogram.length; ih++ )
+// {
+// h[ ih ] = term * histogram[ ih ];
+// }
+//
+// /* Calculate the cumulative normalized histogram */
+// cnh[ 0 ] = h[ 0 ];
+// for ( ih = 1; ih < histogram.length; ih++ )
+// {
+// cnh[ ih ] = cnh[ ih - 1 ] + h[ ih ];
+// }
+//
+// mean[ 0 ] = 0.0;
+//
+// for ( ih = 1; ih < histogram.length; ih++ )
+// {
+// mean[ ih ] = mean[ ih - 1 ] + ih * h[ ih ];
+// }
+//
+// total_mean = mean[ histogram.length - 1 ];
+//
+// // Calculate the BCV at each gray-level and find the threshold that maximizes it
+// threshold = Integer.MIN_VALUE;
+// max_bcv = 0.0;
+//
+// for ( ih = 0; ih < histogram.length; ih++ )
+// {
+// bcv = total_mean * cnh[ ih ] - mean[ ih ];
+// bcv *= bcv / ( cnh[ ih ] * ( 1.0 - cnh[ ih ] ) );
+//
+// if ( max_bcv < bcv )
+// {
+// max_bcv = bcv;
+// threshold = ih;
+// }
+// }
+// return threshold;
+// }
+
+
+// public static < T extends RealType< T > & NativeType< T > > T getThreshold( IterableInterval< T > input )
+// {
+// T max = Threshold.findMax( input );
+// T min = Threshold.findMin( input );
+// int[] histogram = getHistogram( input, min, max, 256 );
+// return getThreshold( min, max, histogram );
+// }
+//
+//
+// public static < T extends RealType< T > & NativeType< T > > T getThreshold( IterableInterval< T > input, double percent )
+// {
+// T max = Threshold.findMax( input );
+// T min = Threshold.findMin( input );
+// int[] histogram = getHistogram( input, min, max, 256 );
+// T threshold = getThreshold( min, max, histogram );
+// threshold.mul( percent );
+// return threshold;
+// }
+//
+// public static < T extends RealType< T > & NativeType< T > > T getThreshold( T min, T max, int[] histogram )
+// {
+// histogram[ 0 ] = 0;
+// int thresholdIndex = OtsuCelebiIndex( histogram );
+// return getBinValueFromIndex( min, max, histogram, thresholdIndex );
+// }
+
+//
+// public static < T extends RealType< T > & NativeType< T > > T getBinValueFromIndex( T min, T max, int[] histogram, int thresholdIndex )
+// {
+// double binWidth = ( max.getRealDouble() - min.getRealDouble() ) / ( double ) histogram.length;
+// double result = ( ( double ) ( thresholdIndex + 1 ) * binWidth + min.getRealDouble() );
+// T threshold = min.createVariable();
+// threshold.setReal( result );
+// return threshold;
+// }
+//
+// public static < T extends RealType< T > & NativeType< T > > T getFirstMaxValue( Img< T > input, boolean zero )
+// {
+// T max = Threshold.findMax( input );
+// T min = Threshold.findMin( input );
+// int numBins = (int)max.getRealDouble();
+// HistogramZ< T > H = new HistogramZ<>( new RealBinMapper<>( min, max, 256 ), input );
+// H.process();
+// int[] histogram = H.getHistogram();
+//
+// if ( zero )
+// {
+// histogram[ 0 ] = 0;
+// }
+// int index = getFirstMaxIndex( histogram );
+//
+// return H.getBinCenter( index );
+// }
+//
+// public static int getFirstMaxIndex( int[] histogram )
+// {
+// for ( int i = 2; i <= histogram.length - 2; i++ )
+// {
+// if ( histogram[ i - 1 ] < histogram[ i ] && histogram[ i ] > histogram[ i + 1 ] )
+// {
+// return i;
+// }
+// }
+// return - 1; // no max ?
+// }
}