International Color Consortium
Members
Getting Started
V4
iccMAX
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
FAQ
Forum
Home
Got a question about ICC Profiles or colour management?

Resources for colour gamuts in iccMAX

ICC has adopted a face/vertex gamut boundary descriptor in the iccMAX specification. This defines the gamut as an array of vertices on the gamut boundary in PCS colour space, together with an array of indices into the vertex array which give a set of triangles that connect to form a smooth and connected surface. Details are given in the entry for the gamutBoundaryDescType and in Annex B Gamut Boundary Description.

RefIccMax incorporates the IccXml tool that can be used to convert between XML and binary representations of an ICC profile. An example of the XML encoding for the gamutBoundaryDescType, as used in IccXml, is given below. This encodes a very simple gamut with 8 vertices and 12 faces.

<gamutBoundaryDescType>
    <TagSignature>gbd0</TagSignature>
    <Vertices>
       <PCSValues channels="3">
          100.00 0 0
          59.37 -37.37 -49.27
          50.95 77.53 -1.74
          93.67 -5.69 99.34
          26.58 21.49 -45.85
          52.40 -69.61 28.25
          50.87 71.33 49.98
          14.00 0.15 6.53
       </PCSValues>
       <DeviceValues channels="4">
          0 0 0 0
          1 0 0 0
          0 1 0 0
          0 0 1 0
          1 1 0 0
          1 0 1 0
          0 1 1 0
          1 1 1 1
       </DeviceValues>
    </Vertices>
    <Triangles>
      <T>1 3 2</T>
      <T>1 2 6</T>
      <T>1 6 4</T>
      <T>1 4 7</T>
      <T>1 7 3</T>
      <T>4 8 7</T>
      <T>4 6 8</T>
      <T>7 8 3</T>
      <T>3 8 5</T>
      <T>3 5 2</T>
      <T>2 5 8</T>
      <T>2 8 6</T>
   </Triangles>
</gamutBoundaryDescType>

To form the gamutBoundaryDescType, it is recommended to begin with a regular mesh in device space and convert this to CIELAB, or with a regular mesh in CIELAB space which is converted to device space and back to CIELAB. Methods for doing this were described by Green, Deshpande, Gaykema and Revie (Electronic Imaging, 2017). The face array for such a mesh can be derived as described in Annex B of the iccMAX specification.

A new gamut boundary target which can be used for this purpose was described in Revie and Green (Electronic Imaging, 2018), which has a more uniform spacing of vertices and avoids over-sampling near the gamut cusps. The image, and associated face list, can be downloaded below.

CMYKGamutTarget_v2.tif 16-bit RGB

RGBGamutTarget_v2.tif 16-bit CMYK

Face list for CMYK target

Face list for RGB target

A previous version was described by Green (Electronic Imaging, 2000) and in Green, Deshpande, Gaykema and Revie (Electronic Imaging, 2017). These images are available below.

RGBGamutTarget.tif 8-bit RGB

CMYKGamutTarget.tif 8-bit CMYK

16-bit CIELAB (Coordinates of the Perceptual Reference Medium Gamut PRMG)

In addition, an example gamutBoundaryDescType for sRGB gives RGB values and the corresponding face array for the RGBGamutBoundary image, together with vertices encoded in CIELAB for the sRGB gamut.