International Color Consortium
Getting Started
Making color seamles between devices and documents
ICC Specifications
Technical Notes
ICC Resource Center
ICC Slide Presentation
ICC Logos
Information on Profiles
ICC White Papers
Color Management Links
Member List
ICC Working Groups
Search ICC:
Got a question about ICC Profiles or colour management?

How to find the gamut of a display

To obtain the gamut of a display, the first step is to select a sample of colours on the gamut surface. A test chart known as the RGB GamutTarget that contains 434 colours in 8-bit RGB space can be used for this purpose, or you can use an alternative scheme for sampling the surface.

There are two types of display gamut that can be found by the steps described below. One is the gamut of a given display, while the other is a reference display, using one of the encodings described in the ICC 3-Component Color Encoding Registry. In both cases a suitable ICC profile can be used as the source of the colour gamut. You can also use the transform defined in the encoding specification, or a model of the particular display, to convert between the RGB of the gamut boundary sample and CIELAB.

Once the sample of colours has been selected, the next step is to convert from the display colour space to CIELAB. This can be done by assigning the profile for the display to the RGBGamutTarget image (or other sample of RGB colours from the surface), and converting it to CIELAB in an application such as Adobe Photoshop. (For other colour management applications that do not provide a direct conversion to CIELAB, a CIELAB D50 destination profile can be used as the destination - one can be downloaded from the Profiles page. For display profiles, both Media-Relative and ICC-Absolute Colorimetric rendering intents should give the same results, but black point compensation should not be used in the conversion.

ICC recommends that display gamut boundaries are in media-relative PCS coordinates, which for v4 profiles requires chromatically adapting the display measurements to D50. A v4 display profile is based on D50 PCS coordinates, so it is not necessary to calculate such values as a separate step if using a profile. ICC also recommends that in v2 display profiles the PCS values are chromatically adapted to D50, but the v2 specification was ambiguous on this point and so some v2 profiles have different white points.

An iccMAX profile can have a custom PCS, and in this case the display gamut boundary should be encoded in the custom PCS of the profile. A custom-to-standard conversion, which is required in all iccMAX profiles with a custom PCS, makes it possible to convert the PCS coordinates to D50 if necessary for comparison with the gamut boundary in another (v4 or iccMAX) profile.

For some purposes (such as where it is desired to compare the gamuts of two displays whose peak white points differ in luminance or chromaticity) other suitable reference white points may be used to compute CIELAB values. The display peak luminance affects the perceived gamut, so if the luminances differ and a media-relative comparison is not desired, it is suggested that the display with the highest peak luminance is taken as the reference white. If the chromaticities are different, one must be chromatically adapted to the white point of the other so that the same reference white is used for both.

The CIELAB data for coordinates on the gamut surface are known as gamut vertices. These data can be obtained from the converted image. The image file format will usually be 8-bit or (preferably) 16-bit unsigned integer data. In some programs when a CIELAB image is opened, the program may convert from this integer format to CIELAB. If not, you should refer to the PCS encoding specification in the ICC specification to see how to obtain CIELAB data from uint8 or uint16. Once you have the vertices, there are several things you can do:

  1. Encode the gamut as an iccMAX gamutBoundaryDescType. If you used the RGBGamutTarget image you can use the template here. The template gives the triangulation and device values for the RGBGamutBoundary image, together with vertices encoded in CIELAB for the sRGB gamut.
  2. Visualise the gamut, either as a convex hull, or as a set of faces which correspond to the gamut triangulation.
  3. Find the volume of the gamut. This can be done by adding a point at the gamut centre such that all triangles become tetrahedra, and calculating and summing the volumes of the tetrahedra. Details can be found in Metrics for comparing and analysing two colour gamuts, K. Deshpande et al, Col. Res. Appl. (2014).
  4. Form a Gamut Boundary Descriptor (GBD) for use in gamut mapping. The vertices and faces in the gamutBoundaryDescType define one type of GBD, and others can be computed from the vertices.
More information about describing a gamut in iccMAX can be found in Methods of describing a gamut boundary based on a face/vertex encoding, P. Green et al, Electronic Imaging, Color Imaging XXII: Displaying, Processing, Hardcopy, and Applications (2017).