What is a color space?

A color space is a defined range of colors. Well known color spaces include sRGB, AdobeRGB and ProPhotoRGB.

The human visual system is not a simple RGB sensor, but we can approximate how the eye responds with a CIE 1931 chromaticity diagram that shows the human visual response as a horse-shoe shape. You can see that in human vision there are many more shades of green detected than blue or red. With a trichromatic color space like RGB we represent the colors on the computer using three values, which restricts up to encoding a triangle of colors.

Using models such as a CIE 1931 chromaticity diagram is a huge simplification of the human visual system, and real gamuts are expressed as 3D hulls, rather than 2D projections. A 2D projection of a 3D shape can sometimes be misleading, so if you want to see the 3D hull, use the gcm-viewer application.

sRGB, AdobeRGB and ProPhotoRGB represented by white triangles

First, looking at sRGB, which is the smallest space and can encode the least number of colors. It is an approximation of a 10 year old CRT display, and so most modern monitors can easily display more colors than this. sRGB is a least-common-denominator standard and is used in a large number of applications (including the Internet).

AdobeRGB is frequently used as an editing space. It can encode more colors than sRGB, which means you can change colors in a photograph without worrying too much that the most vivid colors are being clipped or the blacks crushed.

ProPhoto is the largest space available and is frequently used for document archival. It can encode nearly the whole range of colors detected by the human eye, and even encode colors that the eye cannot detect!

Now, if ProPhoto is clearly better, why don’t we use it for everything? The answer is to do with quantization. If you only have 8 bits (256 levels) to encode each channel, then a larger range is going to have bigger steps between each value.

Bigger steps mean a larger error between the captured color and the stored color, and for some colors this is a big problem. It turns out that key colors, like skin colors are very important, and even small errors will make untrained viewers notice that something in a photograph looks wrong.

Of course, using a 16 bit image is going to leave many more steps and a much smaller quantization error, but this doubles the size of each image file. Most content in existence today is 8bpp, i.e. 8 bits-per-pixel.

Color management is a process for converting from one color space to another, where a color space can be a well known defined space like sRGB, or a custom space such as your monitor or printer profile.