Back to Adaptive Vision Library Lite website

You are here: Start » Image Thresholding » ThresholdImage



Transforms each pixel value to maximum or minimum depending on whether they belong to the specified range.


void avl::ThresholdImage
	const avl::Image& inImage,
	atl::Optional<const avl::Region&> inRoi,
	atl::Optional<float> inMinValue,
	atl::Optional<float> inMaxValue,
	float inFuzziness,
	avl::Image& outMonoImage


Name Type Range Default Description
inImage const Image& Input image
inRoi Optional<const Region&> NIL Region of interest
inMinValue Optional<float> 128.0f Minimum value of a pixel that is considered foreground (Auto = -INF)
inMaxValue Optional<float> NIL Maximum value of a pixel that is considered foreground (Auto = +INF)
inFuzziness float 0.0 - 0.0f A tolerance for inMin/MaxValue that results in intermediate output values
outMonoImage Image&


The operation transforms each pixel value to the maximum or minimum level thus creating binary image. The result of the transformation depends on the pixel intensity:

  • Pixel values in range (inMinValue, inMaxValue) are transformed to the maximum level.
  • Other pixel values are transformed to the minimum level.

If any of the parameters inMinValue, inMaxValue is not set, it is assumed to be, accordingly, -infinity or infinity.

Parameter inFuzziness (set to 0 by default) allows to perform fuzzy thresholding which linearly interpolates those pixel values that differ by at most inFuzziness from the values inMinValue, inMaxValue; thus creating smooth transition between minimum and maximum values in the resulting image (see Remarks section).

In the multichannel images the operation uses an average of channel values in each pixel, thus the resulting image is always monochromatic.


  • Define inMinValue to obtain white pixels for bright objects (brighter than the specified value).
  • Define inMaxValue to obtain white pixels for dark objects (darker than the specified value).
  • Use inFuzziness to add some smooth transitions between black and white pixels in the result.


ThresholdImage performed on the sample image with inMinValue = 80.0, inMaxValue = auto, inFuzziness = 0.0.

ThresholdImage performed on the sample image with inMinValue = 80.0, inMaxValue = auto, inFuzziness = 2.5.


When image pixel type is Real, parameter inFuzziness has no influence on the output (is ignored). The reason is strictly mathematical. Namely, there does not exist a smooth transition between -infinity and +infinity values, which are, correspondingly, minimum and maximum levels of pixel brightness.

Hardware Acceleration

This operation is optimized for SSE2 technology for pixels of types: 1xUINT8 (for inFuzziness = 0), 3xUINT8 (for inFuzziness = 0).

This operation supports automatic parallelization for multicore and multiprocessor systems.