openlut/README.md

3.5 KiB

openlut

Open-source tools for practical color management.

What is it?

openlut is, at its core, a color management library, accessible from Python 3.5+. It's built on my own color pipeline needs, which includes managing Lookup Tables, Gamma/Gamut functions/matrices, applying color transformations, etc. .

openlut is also a tool. Included soon will be a command line utility letting you perform complex color transformations from the comfort of your console. In all cases, interactive usage from a Python console is easy.

I wanted it to cover this niche simply and consistently, something color management often isn't! Take a look; hopefully you'll agree :) !

What About OpenColorIO? Why does this exist?

OpenColorIO is a wonderful library, but seems geared towards managing the complexity of many larger applications in a greater pipeline. openlut is more simple; it doesn't care about the big picture - you just do consistent operations on images. openlut also has tools to deal with these building blocks, unlike OCIO - resizing LUTs, etc. .

Indeed, OCIO is just a system these basic operations using LUTs - in somewhat unintuitive ways, in my opinion. You could setup a similar system using openlut's toolkit.

Installation

Simply use pip: sudo pip3 install openlut (pip3 denotes that you must use a Python 3 version of pip). Keep in mind, there are some external dependencies:

  • Python 3.5: This is Python; you need Python.
  • gcc: This is needed to compile the C++ extensions.
  • pybind11: This is a library needed to link the C++ extension into Python. pip version is being difficult...
  • imagemagick: For all file IO. It's not like I was gonna write that myself :) .

If it's breaking, try running sudo pip3 install -U pip setuptools. Sometimes they are out of date.

Installing Dependencies

Not Difficult, I promise!

On Debian/Ubuntu: sudo apt-get install python3-pip gcc pybind11-dev libmagickwand-dev On Mac: brew install python3 gcc pybind11 imagemagick

  • You will need Homebrew ( copy/paste a command from http://brew.sh/ ) and XCode Command Line Tools for gcc (it should prompt you to install this).
  • Disclaimer - gcc took its sweet time compiling/installing on my old Mac...

Dependencies

There are some dependencies that you must get. Keep in mind that it's Python 3.X only; all dependencies must be their 3.X versions.

Getting python3 and pip3

If you're on a Mac, run this to get python3 and pip3: brew install python3; curl https://bootstrap.pypa.io/get-pip.py | python3 If you're on Linux, you should already have python3 and pip3 - otherwise see your distribution repositories.

Dependency Installation

You need Python 3.5, Pip, a newer version (must support C++14) of gcc, and pybind11 in your includes. This is trivial on Debian/Ubuntu:

  • `sudo apt-get install python3-pip

Basic Library Usage

To represent images, use a ColMap object. This handles IO to/from all ImageMagick supported formats (including EXR and DPX), as well as storing the image data.

Use any child of the Transform class to do a color transform on a ColMap, using ColMap's apply(Transform) method.

The Transform objects themselves have plenty of features - like LUT, with open(), save(), and resize() methods, or TransMat with auto-combining input matrices, or automatic spline-based interpolation of very small 1D LUTs - to make them helpful in and of themselves!

Take a look at the test code under tests for examples.