What's wrong with ICCs?

The film & TV industry has, to the greater part, avoided the use of ICC profiles for display calibration and colour workflow management.

What is it about ICC profiles that make them unsuitable for film & TV use? And can any aspects of them, or calibration systems that employ ICC based workflows for hardware display calibration, be viable?

This page focuses solely on ICC profile use for display calibration.


Why ICC Profiles?

ICC

The ICC profile was developed by a large number of companies and individuals, from a range of different industries, all with varying requirements and needs, resulting by necessity in a complex workflow solution that contains a large number of options, variations, and functions.

More importantly, the level of colour accuracy required for ICC profile operation for these companies and individuals doesn't match those of the film and TV industry, as the majority of the requirements have come from the print world, where colour accuracy is more subjective than absolute, due to the inexact nature of attempting to match different reflective print mediums while viewing source images on a direct display monitor.

The film and TV industry relies on a far higher level of colour matching accuracy, due to the similarity of all viewing mediums and environments. This enables far simpler, but far more accurate, colour management to be used, where the display device (display/monitor/projector) is calibrated to a given standard in isolation of any and all input sources.

As a result, understanding ICC profiles can be extremely difficult for those used to the far simpler, and far more accurate, 3D LUT approach to colour and look management used within the film and TV industry.

By necessity, this page highlights the limitations and issues of ICC based display calibration for use in the Film & TV industry. It makes no attempt to assess the suitability of ICC profiles for use in any other industry. However, after reading this page it should be apparent that better colour workflows can be attained for use in any industry if the display is self-calibrated to a highly accurate level using a 3D LUT, with the 'display' ICC profile reduced to a simple colour space definition, and is outlined at the end of the page.

Throughout this page we are also focused on the best possible display calibration, as is attained via a 3D LUT using LightSpace CMS. We do not consider a 1D grey scale/white point LUT combined with a 3x3 matrix to ever produce an acceptable level of calibration, due to a total lack of volumetric data.

See the VOLUMETRIC ERRORS section of the Error! page of this website for further information.

ICC profiles do not in themselves calibrate anything. They contain measurement and information data, on which ICC compliant software acts via a CMM (Colour Management Module). It is the CMM within the graphics program that uses the data contained within a given ICC to perform image corrections to attempt to correct for device/display calibration issues.

Different graphics programs using different CMMs will often produce different results/accuracy from the same ICC profile data.

By design, no ICC based display calibration can come close to the accuracy attained by 3D LUT direct hardware calibration.


Understanding ICC application & Workflow

One of the issues with ICC profiles is they use a distributed method for colour management, which includes display calibration. This means different aspects of display calibration are held within different 'locations', including within the display itself; within the ICC profile; and even within the graphics card.

It is vary rare, to the point of virtually being unheard of, for any display to actually be accurately calibrated in and of itself when used within an ICC based workflow.

With ICC based display calibration this is termed hardware vs. software calibration, as some of the display calibration is potentially held within the display, while other aspects of the calibration are held within the ICC profile, so are software based.

Potentially all ICC based display calibration can be held within the ICC profile, but never is it all held within the display's own hardware.

The problem is that when an ICC system is used to directly hardware calibrate a display (no software ICC profile involvement) it does so just with a 1D LUT for grey scale/white point management, and a simple 3x3 Matrix for gamut (colour). A 3x3 matrix can only manage gamut as a single entity, using the 6 flat plane sides of the matrix, without any volumetric information at all.

See the MATRIX OR 3D LUT and VOLUMETRIC ERRORS sections of the Error! page of this website if you do not understand the difference between a 3x3 matrix and a 3D LUT.

Further, the 1D LUT component may not even reside within the display, or may be 'supplemented' by 1D LUT data held within the video card's VCGT (Video Card Gamma Table), or even within the ICC its self.

Any 'volumetric' gamut information (measurements that are within the gamut of the display - see Profiling Patch Count below), if there is any, will be held within the associated 'display' ICC profile for linked 'software' calibration. The ICC profile then acts within any ICC aware graphics program used within the PC, effectively correcting the gamut of the image before it is displayed on the partially calibrated display. This means that any program that is not ICC aware will not use the ICC profile data for image correction, and so will display any image only partially correctly.

The term 'image correction' is key here, as that is how ICC profiles work. They hold 'profile data' that is used by the graphics program's CMM (Colour Management Module) to 'correct' the image, not calibrate the screen. As described already, this means the display is not actually fully calibrated itself, and due to processing restrictions (available processing power) the CMM can never 'correct the image' on the fly to the level required for true accuracy, as detailed below.

ICC Profile Display Calibration Workflow

The following describes the distributed colour management used with ICC profiles for display calibration.

Source Image ICC aware graphics program Working Colour Space ICC aware graphics program Graphics Card Display calibration
Source Image
(May include Input ICC profile)
ICC profile
(Conversion into working colour space)
Working colour space
(for example sRGB)
ICC profile
(Display profile data, used to 'correct' the image gamut/colour to attempt to compensate for the display's inaccuracies)
VGCT 1D LUT
(May be used for grey scale/white point correction)
1D LUT and 3x3 Matrix
(May be used for limited display hardware calibration, if available)
Source Imagee Input ICC PCS - Profile Connection Space Output ICC 1D VCGT LUT Displayed Image

This image workflow is broadly generic, but will help understand how ICC profiles are used in distributed form for display calibration through the 'correction' of the image, with the display itself not fully calibrated.

Note that the 'Display gamut profile data' within the ICC is not being used to 'calibrate' the display, but is used by the CMM to apply a 'correction' to the image, which attempts to compensate for the inaccuracies of the 'inaccurately calibrated' display. The level of this 'correction' - its accuracy - is down to the CMM within the graphics program in use, and is a key part as to why no ICC based 'calibration' can come close to true display based hardware 3D LUT calibration.

The ICC profile data is held in a table form, and is often referred to as a look-up table, but must not be confused with a true 3D LUT. The ICC profile table contains just the original measurements, not processed correction data.

In the above ICC based colour workflow the last three components all combine to 'calibrate' the image being displayed as accurately as the original 'display profiling' and CMM allows.
Note the use of the term 'to calibrate the image being displayed', as the display itself is never fully calibrated.

And because of this, any graphics program that is not ICC aware, as with most Film & TV creative systems, will effectively 'see' an uncalibrated display, making any creative colour decisions invalid!

Further potential issues can arise as the VCGT 1D LUT, if used, is not strictly a component of the ICC specification, and relies on a third-party management program to ensure the VCGT is loaded on PC start-up. It is unfortunately all to common for this load to fail, or for the VCGT LUT be overwritten without warning, further invalidating the display calibration.

And as mentioned above, the 1D LUT for grey scale/white point can potentially be held within the display; the VCGT; the ICC; or any combination of two or all three, making it very difficult to really know as to what level the display its self is actually grey scale/white point calibrated. It may just be grey scale calibrated, with no white point correction, or vice versa. Or not calibrated at all...

Profiling vs. Calibration

One thing that can be very confusing when talking about ICC profiles and 'calibration', compared to the use of 3D LUTs within a Film & TV colour workflow, is the use of the term 'Profile' or 'Profiling', and 'Calibration'.

Profiling is the measurement or characterisation of a display to record its actual response to known inputs. This is key to the accuracy of any final calibration, as the number of patches used, especially volumetric patches, defines the level of final accuracy that can be attained. And ICC profiling rarely uses many patches - see below.

In a direct display based calibration workflows, as with LightSpace, the profile data can be immediately use to generate a direct 'hardware' calibration - a 3D LUT that is loaded directly into the display, as with professional grading monitors.

In such a direct display calibration workflow the profiling and calibration are directly linked.

Within an ICC based calibration, the display is first 'hardware calibrated', which may involve manual user adjustment, or may just be the 1D LUT and 3x3 matrix generated from the initial profiling.

Regardless, after the partial hardware calibration, the remaining volumetric profile data is held within the ICC profile for image correction, completing the calibration workflow as best it can.

As can be seen, within an ICC calibration workflow the concept of calibration and profile data are separate, which is the cause of a lot of confusion when comparing the two approaches.


ICC Calibration Accuracy

Irrespective of the above issues, what level of accuracy can be expected from an ICC based display calibration, assuming a fully compliant ICC workflow?

Fundamentally, any ICC based display calibration result will never be as accurate as using LightSpace CMS for one very simple reason. The colour processing (CMM) used within ICC based workflows is nothing like the advanced Colour Engine used within LightSpace. And it's easy to understand why.

Available processing time.

When performing a highly accurate display calibration via LightSpace CMS the procedure has two distinct steps. The first is the characterisation of the display, to attain its actual capabilities and underlying gamma and gamut, performed via measurement profiling using a large number colour patches. This display characterisation data is then used to generate a 3D LUT that will 'calibrate' the display as accurately as possible.

The initial characterisation takes as long as it takes the probe to read all the patches used in the profiling process, and will vary depending on the number of patches and the probe used. This is essentially the same as when using an ICC based calibration process, but nearly always via the use of a much larger number of colour patches with LightSpace - for the reasons explained below.

The generation of the 3D LUT is the process we are actually more interested in, as this is where the final accuracy of the calibration is defined. With LightSpace, this LUT generation process can take a few seconds, to minutes, depending of the level of 'calibration' a given display needs. And LightSpace is very fast when compared to alternative 3D LUT based calibration systems, as its Colour Engine is the most advanced available, and is why LightSpace calibrations do not introduce artefacts/banding as with alternative systems, and is why LightSpace produces the most accurate final calibration possible.

Now compare the above to the way an ICC works to generate a final 'image correction'.

As stated above, ICC based 'calibration' is not actually a calibration in the same way as for LightSpace, as the ICC contains the display's profile data, not an actual processed 'correction' for the display. The image is 'corrected' before it is displayed on the uncalibrated display, via the graphics program's CMM. This correction has to be performed using relatively simple colour processing algorithms, or there would be a noticeable delay in the image pipeline - potentially minutes.

Compare this to time taken for the advanced Colour Engine within LightSpace to generate a highly accurate 3D calibration LUT. Such processing is just not possible via a graphics program's CMM.

Also, the ICC based 'image correction' is defined by the CMM within the graphics program in use, not the ICC profiles themselves as they just hold the original measured (profile) data, the result of the 'image correction' will be different depending on the graphics/creative application being used. For example, within Photoshop it is possible to swap between Adobe ACE and Microsoft ICM - two different CMMs, that can generate different results.

From this 'time related issue' it can readily be seen that the 'image correction' performed by the CMM, using the ICC profile data, can never hope to match the accuracy of a LightSpace generated 3D LUT. It basically isn't intended to, as the processing overheads would just be too great, with CMM processing usually being based on simple linear interpolation.

No ICC based colour workflow is capable of employing an advanced colour engine for image calibration, resulting in a relative low level of final colour accuracy when compared to a LightSpace generated 3D calibration LUT.

Another factor is the ICC based calibration system used, as there are many, with most PC display manufacturers offering their own calibration system, such as Eizo's ColorNavigator; NEC's SpectraView; Dell's DUCCS, etc... What most have in common is they tend to use X-Rite's Publisher/Profiler system to perform the profiling and limited hardware calibration.

Such ICC based calibration systems will nearly always first take you through a manual calibration process, using the display's OSD or hardware control buttons to set the desired black and white levels, as well as possibly white point (colour temperature), etc. This is what most of these systems refer to as 'hardware calibration'.

The second step may be to 'profile' the display with a limited number of patches, in order to define the display's grey scale and gamut, and potentially load a 1D grey scale/white point LUT and 3x3 matrix into the display for further hardware calibration, if available.

However, there may be no additional hardware calibration to the display at all, instead relying on the graphics card's VCGT for the grey scale/white point calibration, and the associated ICC's gamut profile data to allow the graphics program in use to manage the final 'image correction'.

Or, there may be no 1D LUT and/or 3x3 matrix loaded into the display, and the VCGT may not be used at all, with all the display's captured profile data being held within the ICC, with total reliance on the graphics app in use to correct every gamma and colour aspect of the image when displayed.

What can be seen in all these scenarios is the display is never actually fully calibrated, and the restriction of having to use the graphics program's CMM to generate an image correction on the fly can never match the accuracy of a 3D LUT calibration.

Profiling Patch Count

As has been stated, the number of patches used when profiling a display for calibration defines the potential calibration accuracy for any given display. In general terms, the more patches the better the calibration result, as the generation of the 'correction' LUT has a better understanding of the display's volumetric irregularities.

With an offline calibration system, such as LightSpace, many thousands of patches (10,000 easily) can be used as the processing time to generate the calibration LUT is irrelevant.

With on the fly image correction, as with ICC profiles and graphics program CMM, there is no processing time available, and an ICC with too much profile data can slow the graphics program down.

Because of this, many manufacturer calibration programs limit the number of patches to a few hundred maximum. X-Rite's Publisher/Profiler has a maximum of 6,000, but X-Rite's own operational information suggests using far less, and many of the manufacturer specific calibration systems are limited to 100's or even 10's of patches.

Further, just because a given ICC may contain a large amount of patch colour data, there is no guarantee the CMM in use will actually use all the data, or will interpret it correctly. Often, too much data will cause image artefacts, due to the limited colour processing the CMM is able to perform.


X-Rite based manufacturer Hardware Calibration

As an aside, manufacturer hardware calibration systems that are not ICC based, such as from Atomos and SmallHD, also use the X-Rite Publisher/Profiler system, and generated just 1D LUT and 3x3 matrix calibrations, and do not perform 3D LUT based calibrations.


Colour Accuracy vs. Pleasing Reproduction

In addition to the display 'profile' data, ICC profiles also contain additional information on how the data should managed by the CMM. As ICC profiles are really aimed at colour management in workflows where it is impossible to maintain accuracy throughout - with images moving from capture devices such as scanner and cameras, through to output devices such as inkjet printers, laser printers, litho printing, etc., via a monitor for creative input - attempting to maintain absolute colour accuracy throughout is impossible.

Therefore, additional information is held within the ICC profile to assist in generating a 'pleasing' image.

Rendering intents are one such set of information, aimed at managing colours that cannot be displayed correctly due to gamut restrictions. Essentially, what to do about out-of-gamut colours. They define how out-of-gamut colours should be handled, with each of the four options generating different results based on the compromises they make.

The four Rendering intents are:

Perceptual: compresses the target colour space into the display's available colour space (gamut), resulting in all colour values being inaccurate throughout the whole range.

Saturation: is broadly similar to Perceptual, with the same gamut compression, but with saturation being preserved at the expense of hue accuracy.

Absolute Colourimetric: uses no colour compression, and instead clips out of gamut colours, maintaining accurate colourimetry for all colours the display can show.

Relative Colourimetric: is the same as Absolute Colourimetric, except it makes no attempt to correct the white point, and will add a 'relative' offset to all colours based on the white point variation.

From the above information it should be apparent that Absolute Colourimetric is the only option that will provide expected results for display calibration. However, some ICC based calibration systems default to Perceptual, or with V4 ICC profiles can contain more than one rendering intent.

This can cause issues, as different graphics programs can default to using different rendering intents. For example, Lightroom uses Perceptual intent if the display ICC contains it, while Photoshop uses Colourimetric.

It should be noted that the ICC profile does not define how out-of-gamut colours should be handled when using Coloutimetric rendering intents, leaving the decision to the CMM in use, meaning variations in colour will be seem with different CMMs.


ICC Calibration Verification

One real issue with how ICC profiles are used is verifying the calibration.

The problem is you must verify using the CMM that is processing the ICC profile data, which for example means running a patch set through Photoshop, if that is the graphics program, and associated CMM, you are using.

To do this via Photoshop you need to use DIP mode (Display Independent Profiling) within LightSpace, and run a patch set as an 'animation' within Photoshop, with each patch set to the duration required by the probe in use - for example, 4 to 12 seconds from the i1 Display Pro.

See Profiling User Guide, DIP Mode for more information.


V4 ICCs and 3D LUTs

With the introduction of v4 ICC profiles (and the new iccMAX profiles), the ability to use LutAtoBType tags was added, which greatly improved the attainable accuracy for 3D LUT emulation. The ability to accurately emulate a 3D LUT removes the need for the CMM to process any corrections on the fly, effectively guaranteeing the colour accuracy of the image correction.

This is why SpaceMan ICC generates v4 ICC profiles, as it effectively embeds the full 3D LUT into the ICC profile, via the LutAtoBType tag. This can then be used for highly accurate display calibration, with the ICC associated to the display for which the 3D LUT was generated, for example via 'Windows Colour Management'.

A major benefit of the use of a v4 ICC profile with a LightSpace 3D LUT loaded into it is the ability to maintain calibration accuracy, as LightSpace has done all of the hard work in generating the calibration LUT, meaning the graphics program and associated CMM using the ICC has no processing to perform at all. It just passes the image through the 3D LUT data held within the ICC.

For further information on using SpaceMan ICC for dispaly calibration see the SpaceMan ICC User Manual.

Unfortunately, not all ICC aware programs are v4 ICC (or iccMAX) compliant.


A Better Way to Display Calibrate for ICC Workflows?

For anyone who really cares about colour accuracy their display of choice should always have in-built 3D LUT capabilities. Without this, any colour accuracy will be limited for all the reasons outlined above, especially when using an ICC based workflow.

And with a 3D LUT capable display there is a much better, more accurate, and inherently simpler workflow that can be adopted.

The display should be accurately calibrated using LightSpace CMS, using a 3D LUT loaded directly into the display. This calibration can be to a given colour space standard, such as Rec709, P3, sRGB, Adobe RGB, etc. Or, the calibration can be targeted to the displays native gamut, for applications that are not for film & TV deliverables (i.e., for photographic workflows).

The associated Display ICC profile can then be a simple curve and matrix profile, or curve and colourant profile, simply defining the display's calibration.

For example, if the display has been 3D LUT calibrated to Rec709, the ICC profile would define the gamma as being 2.4, and the gamut as being, well, Rec709.

As the display is accurately calibrated there is no need for any additional information to be held within the Display ICC profile, and the graphics program CMM will only be asked to perform a simple colour space conversion, if needed!

Calibrating a Display to itself

In the above section it was suggested that for image workflows that are not tied to a set colour space standard, such as when performing photography work, with paper prints as the required final delivery, it could be advantageous to calibrate the display to its own native gamut.

This is exactly the same as calibrating to a given colour space, such as Rec709, except the 'target' colour space is a user defined one, based on the peak RGB values of the display.

Using LightSpace, and with the display uncalibrated, use the 'Calibration Interface to measure 100% Red, Green, Blue, and white. Record the xy values, and use them to generate a new colour space via the 'Convert Colour Space' menu, with the addition of the displays target gamma - most likely 2.2 for photographic work.

This new colour space is now the colour space to which you will calibrate the display, using the normal LightSpace process!

The same gamma and xy values can then be used to generate a new simple curve and matrix , or curve and colourant Display ICC profile.


Gamma

There is one specific issues with many display calibration systems when attempting to calibrate to sRGB. The target gamma.

There is a misconception that the sRGB colour space standard has a compound gamma, with a linear portion close to black.

This is incorrect, as this is the sRGB Encoding standard, not the target colour space standard for display calibration. For display calibration the target colour space should use a simple power law gamma, 2.2.

This is the Encoding standard for sRGB: x <= 0.0031308 ? x * 12.92 : (1.055 * pow(x, 1/2.4)) - 0.055
And this is the Encoding standard for Rec709: x < 0.018 ? (x * 4.5) : 1.099 * pow( x, (0.45) ) - 0.099

(See: LUT Manual - Maths)

Both have a linear portion close to black, with different overall system gamma.

For display calibration it is incorrect to use these standards, and pure power law gamma should be used, as are the standard colour space pre-sets within LightSpace CMS.

© Light Illusion - All rights reserved - Privacy Notice