This tool performs a sigmoidal stretch on a raster image. This is a transformation where the input image value for a grid cell (zin) is transformed to an output value zout such that:

> zout = (1.0 / (1.0 + exp(gain(cutoff - z))) - a ) / b x num_tones

where,

> z = (zin - MIN) / RANGE,

> a = 1.0 / (1.0 + exp(gain x cutoff)),

> b = 1.0 / (1.0 + exp(gain x (cutoff - 1.0))) - 1.0 / (1.0 + exp(gain x cutoff)),

MIN and RANGE are the minimum value and data range in the input image respectively and gain and cutoff are user specified parameters (`gain`, `cutoff`).

Like all of WhiteboxTools's contrast enhancement tools, this operation will work on either greyscale or RGB input images.

## See Also

piecewise_contrast_stretch, gaussian_contrast_stretch, histogram_equalization, min_max_contrast_stretch, percentage_contrast_stretch, standard_deviation_contrast_stretch

## Function Signature

`def sigmoidal_contrast_stretch(self, raster: Raster, cutoff: float = 0.0, gain: float = 1.0, num_tones: int = 256) -> Raster: ...`

## Project Links

WbW Homepage User Manual Support WbW