Create custom PNG and CUBE LUTs to color correct your footage using a color reference card.
Try the new web-based LUT Maker: https://steveseguin.github.io/LUT-maker/
Our new browser-based tool lets you generate custom LUTs without any software installation or Python knowledge. Simply upload a photo of your color reference card and create professional color transformations directly in your browser!
Using accurate color samples obtained from the local paint shop, I've created tools to generate color filters that can be turned into LUTs (Look-Up Tables) to correct colors in video recordings. While not ideal for a final processed video/photo, it gets the footage to a standardized point that can be corrected with other LUTs that cannot be dynamically generated.
This repository offers two methods to create custom LUTs:
- NEW: Browser-based LUT Maker - No installation required
- Python-based tool - Run in Google Colab (no local setup needed)
The original Python tool can be run on Google Colab, so no Python setup or local operation is needed - everything runs in the cloud.
Access the Colab notebook here: http://colab.research.google.com/github/steveseguin/color-grading/blob/master/colab.ipynb
A video walk-through of this tool can be found here: https://www.youtube.com/watch?v=pu9IpbfckDo
OBS Studio comes with several LUTs, including the neutral one we've used in this repo, as displayed below.
Both tools can create CUBE format LUTs, which are supported by newer versions of OBS and many other video editing applications. The CUBE format is generally more accurate than PNG LUTs.
If you're using the Python Colab script, after the PNG LUT is created, there's code that will generate a result.cube
file in the Colab files folder (access it on the left side of the Colab page). You can download it from there as needed.
The code should make it pretty easy for a novice developer to convert between LUT types. I'd love to get ICC support added directly to this Python script as well, but if you're looking to create an ICC profile, there are some Linux command-line tools that will convert from a 3D LUT to an ICC file.
I created a version that's set up for the Datacolor Spyder Checkr color card:
https://github.com/steveseguin/color-grading/blob/master/spyder_24_color_card.ipynb
Note: I'm using the main 24-color card found in the SCK100 48-color dual card pack. There's another 24-color card version that has the colors in a different arrangement; you'll need to move the values around to match your card if that's the case. (I bought mine as a 'replacement card' pack, which doesn't come with the case, but it's half the price. I don't use it often enough to justify needing a case and the added cost.)
The original source for the neutral PNG LUT file used by this repo was found within the OBS Studio's GitHub, Linked Here. OBS Studio uses a GPLv2 license, which allows for commercial and private use, including distribution and modification. Please see their license for specifics if intending to use their LUT. If this is an issue, provide your own PNG LUT or use the 3D CUBE LUT option instead.
You are free to make derivations and distributions of my Python code, for commercial or private purposes, as allowed by the GPLv3 open-source license. I went with GPLv3 for my own code. If distributing this code, modified or otherwise, providing a link with it to a fork of my repository with any changes shown I think is sufficient, although I'm not a lawyer and this is not legal advice.