Class GThresholdImageOps
ThresholdImageOps
.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionblockMean
(T input, @Nullable GrayU8 output, ConfigLength width, double scale, boolean down) Applies a threshold to an image by computing the mean values in a regular grid across the input image.blockMinMax
(T input, @Nullable GrayU8 output, ConfigLength width, double scale, boolean down, double textureThreshold) Applies a threshold to an image by computing the min and max values in a regular grid across the input image.blockOtsu
(T input, @Nullable GrayU8 output, boolean otsu2, ConfigLength width, double tuning, double scale, boolean down) Applies a threshold to an image by computing the Otsu threshold in a regular grid across the input image.static int
computeEntropy
(int[] histogram, int length, int totalPixels) Computes a threshold which maximizes the entropy between the foreground and background regions.static double
computeEntropy
(ImageGray input, double minValue, double maxValue) Computes a threshold which maximizes the entropy between the foreground and background regions.static int
computeHuang
(int[] histogram, int length) Implements Huang's fuzzy thresholding method Uses Shannon's entropy function (one can also use Yager's entropy function) Huang L.-K.static double
computeHuang
(ImageGray input, double minValue, double maxValue) Computes Huang's Minimum fyzzy thresholding from an input image.static int
computeLi
(int[] histogram, int length) Implements Li's Minimum Cross Entropy thresholding method This implementation is based on the iterative version (Ref.static double
Computes Li's Minimum Cross Entropy thresholding from an input image.static int
computeOtsu
(int[] histogram, int length, int totalPixels) Computes the variance based Otsu threshold from a histogram directly.static double
computeOtsu
(ImageGray input, double minValue, double maxValue) Computes the variance based threshold using Otsu's method from an input image.static int
computeOtsu2
(int[] histogram, int length, int totalPixels) Computes a modified modified Otsu threshold which maximizes the distance from the distributions means.static int
computeOtsu2
(ImageGray input, int minValue, int maxValue) Computes the variance based threshold using a modified Otsu method from an input image.localGaussian
(T input, @Nullable GrayU8 output, ConfigLength width, double scale, boolean down, T work1, @Nullable ImageGray work2) Thresholds the image using a locally adaptive threshold that is computed using a local square region centered on each pixel.localMean
(T input, GrayU8 output, ConfigLength width, double scale, boolean down, T work1, T work2, @Nullable GrowArray work3) Thresholds the image using a locally adaptive threshold that is computed using a local square region centered on each pixel.localNiblack
(T input, @Nullable GrayU8 output, ConfigLength width, float k, boolean down) AppliesNiblack
thresholding to the input image.localNick
(T input, @Nullable GrayU8 output, ConfigLength width, float k, boolean down) AppliesNICK
thresholding to the input image.localOtsu
(T input, @Nullable GrayU8 output, boolean otsu2, ConfigLength width, double tuning, double scale, boolean down) localSauvola
(T input, @Nullable GrayU8 output, ConfigLength width, float k, boolean down) AppliesSauvola
thresholding to the input image.localWolf
(T input, @Nullable GrayU8 output, ConfigLength width, float k, boolean down) AppliesWolf
thresholding to the input image.niblackFamily
(T input, @Nullable GrayU8 output, ConfigLength width, float k, boolean down, ThresholdNiblackFamily.Variant variant) Applies a global threshold across the whole image.
-
Constructor Details
-
GThresholdImageOps
public GThresholdImageOps()
-
-
Method Details
-
computeOtsu
Computes the variance based threshold using Otsu's method from an input image. Internally it uses
computeOtsu(int[], int, int)
andGImageStatistics.histogram(ImageGray, double, int[])
- Parameters:
input
- Input gray-scale imageminValue
- The minimum value of a pixel in the image. (inclusive)maxValue
- The maximum value of a pixel in the image. (inclusive)- Returns:
- Selected threshold.
-
computeOtsu2
Computes the variance based threshold using a modified Otsu method from an input image. Internally it uses
computeOtsu2(int[], int, int)
andGImageStatistics.histogram(ImageGray, double, int[])
- Parameters:
input
- Input gray-scale imageminValue
- The minimum value of a pixel in the image. (inclusive)maxValue
- The maximum value of a pixel in the image. (inclusive)- Returns:
- Selected threshold.
-
computeOtsu
public static int computeOtsu(int[] histogram, int length, int totalPixels) Computes the variance based Otsu threshold from a histogram directly. The threshold is selected by minimizing the spread of both foreground and background pixel values.- Parameters:
histogram
- Histogram of pixel intensities.length
- Number of elements in the histogram.totalPixels
- Total pixels in the image- Returns:
- Selected threshold
-
computeOtsu2
public static int computeOtsu2(int[] histogram, int length, int totalPixels) Computes a modified modified Otsu threshold which maximizes the distance from the distributions means. In extremely sparse histograms with the values clustered at the two means Otsu will select a threshold which is at the lower peak and in binary data this can cause a total failure.- Parameters:
histogram
- Histogram of pixel intensities.length
- Number of elements in the histogram.totalPixels
- Total pixels in the image- Returns:
- Selected threshold
-
computeLi
Computes Li's Minimum Cross Entropy thresholding from an input image. Internally it uses
computeLi(int[], int)
andGImageStatistics.histogram(ImageGray, double, int[])
- Parameters:
input
- Input gray-scale imageminValue
- The minimum value of a pixel in the image. (inclusive)maxValue
- The maximum value of a pixel in the image. (inclusive)- Returns:
- Selected threshold.
-
computeLi
public static int computeLi(int[] histogram, int length) Implements Li's Minimum Cross Entropy thresholding method This implementation is based on the iterative version (Ref. 2) of the algorithm. 1) Li C.H. and Lee C.K. (1993) "Minimum Cross Entropy Thresholding" Pattern Recognition, 26(4): 617-625 2) Li C.H. and Tam P.K.S. (1998) "An Iterative Algorithm for Minimum Cross Entropy Thresholding"Pattern Recognition Letters, 18(8): 771-776 3) Sezgin M. and Sankur B. (2004) "Survey over Image Thresholding Techniques and Quantitative Performance Evaluation" Journal of Electronic Imaging, 13(1): 146-165 http://citeseer.ist.psu.edu/sezgin04survey.html Ported to ImageJ plugin by G.Landini from E Celebi's fourier_0.8 routines Ported from Imagej code (https://imagej.nih.gov/ij/developer/source/) to BoofCV by Nico Stuurman- Parameters:
histogram
- Histogram of pixel intensities.length
- Number of elements in the histogram.- Returns:
- Selected threshold
-
computeHuang
Computes Huang's Minimum fyzzy thresholding from an input image. Internally it uses
computeHuang(int[], int)
andGImageStatistics.histogram(ImageGray, double, int[])
- Parameters:
input
- Input gray-scale imageminValue
- The minimum value of a pixel in the image. (inclusive)maxValue
- The maximum value of a pixel in the image. (inclusive)- Returns:
- Selected threshold.
-
computeHuang
public static int computeHuang(int[] histogram, int length) Implements Huang's fuzzy thresholding method Uses Shannon's entropy function (one can also use Yager's entropy function) Huang L.-K. and Wang M.-J.J. (1995) "Image Thresholding by Minimizing the Measures of Fuzziness" Pattern Recognition, 28(1): 41-51 M. Emre Celebi 06.15.2007
Ported to ImageJ plugin by G.Landini from E Celebi's fourier_0.8 routines Ported from Imagej code (https://imagej.nih.gov/ij/developer/source/) to BoofCV by Nico Stuurman
- Parameters:
histogram
- Histogram of pixel intensities.length
- Number of elements in the histogram.- Returns:
- Selected threshold
-
computeEntropy
Computes a threshold which maximizes the entropy between the foreground and background regions. See
computeEntropy(int[], int, int)
for more details.- Parameters:
input
- Input gray-scale imageminValue
- The minimum value of a pixel in the image. (inclusive)maxValue
- The maximum value of a pixel in the image. (inclusive)- Returns:
- Selected threshold.
- See Also:
-
computeEntropy
public static int computeEntropy(int[] histogram, int length, int totalPixels) Computes a threshold which maximizes the entropy between the foreground and background regions. See [1] for algorithmic details, which cites [2].
[1] E.R. Davies "Machine Vision Theory Algorithms Practicalities" 3rd Ed. 2005. pg. 124
[2] Hannah, Ian, Devesh Patel, and Roy Davies. "The use of variance and entropic thresholding methods for image segmentation." Pattern Recognition 28.8 (1995): 1135-1143.- Parameters:
histogram
- Histogram of pixel intensities.length
- Number of elements in the histogram.totalPixels
- Total pixels in the image- Returns:
- Selected threshold
-
threshold
public static <T extends ImageGray<T>> GrayU8 threshold(T input, @Nullable @Nullable GrayU8 output, double threshold, boolean down) Applies a global threshold across the whole image. If 'down' is true, then pixels with values ≤ to 'threshold' are set to 1 and the others set to 0. If 'down' is false, then pixels with values > to 'threshold' are set to 1 and the others set to 0.- Parameters:
input
- Input image. Not modified.output
- (Optional) Binary output image. If null a new image will be declared. Modified.threshold
- threshold value.down
- If true then the inequality ≤ is used, otherwise if false then > is used.- Returns:
- binary image.
-
localMean
public static <T extends ImageGray<T>> GrayU8 localMean(T input, GrayU8 output, ConfigLength width, double scale, boolean down, @Nullable T work1, @Nullable T work2, @Nullable @Nullable GrowArray work3) Thresholds the image using a locally adaptive threshold that is computed using a local square region centered on each pixel. The threshold is equal to the average value of the surrounding pixels times the scale. If down is true then b(x,y) = I(x,y) ≤ T(x,y) * scale ? 1 : 0. Otherwise b(x,y) = I(x,y) > T(x,y) * scale ? 0 : 1
NOTE: Internally, images are declared to store intermediate results. If more control is needed over memory call the type specific function.
- Parameters:
input
- Input image.output
- (optional) Output binary image. If null it will be declared internally.width
- Width of square region.scale
- Scale factor used to adjust thresholddown
- Should it threshold up or down.work1
- (Optional) Internal workspace. Can be nullwork2
- (Optional) Internal workspace. Can be null- Returns:
- binary image.
-
localGaussian
public static <T extends ImageGray<T>> GrayU8 localGaussian(T input, @Nullable @Nullable GrayU8 output, ConfigLength width, double scale, boolean down, @Nullable T work1, @Nullable @Nullable ImageGray work2) Thresholds the image using a locally adaptive threshold that is computed using a local square region centered on each pixel. The threshold is equal to the gaussian weighted sum of the surrounding pixels times the scale. If down is true then b(x,y) = I(x,y) ≤ T(x,y) * scale ? 1 : 0. Otherwise b(x,y) = I(x,y) > T(x,y) * scale ? 0 : 1
NOTE: Internally, images are declared to store intermediate results. If more control is needed over memory call the type specific function.
- Parameters:
input
- Input image.output
- (optional) Output binary image. If null it will be declared internally.width
- Width of square region.scale
- Scale factor used to adjust thresholddown
- Should it threshold up or down.work1
- (Optional) Internal workspace. Can be nullwork2
- (Optional) Internal workspace. Can be null- Returns:
- binary image.
-
localOtsu
public static <T extends ImageGray<T>> GrayU8 localOtsu(T input, @Nullable @Nullable GrayU8 output, boolean otsu2, ConfigLength width, double tuning, double scale, boolean down) -
localNiblack
public static <T extends ImageGray<T>> GrayU8 localNiblack(T input, @Nullable @Nullable GrayU8 output, ConfigLength width, float k, boolean down) AppliesNiblack
thresholding to the input image. Intended for use with text image.- Parameters:
input
- Input image.output
- (optional) Output binary image. If null it will be declared internally.width
- Width of square region.k
- Positive parameter used to tune threshold. Try 0.3down
- Should it threshold up or down.- Returns:
- binary image
- See Also:
-
localSauvola
public static <T extends ImageGray<T>> GrayU8 localSauvola(T input, @Nullable @Nullable GrayU8 output, ConfigLength width, float k, boolean down) AppliesSauvola
thresholding to the input image. Intended for use with text image.- Parameters:
input
- Input image.output
- (optional) Output binary image. If null it will be declared internally.width
- Width of square region.k
- Positive parameter used to tune threshold. Try 0.3down
- Should it threshold up or down.- Returns:
- binary image
- See Also:
-
localWolf
public static <T extends ImageGray<T>> GrayU8 localWolf(T input, @Nullable @Nullable GrayU8 output, ConfigLength width, float k, boolean down) AppliesWolf
thresholding to the input image. Intended for use with text image.- Parameters:
input
- Input image.output
- (optional) Output binary image. If null it will be declared internally.width
- Width of square region.k
- Positive parameter used to tune threshold. Try 0.3down
- Should it threshold up or down.- Returns:
- binary image
- See Also:
-
niblackFamily
protected static <T extends ImageGray<T>> GrayU8 niblackFamily(T input, @Nullable @Nullable GrayU8 output, ConfigLength width, float k, boolean down, ThresholdNiblackFamily.Variant variant) -
localNick
public static <T extends ImageGray<T>> GrayU8 localNick(T input, @Nullable @Nullable GrayU8 output, ConfigLength width, float k, boolean down) AppliesNICK
thresholding to the input image. Intended for use with text image.- Parameters:
input
- Input image.output
- (optional) Output binary image. If null it will be declared internally.width
- Width of square region.k
- Positive parameter used to tune threshold. Try -0.1 to -0.2down
- Should it threshold up or down.- Returns:
- binary image
- See Also:
-
blockMinMax
public static <T extends ImageGray<T>> GrayU8 blockMinMax(T input, @Nullable @Nullable GrayU8 output, ConfigLength width, double scale, boolean down, double textureThreshold) Applies a threshold to an image by computing the min and max values in a regular grid across the input image. SeeThresholdBlockMinMax
for the details.- Parameters:
input
- Input image.output
- (optional) Output binary image. If null it will be declared internally.width
- Width of square region.scale
- Scale factor used to adjust thresholddown
- Should it threshold up or down.textureThreshold
- If the min and max values are within this threshold the pixel will be set to 1.- Returns:
- Binary image
-
blockMean
public static <T extends ImageGray<T>> GrayU8 blockMean(T input, @Nullable @Nullable GrayU8 output, ConfigLength width, double scale, boolean down) Applies a threshold to an image by computing the mean values in a regular grid across the input image. SeeThresholdBlockMean
for the details.- Parameters:
input
- Input image.output
- (optional) Output binary image. If null it will be declared internally.width
- Width of square region.scale
- Scale factor used to adjust thresholddown
- Should it threshold up or down.- Returns:
- Binary image
-
blockOtsu
public static <T extends ImageGray<T>> GrayU8 blockOtsu(T input, @Nullable @Nullable GrayU8 output, boolean otsu2, ConfigLength width, double tuning, double scale, boolean down) Applies a threshold to an image by computing the Otsu threshold in a regular grid across the input image. SeeThresholdBlockOtsu
for the details.- Parameters:
input
- Input image.output
- (optional) Output binary image. If null it will be declared internally.width
- Width of square region.tuning
- Tuning parameter. 0 = regular Otsudown
- Should it threshold up or down.- Returns:
- Binary image
-