Colour Management Guidelines
Here is some guidance for colour managing various types of inputs.
There are colour spaces in the default OCIO config provided with the application to handle all of the commonly encountered situations. However, occasionally you may encounter media that requires special handling. In these cases, the Custom transform builder in the Colour Transform mode of the Colour Mgmt tool may be used to assemble a customized transformation.
Non-Colour Data
There is a variety of non-colour data that is used during compositing. This includes alpha channels and mattes, normal maps, depth maps, ID maps, etc. No colour management is applied by default on input or output of these non-colour data.
However, it is still helpful to tag them with a colour space so that they may be displayed in a reasonable way on monitors. Non-colour data is generally displayed as if it were being displayed on a Rec.709 monitor without colour management. This helps provide a more reasonable display on HDR monitors. But if you don't want even display colour management applied, these may be tagged with the "Utility/Raw" colour space.
Linearizing Video Images
One sometimes receives media in a video or web-oriented colour space that needs to be converted back to a scene-referred state for composition with other elements. Video has always had some kind of tone-map or viewing transform applied in order to take it light values in the scene and make them appropriate for display on a screen.
Tone-maps or viewing transforms such as the ACES Output Transforms map a perfect scene-linear diffuse reflectance of 1.0 to something less than full SDR video white. This is to allow room for specular highlights and variations in illumnation.
There are two basic approaches for converting video colours to scene-linear colours:
- Simply remove the gamma correction, or "de-gamma" the image. This essentially makes a display-linear image rather than a scene-linear image. But the benefit of this approach is that video white stays at 1.0 in linear space and no extreme values are created. The disadvantage is that it will probably look different when played out through any reasonable viewing transform.
- Apply the inverse view transform. This generates a scene-linear image and the benefit is that it will match the video image when played out through the (forward) view transform (assuming the inverse is accurate). The disadvantage is that video white will become a floating-point value much larger than 1.0 and the resulting extreme values may be difficult to work with.
To take the first approach, use the Input Transform mode of the Colour Mgmt tool (called Auto Convert when in MediaHub). Set the Input Colour Space to one of the "Utility/Texture" options in the OCIO default config, such as "sRGB Encoded Rec.709 (sRGB)". Set the "Working Colour Space" to your scene-linear working space, such as "ACEScg".
To take the second approach, use the View Transform mode of the Colour Mgmt tool and enable the Invert button. Set the Display based on the source of the video image, such as "sRGB - Display", and set the View based on the main view you are using for your project, such as "ACES 2.0 - SDR 100 nits (Rec.709)". Set the "Tagged Colour Space" to your scene-linear working space, such as "ACEScg".
If you take the second approach and it produces extreme values that are too difficult to work with, you may want to use the MasterGrade Tone controls to roll off the extremely bright values. In the Controls tab, set the Image Type
to "Scene-linear". Then in the White
section, set the Start
to 2 and theWidth
to 6, as a starting point, and reduce the Whites
slider for the desired amount of roll off.
Textures
Images that are used for material colours must be converted to scene-linear for rendering, but restricted to a 0-to-1 range. This is because they represent the proportion of light that is reflected or transmitted. These include diffuse and specular reflectance colours, as well as transparency colour.
As discussed in the previous section, there are two basic techniques for linearizing images. In the case of textures, extra care must be taken to ensure the linear values are in the [0,1] range, so option 1 (removing gamma) is often the better choice.
SMPTE Legal Video Levels
Digital video standards use integer pixel encodings, and typically define a reference black and white level such that there is some headroom and footroom left for values to exceed these levels without being clipped. For example, SMPTE 10-bit digital video places reference black at 64 and reference white at 940. Broadcasters often have requirements that content provided to them not exceed certain "legal" limits.
However, in order to work with these values in the application, it is often helpful to convert them to "full range" values where black is at zero. This mapping may be done via settings in the MediaHub when importing or when exporting. However, if you need to apply or remove this mapping manually, this may be done using Colour Transform Custom mode. Select one of the Named Transforms in the default OCIO config under "Utility/Levels". There are options to either clamp or preserve the extended range values.
Handling Small Negative Values
After it is linearized, footage from digital cinema cameras typically contains small negative values in the noise around black. These negative values can cause problems during image processing, for example, when adjusting hue and saturation.
There is a Named Transform in the default OCIO config that may be used to compress small dark values above zero without modifying lighter values. To access it, go into Colour Transform Custom mode and add the Named Transform "Utility/Levels/Lift Linear Camera Black - Curve". This transform may be inverted later, if necessary.
Images from Scanned Film
Images from scanned film are typically supplied as DPX files with Cineon-style log encodings. However, the Cineon encoding was never fully standardized, and various vendors use slightly different implementations. If you are manually setting up colour transforms to import scanned film plates, there are several approaches to choose from.
Academy Density Exchange (ADX) is a standard developed by AMPAS to eliminate any confusion and standardize on a single implementation. ADX is part of the ACES system, and is included in the SMPTE 2065 set of documents. These are provided in the default OCIO config as "ADX10" and "ADX16". The former corresponds to the classic Cineon-style encoding and the latter covers a much larger density range that is able to handle everything possible to capture on film.
If the images did not come from an ADX-compliant scanner, try importing them with one of the ADX colour spaces first. If you are not satisfied with the result, then you could try Colour Transform Custom mode and try to build something that works for files. Start by linearizing using one of the Named Transforms from the default config under "Utility/Curve/Log". Be aware that these transforms modify each colour channel independently (similar to 1D LUTs), and do not attempt to account for the channel cross-talk in film like the ADX transforms do.