Working Spaces

Enjoy this guest blog post from CCP student and printing guru Benjamin Tait. You can read much more at his blog, Rendering Intent.
Ben also offers a printing service for CCP students, check it out!

What are they?

A working space is Adobe’s term for a standardised device-independent colour space. It is an intermediate space, that can be used to work in, and transfer files. It provides a way of communicating colour information from device to device without relying on knowing how each particular device behaves with respect to colour.

Common colour spaces include sRGB, AdobeRGB and ProPhotoRGB.

Why do we need them?

On their own, RGB colour values mean nothing. A pixel’s RGB values need a colour space to give them meaning. For a given pixel, image editing software will either give a % for the saturation of each colour channel (how much red, green, blue) (Lightroom), or discrete levels (for example, with a bit-depth of 8, possible values for each colour channel are 0-255).

Relating these values to a known colour space gives them meaning. Using standardised colour spaces, and embedding information that describes which colour space is being used, means that when I save or export a file, the meaning of the colour values travels with the file.

What do these colour spaces look like?

sRGB is a small colour space, relative to AdobeRGB, and the larger again (massive) ProPhotoRGB.

In the graph below, the white outline represents the range of colours that can be seen by a ‘Standard Observer’ (average human), with the coloured area representing the colours contained within the sRGB space. The yellow triangle represents the range of colours that can be contained within the AdobeRGB colour space.

The most saturated green that can exist in the AdobeRGB space is substantially more saturated than the most saturated green that can exist in sRGB. If you were working on a file in the sRGB space that contained ‘100%’ green, and I opened the file assuming that you had been working in AdobeRGB, I would see the value corresponding to 100% green and undertand that colour to be significantly more green than you intended. That is why it is important to be mindful of the working space when transferring files.

Choosing a Working Space

We have a choice to make. There are a number of working spaces that you can choose to work in, but which is the most sensible? Well, that depends…

To a large extent, Lightroom makes the choice for you. (We’re digressing here – feel free to skip the next couple of paragraphs!) Lightroom uses two device-independent colour spaces that have the same range of colours, but different gammas. What is gamma? A post coming to you in the near future will explain!

In the Develop Module, the values that are used to build the histogram, and give R, G and B values when hovering the mouse over a pixel, are in MelissaRGB. MelissaRBG is named after Melissa Gaul, a long-term developer on the Lightroom team. MelissaRGB covers the same range of colours that are present in ProPhotoRGB, but with a gamma of approximately 2.2 (although it gets more linear near the shadows). MelissaRGB is the colour space that is used to inspect our files.

The colour space that Lightroom actually works in is ThomasRGB, named after Thomas Knoll, the developer who was with Lightroom from the beginning. Like MelissaRGB, ThomasRGB also covers the same range of colours as ProPhotoRGB, but uses a linear gamma. Thomas Knoll created this colour space based on his (I assume, correct) belief that a lot of the image processing is better done with a linear gamma.

What does this mean for you? In practice, nothing. Other than you can be confident that Lightroom’s native working space(s) won’t clip colours in your image. Note that what we see on our display is coded to a gamma of 1.8 or 2.2 (depending on our monitor settings).

When you want to export a file from Lightroom, or work on a file in Photoshop, you need to decide which colour space to translate the colour information in the image into.

There are advantages and disadvantages to using a large colour space. The obvious advantage is that you can define a wider range of colours. One disadvantage is that for a given bit-depth (think of it as the number of bits used to describe colour intensities in each channel), the steps between colours that can be defined are larger.

Andrew Rodney uses the analogy of a balloon to explain this. Imagine you have a half inflated balloon and draw a number of dots on the surface of it. When you fill the balloon, the space between the dots will increase as the volume of the balloon increases.

Having a larger gap between colours that we can define means that colours we want to define can be ‘shifted’ further when assigning R, G and B values. At best, this marginally decreases the accuracy of our colours. At worst, it introduces visible posterisation.

Ok, so why not use a smaller space?

Modern digital cameras can capture a wider range of colours than can be contained within sRGB or AdobeRGB. When you assign a working space, the range of colours in the image may exceed the range of colours that can be contained within the working space. The colours in the file that extend beyond the working space are clipped to the closest colour at the boundary of the working space. This is not done gracefully, and can result in a block of colour in your image, and/or a loss of detail. Once you cut a colour off, you can’t get it back.

From here, you have two solutions:

  1. Use a large working space (such as ProPhotoRGB) that encompasses all of the colours within the image, and use 16 bits per colour channel (this give FAR finer gradations between colours than 8 bits per channel).
  2. Analyse your image file and work out which is the smallest working space that will encompass all of the colours in the image, and use that.

Note that there is no such thing as a free lunch. Increasing the bit depth, will make our files significantly larger, and make editing more computationally intensive. If you are fine with these trade-offs, by all means, work in ProPhotoRGB with a bit depth of 16. I do.

What about output?

If you’re printing, and having your application mange colour (as a general rule, do not let your print driver make decisions about colour!), you will need an ICC profile that is specific to the printer, media settings (which determine how much ink is laid down), pixels per inch, the ink-set and the paper being used. This profile will (hopefully) accurately describe the colour behaviour of the print and allow the Colour Management Module (CMM) and to translate the colours in your image into numbers which, when passed to your printer, will result in colours in your print that accurately reflect those in your file.

See the graph below that shows the gamut of Canson Baryta paper in combination with the Epson 3880 printer (dotted). Note that this combination of printer and paper (and driver settings) can output colours that fall outside of AdobeRGB (the black triangle). This (in itself) is a very good argument for working in ProPhotoRGB.

How about sending my file to someone else (to do more work, or print it)?

If you are confident that the person will handle the file based on the embedded working space information, then ProPhotoRGB is fine. AdobeRGB is also a fair option, particularly if none of the colours in your image fall outside of AdobeRGB.

What about the web?

Currently, colour management on the web is very hit-and-miss. Your best option is to convert the image to sRGB. If an application (such as a browser) can’t interpret the embedded colour space information, it will generally assume sRGB. If your image is already defined in sRGB, no problem! If it isn’t – say it was in AdobeRGB, your image will appear far less saturated when interpreted as an image in the sRGB colour space.

That wraps up our discussion of working spaces. Wondering what I was talking about when I mentioned gamma throughout this post? Check back soon for a (brief) intro to gamma curves!