Back to Aurora Vision Library website

You are here: Start » Function Reference » Computer Vision » Image Segmentation » SegmentImage_Color


Header: AVL.h
Namespace: avl
Module: FoundationPro

Segments an image basing on distance to model colors.

Applications: Detection of objects of undefined shape, but characterized by uniform color and good contrast to the background.


void avl::SegmentImage_Color
	const avl::Image& inImage,
	atl::Optional<const avl::Region&> inRoi,
	const atl::Array<avl::Pixel>& inReferenceColors,
	const float inMaxDifference,
	atl::Optional<const atl::Array<float>&> inDifferenceMultipliers,
	float inChromaAmount,
	bool inForceDisjointRegions,
	atl::Array<avl::Region>& outRegions


Name Type Range Default Description
Input value
inImage const Image& Input image
Input value
inRoi Optional<const Region&> NIL Range of pixels to be processed
Input value
inReferenceColors const Array<Pixel>& Colors to compare pixels to
Input value
inMaxDifference const float 0.0 - 5.0f Maximal difference between pixel and reference color to be accepted
Input value
inDifferenceMultipliers Optional<const Array<float>&> NIL Scales for maximum differences for each color
Input value
inChromaAmount float 0.0 - 1.0 0.7f Proportion of chromatic information in distance computation
Input value
inForceDisjointRegions bool Force output regions to be disjoint
Output value
outRegions Array<Region>& Regions of pixels closest to colors


The operation finds regions of similar colors in RGB color space within inImage.

First, for each pixel of the input image its distance to each color in inReferenceColors is computed (see ColorDistanceImage function).

Then, for each reference color c, the function computes region of pixels that are closer to c than its corresponding threshold. In case inDifferenceMultipliers is Nil, threshold is equal to inMaxDifference. If inDifferenceMultipliers is not Nil, corresponding threshold is the product of inMaxDifference and the element of inDifferenceMultipliers that corresponds to c.

If flag inForceDisjointRegions is set to True, the regions are forced to be disjoint. In case a pixel has distance less than threshold for more than one color, distances are divided by thresholds and the minimum of ratios is taken. In particular, if the function works in one-threshold mode, the operation described above becomes simply minimum of distances.


SegmentImage_Color run with colors taken from three points with inChromaAmount = 0.7 and inMaxDifference = 15

Hardware Acceleration

This operation supports automatic parallelization for multicore and multiprocessor systems.


List of possible exceptions:

Error type Description
DomainError Inconsistent array sizes in SegmentImage_Color.
DomainError Reference color array size too big in SegmentImage_Color.

See Also

  • ColorDistance – Compares two pixels using chromatic and non-chromatic information. Assumes RGB color space.
  • ColorDistanceImage – Compares each pixel with the specified color using chromatic and non-chromatic information.