Replay: Phil Rhodes provides everything you always wanted to know about LUTs...
Making pictures look subtly different – or even drastically different – is something that's been commonplace for years in post production. Sneaking up on over the last ten years or so has been the requirement to juggle grading and calibration on set, too, and as with anything that touches the picture, there's a mesmerising variety of ways to make horrible mistakes.
Purpose and Application
It's the object of this piece to avoid that problem, of course, and the best place to start is with a thorough understanding of lookup tables, what they're for, and how they're implemented, as well as how they relate to alternative approaches such as numerically-defined transforms. Lookup tables, or LUTs, are used everywhere, from cameras, conversion devices and monitors to post production software and even command line processing tools.
Regardless of the circumstances, though, the purpose of a lookup table is to make colour and brightness adjustments to a picture, whether that's a picture in a file on a workstation or one flying down a cable. The reasons for doing this are varied. A box designed to apply a calibration to a display (or a built-in feature in a display which performs the same function) is using a LUT. Loading a LUT into a camera might be intended to apply creative colour and brightness changes to the camera's monitoring output, so as to approximate the look of the final production for the benefit of people on set while retaining the option to tweak in post. In other circumstances, a LUT might be applied to image data that isn't designed to be directly viewed – such as a log output from a camera – in order to make it easier to look at.
In practice, LUTs are generally handed around as files, and there are, unfortunately, a lot of incompatible formats and sometimes no loss-free way to convert between them. Creating a grade on some test footage, then taking that grade on set in a monitor or camera, is a completely reasonable desire, but there can be a few stumbling blocks in the way.
Principal Types of LUT
There are three main technical approaches to altering brightness and colour in images: one-dimensional LUTs, three-dimensional LUTs, and, as a side issue, mathematical transformations. There is, for reasons that should soon be clear, no such thing as a 2D LUT. In general, though, the term “lookup table” can be taken fairly literally: for each input value there's a fixed output value.
One-dimensional LUTs are perhaps most comparable to something like Photoshop's curves filter, where each of the red, green and blue colour channels is treated separately – possibly they're better described as a set of three lists of values. Often, 1D LUTs work in ten bits, so for each RGB channel there are 1024 values and the operation is very literal. Let's consider an example lookup table, which only has 10 values, to keep things straightforward.
Fig. 1: The three numerical lists of a 1D LUT
As we can see, most of the numbers in the red and green channels simply increment one by one, row by row; the output, in these cases, will be the same as the input. The blue channel, however, contains numbers that don't always increment by one. Let's draw a quick chart of the values, so we can get a good idea what they might do:
Fig. 2: The curves described by the example LUT
As we can see, the blue channel has been reduced in its midtones – a reduction in blue gamma. This has the effect of pushing the image toward yellow. It will do this to more or less anything, although the look of the effect can be quite dependent on the picture content.
Fig. 3: 1D LUT on image
This illustrates one of the key issues with LUTs, particularly those intended to change an image that's in one standard – say Sony's SLog3 low-contrast curve – into another, such as the monitoring standard ITU-T Recommendation 709 (Rec. 709). A one-dimensional lookup table can do this. What a 1D LUT can't do, however, is to change something that's entirely blue into something that's entirely red, or alter the appearance of, say, pinkish-purple objects without altering anything else. A 1D LUT is very much the equivalent of the “curves” filter from Photoshop – and in fact, that filter can actually save lookup tables which can, by various means, be converted into formats suitable for use in other software and hardware devices. Click the pen icon, click the poorly-designed button to the right of the “preset” dropdown, and hit “save”. The resulting .amp file is a basic 1D LUT; software such as Resolve has the ability to output more complicated things. Note that if you don't get an .amp file, it isn't a conventional LUT; click the pen icon and try again.
Fig. 4: Saving a LUT from Photoshop's Curves filter
So, if something contains a lot of blue, a 1D LUT can reduce that amount, but there's no way to tie the amount of blue to the amount of red or green. In an artistic sense, if we're trying to implement a grade, a 1D LUT can't, for instance, do a hue rotation, or reduce or increase saturation.