Yeah, and that’s great! Another article came out today on the interwebz talking about LUTs and their lack of precision. What lacks precision usually is the writer of the article, so let’s set some of those lines straight.
Lookup Tables: magic! Actually they are not magic at all. The first lookup table you learn in your life was at elementary school: 1×1=1, 1×2=2, 1×3=3, and so on. You could represent that as a set of input and output values:
A table is just a way of representing the link between values, in that case the mathematical operation of multiplication by 1. Your teacher didn’t teach you 1×2.23453245 because it wasn’t necessary: further down your education for those who were lucky, you could deal with fractional numbers without having to relearn everything. Well it’s pretty much the same with LUTs: LUTs are interpolated, and the precision of the process depends on both the precision of the LUT itself and the precision of the interpolation.
So a 1 dimension (1D) LUT has one input value and one output value. Here’s another 1D LUT by my son Basile:
Here’s how it look as a 3D cube:
Looks much smarter, right? I know some people who would buy it on Creative Market, if we get a nice shallow depth of field pic of a bearded guy with tattoos on a motorcycle. Let’s call it Fragmental Bleach Moody Cinematic.
A LUT can have as many dimensions as you wish as input and output. For our color stuff, we generally use either three 1D LUTs to apply independent modifications to R, G, B code values or 3D LUTs so each RGB triplet output can be the result of a process that takes the influence of both R, G and B input values.
Here’s another table:
As you can see, we have some variables that are quite difficult to modelize, we even have a couple of one-leggers at some point. The room temperature varies with the time of the day, but also with the number of people in the room, the weather, the wind speed… not something you can easily predict. LUTs can be good at this: you send a signal, measure the output, then you have a representation of the system. Can be useful to emulate the magic of a film lab process, where the relation with his partner of the chemist in chief has as much influence as the temperature of the bath, or to replicate the colors of that monitor that has that weird hue shift since some water was poured into it (bloody cats): complex phenomena that the best scientists could never put into equations. Sometimes you would also use LUTs because it makes more sense to remember the output value than to redo the calculation: that’s typically what my brain does when converting Celsius to Fahrenheit.
Then there’s the transforms, more magic! Well, no. A transform is a file that contains different types mathematical functions, so your table of multiplication by 2 could be represented by y=2x. Transforms are as precise as the understanding of the phenomenon they’re supposed to emulate and the precision of the processing: you can have a beautiful purely mathematical ACES transform processed in 8 bit, I can tell you when you show that when you show it on a 10 meter based screen, it shows badly. I know someone who will remember that all of his life. And by the way, even in the ACES transforms, sometimes you have… LUTs!!
So LUTs are just as stupid as you want them to be, or as smart. They sometimes get bad press, some known cinematographers have been very vocal about their hatred of LUTs, including some I respect a lot for their amazing compositions, so I respect the fact they can’t be good at everything or just don’t have the right people to help them. I always feel a bit embarrassed when I hear people talking about getting rid of LUTs because they lack precision, because it just shows they don’t understand the topic: they may have been bitten by a bad workflow involving LUTs: the problem may have been the precision of that LUT, or the precision of the implementation, or lack of flexibility, or just plain stupidity of someone in the chain.
So a LUT is some kind of transform. Any mathematical function can be represented as a LUT. Some LUTs can definitely not be represented as a mathematical function. Bad LUTs are bad, good LUTs are good!
Feel free to comment in the dedicated Rockflowers Q&A channel