About the Lab Gamut

The Lab gamut has a strange appearance and makes one wonder what it is and how it is made. The best place to start is a quick review of how a single Lab color is made. The spectral reflectance of a color sample is integrated with the CIE Standard Observer functions and a Reference Illuminant. This produces an XYZ tristimulus. The conversion from XYZ to Lab is given by a standard CIE formula.

Lab Calculation

For the gamut shown in the images, the CIE 2° Standard Observer functions, and the CIE D50 Reference Illuminant were used. Furthermore, the samples chosen were limited to non-fluorescing materials (i.e. the reflectance at any wavelength is limited to the range [0.0, 1.0]).

So the only variable is the Sample spectrum. There are infinitely many spectra, but just suppose you generated them all, and for each, you computed its Lab values and plotted this point in the three-dimensional Lab coordinate system. What you would find is that these points would form a cluster, and that the cluster would have a definite shape, and that the shape would have a definite boundary beyond which no Lab points would ever be generated. That boundary is the Lab Gamut that is shown in the images.

The illustrations were rendered using a proprietary ray tracing program. The gamut surface is modeled using 10,247 ellipsoids which lie just inside the gamut boundary. This causes the surface to appear "bumpy" (it is not) and the seams to be ragged (they are not), but perhaps contributes to the ability to "see" the shape better.

Integer Encoding of Lab

Many real world implementations of Lab encode the values as integers. Common examples include TIFF image files, ICC profiles and Adobe Photoshop images. Integers have limited ranges. Typically, the full L* range [0, 100] is encoded. However, the encoding range of the a* and b* components is usually restricted to cover the range [-128, 127]. Therefore, all possible Lab colors cannot be encoded using this scheme. Even when 16-bit values are used instead of 8-bit values, the extra bits are used to make finer divisions between values, and are not used to extend the range of values.

Here is an illustration showing the limits imposed by this integer encoding of Lab:

Integer Limits

The semi-transparent boxes show the portion of Lab color space that may be represented by integer encoding. You can see that some real colors are excluded (the lobes that bulge outside the box). You can also see that much of the available encoding space, about two-thirds in fact, is wasted because these Lab values can never occur.

Back to the Lab Gamut Display