What is a color space?

A colorspace is a defined range of colors. Well known colorspaces 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 chromacity diagram that shows the human visual response as a horse-shoe shape. You can see that in human vision there is many more shades of green detected than blue or red. With a trichromatic colorspace 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 chromacity 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 it an approximation of a 10 year old CRT display, and so most modern monitors can easily display more colors than this. sRGB is a standard least-common-demoninator standard and is used in a large number of applications (including the Internet).

AbodeRGB is frequently used as an editing space. It can encode more colors than sRGB, and means you adjust colors in a photograph without worrying too much that the brightnest colors are being clipped or the blacks crushed.

PhoPhoto 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 PhoPhoto is clearly better, why don't we use it for everything? The answer is to do with quantisation. 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 quantisation error, but this doubles the size of each image file. Most content in existance today is 8bpp, i.e. 8 bits-per-pixel.

Color managment is a process for converting from one colorspace 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.