Function File: stretchlim (I)
Function File: stretchlim (RGB)
Function File: stretchlim (…, tol)

Find limits to contrast stretch an image.

Returns a 2 element column vector, [low; high], with the pair of intensities to contrast stretch I which saturates at most tol of the image. The output of this function matches the input expected by imadjust.

The input argument tol, controls the fraction of the image to be saturated and defaults to [0.01 0.99], i.e., a 1% saturation on both sides of the image histogram. It can be specified in two ways:

  • a two element vector with lower and higher fraction of the the image to be saturated. These values must be in the range [0 1], the display range of images of floating point class.
  • a scalar value with the fraction of image to be saturated on each side; e.g., a tol with a value of 0.05 is equivalent to [0.05 0.95]. This value must be in the range [0 0.5].

A common use case wanting to maximize contrast without causing any saturation. In such case tol should be 0 (zero). It is the equivalent to [min(I(:)); max(I(:))] for a single plane.

The return values are of class double and in the range [0 1] regardless of the input image class. These values are scaled in the image class range (see im2double).

If the input is a RGB image, i.e., the 3rd dimension has length 3, then it returns a [2 3] matrix with separate limits for each colour. It will actually do this for each plane, so an input of size, [M N P] will return a [2 P] matrix.

Higher dimensions of I are also valid. As in the 3 dimensional case, the limits for each 2 dimensional plane are returned in a 2 row vector for each 2 dimensional plane, one dimension below. That is, an input of size [M N P Q R] will return an array of size [2 P Q R].

Note the detail that tol is the maximum fraction of saturation. It is rare that there is a value for that exact saturation. In such case, stretchlim will always round down and saturate less. tol is the saturation limit. For example, if tol is 0.10, but there are only values that will lead to 5 or 11% saturation, it will return the value for a 5% saturation.

See also: brighten, contrast, histeq, imadjust.

Package: image