Skip to contents

Calculate Otsu's threshold value that separates a single-band (e.g. greyscale) image into two distinct classes. The threshold value is determined by minimizing the combined intra-class variance. library(terra) is used to perform out-of-memory operations.

Usage

threshold_otsu(image, range = NULL, levels = 256)

Arguments

image

Single-band raster to be classified (SpatRaster object from library(terra)), or a file path to the image to be imported (terra::rast() will be used).

range

Numeric vector (of length 2) specifying the histogram range to be used for thresholding. Defaults to the minimum and maximum values of the imported raster.

levels

Number of histogram bins used to calculate the threshold value, typically based on the bit depth of the image (e.g. 8-bit image has 2^8 = 256 levels). Defaults to 256.

Value

Otsu's threshold value for the image (a single number), which can subsequently be used for image classification (e.g. convert continuous raster to binary raster).

References

Otsu, N. (1979). A threshold selection method from gray-level histograms. IEEE transactions on systems, man, and cybernetics, 9(1), 62-66. Pau, G., Fuchs, F., Sklyar, O., Boutros, M., & Huber, W. (2010).

EBImage—an R package for image processing with applications to cellular phenotypes. Bioinformatics, 26(7), 979-981.

See also

Examples

if (FALSE) {
  ndvi_mosaic <- system.file("extdata", "ndvi_mosaic.tif",
                              package="biodivercity")
  terra::plot(ndvi_mosaic) # examine raster data
  threshold_otsu(image = ndvi_mosaic)
}