Color Management


The problem

Color is, sadly, not an exact science.  We still lack the ability to measure how our eyes see.  Therefore, every development in the area of imaging has resulted in a multitude of ways of doing things.   So what is red on one monitor, won't necessarily be the same shade of red on another. The whole mess is further complicated by the fact that other output devices, like printers and such, are all different, have non-linear responses, and could even be achieving color in entirely different way from a CRT tube.

The salvation lies with the Color Management System, a piece of software designed to convert color between representations required for various devices. Knowing your hardware characteristics is half-way to having a working solution. On the most basic level, for monitor it means knowing primaries and gamma.

mrViewer supports probably the two most advanced color management systems in use today, called CTL (Color Transform Language) and OCIO.  CTL was developed by AMPAS, the Academy of Motion Picture Arts and Sciences, with the help of Industrial Light and Magic (ILM), while OCIO was developed by Sony Pictures Imageworks.

As the name implies, CTL is an actual language, similar to a shading language, which can be used for color transformation of images.  Its feature set is similar to that of ICC, albeit it goes beyond it, to also support particular features specific to the movie production business.  Being a full featured language, the possibilities for color correction are unlimited and since CTL scripts are just ASCII files, it becomes harder to misinterpret.

OCIO is a mixture of configuration files, luts and matrix transforms that can be concatenated. There are python scripts to get OCIO configs from CTL scripts.

As of January 2015, AMPAS ships ACES 1.0.3, which is a collection of CTL transforms and these are included in the mrViewer distribution. mrViewer ships with the nuke OCIO config, and others can be obtained at
http://opencolorio.org/configurations/

Within mrViewer, two or more CTL files or an OCIO transform are processed and baked into a, at least, 64x64x64 3D Lut which then operates on the image completely with 32-bit float information in real time.   This will often give you a pretty accurate approximation of even the most complex transformations.

In addition to CTL and OCIO, mrViewer also supports ICC, which is still pretty common with the print industry as well as some monitor manufacturers.  In the future, it is likely that ICC support will be vanished.

For understanding CTL and ACES, you should first read:
  • http://www.openexr.com/UsingOpenEXRandCTL.pdf
  • http://www.openexr.com/OpenEXRColorManagement.pdf


  • For understanding OCIO, you should refer to:
  • http://opencolorio.org/