If you have been following our social media and press releases, then you might be aware that we have just released a new version of our Tessera software, known as 3.2 to its friends. One of the key features of this new version is 3D LUT Import. What on earth is a 3D LUT and why should I care about it?
Before we go into exactly what 3D LUTs are, it is worth looking at what a common or garden LUT is. LUT (pronounced ‘lut’) is an acronym that stands for Look Up Table. Within the context of image editing, film and video, a LUT is used to remap the input colour values of source pixels to new output values based on data contained within the LUT.
In layman’s terms, a LUT can be considered as a kind of colour preset that can be applied to images or footage. But what does that mean in practical terms?
LUTs are used for a variety of colour correction tasks, both technical and creative:
- Display calibration: LUTs are used when calibrating monitors or other display devices for colour critical work such as editing or grading
- Colour space conversion: LUTs that convert from different colour spaces, e.g. converting Rec 2020 to Rec 709
- Camera LUTs: LUTs that are often created by the camera manufacturer to convert camera logarithmic formats that digital cinema cameras typically capture footage in (which look very washed out to the eye) into Rec 709 or Rec 2020
LUTs can also be used creatively: for colour enhancement, creating monochrome or sepia effects, boosting shadows and highlights, or replicating the look of a particular film emulsion – the possibilities are endless.
LUTs can also be both creative and technical, such as those created by DIT (digital imaging technicians) and stored into ‘LUT boxes’ connected to on-set monitors that combine a camera LUT with a creative LUT. This is helpful for giving some idea to the film crew on-set of what the camera is capturing might end up looking like when it has been graded in post-production.
There are two major kinds of LUT: 1D and 3D.
A 1D LUT on its own, when applied, can only change one input value to one output value. This means that it can only be used for changes in luminance such as gamma correction, contrast, brightness and black and white levels.
‘Fig 1: 1D LUT’
However, commonly 3x 1D LUTs are used together: one for each colour channel. When the LUTs are applied to a source, the input red, green and blue values of each pixel, are mapped to new output values. The LUTs adjust the brightness of each of the red, blue and green channels independently of each other, depending on the values contained within the LUTs. This means they can only control gamma, brightness, contrast, black and white levels.
Whilst 1D LUTs are useful for many colour correction tasks such as overall colour balancing and gamma correction, they lack the precision required for more complex non-linear colour correction such as film stock emulation and colour grading.
This where 3D LUTs come in. 3D LUTs map red, green and blue to three axes of a 3-dimensional cube. Colour values can be adjusted relative to each other, which allows any colour to be mapped to any other colour. This allows far more sophisticated colour correction, like changes in hue and saturation.
A 1D LUT has a lookup table of values based on the bit depth. So, a 10-bit 1D LUT has 1024 values, and 3 1D LUTs have 3 x 1024 values – or 3072 values.
Mapping the 10-bit colours in 3-dimensions means 1024 x 1024 x 1024 or over 1 billion values, clearly significantly bigger that the 1D LUT approach.
This means that storing a 3D LUT in this way would mean a massive file size with implications for storage and performance. However, unlike the majority of 1D LUTs, 3D LUTs do not store an output value for each input value. They use a lattice of values, so a given input value exists at a point within the lattice.
‘Fig 3: An example of the contents of a 64x64x64 3D LUT.cube file. There are 64x64x64 = 262144 values for R, G and B’
‘Fig 4: 17x17x17 3D LUT lattice’
To calculate the output value, the value is interpolated – typically using trilinear or tetrahedral interpolation. The interpolation method used is very important to prevent visual artefacts. The size of the lattice and the bit depth of the 3D LUT determine the precision of the 3D LUT. Lattice sizes can be 17x17x17, 33 x 33 x 33 or 65 x 65 x 65 or higher, and bit depths can be 8-bit, 10-bit, 12-bit or 32- bit (floating point).
3D LUTs are not only an extremely precise method of colour correction but also a very efficient one. 3D LUTs are used extensively in post-production in grading and finishing, display calibration, and on-set grading, as well as converting from camera log formats to Rec 709 or Rec 2020.
We’re pleased to now be able to offer all those benefits of 3D LUTs with the ability to import them directly into your LED processor. We support any valid Adobe .cube file, and 3D LUTs can be pushed via IP control for more integrated workflows. This enables even more precise colour control for power users, and we hope it will be particularly useful for accurately recreating coloured “looks” and on-set grading on virtual production sets.
Learn more on our page about 3D LUT Import.