{ } Raw JSON

bundles / skimage 0.26.1rc0.dev0+git20260530.b607368ff / skimage / filters / thresholding / threshold_li

function

skimage.filters.thresholding:threshold_li

source: /dev/scikit-image/src/skimage/filters/thresholding.py :639

Signature

def   threshold_li ( image * tolerance = None initial_guess = None iter_callback = None )

Summary

Compute threshold value by Li's iterative Minimum Cross Entropy method.

Parameters

image : (M, N[, ...]) ndarray

Grayscale input image.

tolerance : float, optional

Finish the computation when the change in the threshold in an iteration is less than this value. By default, this is half the smallest difference between intensity values in image.

initial_guess : float or Callable[[array[float]], float], optional

Li's iterative method uses gradient descent to find the optimal threshold. If the image intensity histogram contains more than two modes (peaks), the gradient descent could get stuck in a local optimum. An initial guess for the iteration can help the algorithm find the globally-optimal threshold. A float value defines a specific start point, while a callable should take in an array of image intensities and return a float value. Example valid callables include numpy.mean (default), lambda arr: numpy.quantile(arr, 0.95), or even skimage.filters.threshold_otsu.

iter_callback : Callable[[float], Any], optional

A function that will be called on the threshold at every iteration of the algorithm.

Returns

threshold : float

Upper threshold value. All pixels with an intensity higher than this value are assumed to be foreground.

Examples

from skimage.data import camera
image = camera()
thresh = threshold_li(image)
binary = image > thresh

Aliases

  • skimage.filters.threshold_li

Referenced by