The advanced level of accuracy provided by LightSpace CMS has lead many of the world's leading display manufacturers to partner with Light Illusion for display calibration, including Konvision, Osee, TVLogic, Flanders Scientific, Eizo, Dolby, Bon, SmallHD, Convergent Design, NEC, and many more.
The LUT image concept is the basis for most LUT functions within LightSpace CMS. The LUT Image is a graphical image that represents the LUT data, and can be used for manual LUT manipulation via any colour program, such as Photoshop, and to RIP LUTs from other incompatible (eg. encrypted LUT) systems. A reference image can be inserted into the central black space for visual reference of any colour change applied to the LUT - Marcy for example.
See LUT Image Manipulation page for further information.
To convert LUTs with LightSpace CMS, simply use the Import option to load the original LUT, and then Export in the required new format or formats.
If the LightSpace CMS version being used has the Batch LUT Conversion option, that can be used to convert multiple LUTs simultaneously.
LightSpace CMS is compatible with as many LUT formats as possible - but new LUT formats are turning up all the time. If you find a LUT format that will not load send it to Light Illusion and we will add the format if at all possible (ie, it's not encrypted), in the next release.
The Append functions add the desired function as an 'output' additional manipulation to the current LUT.
For example, if you have a print->monitor LUT working in legal TV levels and you append this with data range manipulation, it will modify the cube accordingly.
All of the 6 Append functions follow this basic pattern.
The prepend functions add the desired function as an 'input' to the current LUT, assuming the source space of the current LUT is correct for the selected Prepend function.
For example, if you have a print->monitor LUT and you prepend this with lin->log, it will modify the cube to accept linear light data. In this case, 0.0->1.0 is mapped to 95-685 in log space. As a note, in linear light space, doubling the value makes the image twice as bright, and is the same one stop. Values in linear light above 1.0 are mapped to codes above 685. Codes are clipped at 1023.
If you select video->log, then the cube is pre-pended by a gamma 0.45, which goes from video to linear light, then passed into a lin to log mapping, as above.
If you pre pend with lin->video, it assumes the current LUT input is video, and adds 0.45 gamma to the input.
All of the 6 Prepend functions follow this basic pattern.
The Filter LUT manipulation tools are a very powerful addition to LUT manipulation, and help overcome errors encountered with probes that have poor black, or low-light, measurement capability, or displays with poor back-lights that affect black/shadow colour.
The various 'blend' controls allow the direct alteration of the LUT, with a focus on the grey scale.
Unity Blend is the most obvious 'blend' filter as it simply replaces the affected area of the LUT with 'Unity' LUT data.
Mono Blend will reduce all the colour component of the LUT within the range selected by the filter sliders to zero. This can be very helpful in removing unwanted colour contamination from with the dark levels of a given LUT/display. If all sliders are set to Max values the resulting LUT will totally de-saturate an image, while maintaining the underlying gamma value.
Grey Blend will normalise the colour component of the LUT, again within the range selected by the filter sliders. If all sliders are pushed to max values the LUT will have no effect on colour gamut (saturation) or colour temperature, while maintaining the underlying gamma of the LUT.
Axis Blend is one of the more useful of the 'Blend' Filters as it attempts to maintain the underlying colour component of the LUT, while normalising the grey scale within the range selected by the sliders.
The above 1D graphs show Axis Blend grey scale correction within the 'blacks' of a LUT.
Smooth is equally useful as it allows the underlying LUT gamma and gamut components to be 'smoothed' within the range selected by the sliders.
The above 1D graphs show the effect of smoothing, and with a later 'Axis Blend' applied.
Relax is a very interesting filter, and probably the most useful of them all as it allows the underlying LUT data to be 'filtered' to lessen the reliance on the measured probe profile data when generating the LUT. This removes the effect inaccurate probe readings have on the generated LUT.
A later Axis Blend may or may not be necessary, depending on the underlying profile data.
The values to use for the various filters can be attained by looking at the RGB Balance graph, as well as the 1D LUT graph as above.
From the above RGB Balance graph it is obvious the probe/display back light is causing profile issues up to a value of approx 0.1, looking at the top axis values. This is also reflected in the resulting 1D LUT graph.
Using the above graphs it can be seen that any filer needs to work over the range 0 -> 0.1. A nominal value set would be Low=0.8 and High=0.12, or just a value of 0.8 for filters with a single value input.
Printer Light LUT manipulation tools are very powerful manipulation controls that can greatly enhance the use of LUTs and of LightSpace CMS.
Printer Light manipulation allows the direct alteration of the RGB component of any LUT to adjust the overall LUT colourimetry. This has many applications, including for on-set Look workflows.
The manipulation math's is based directly on film grading Printer Lights, and therefore expects the LUT to be a LOG based film look LUT.
The Lift, Gain, Gamma, & HSL LUT manipulation tools are additional, and very powerful, LUT manipulation controls that can greatly enhance the use of LUTs and of LightSpace CMS.
The manipulation controls allow the direct alteration of the RGB and HSL components of any LUT to adjust the overall LUT colourimetry, as defined by the control name. Such control has many applications, including for on-set Look workflows.
The Maths function enables the writing of mathematical process that can be applied to each channel of the current LUT.
There are 3 separate text boxes, and the operation of each is identical. The default startup state is:
Which will do nothing, as output equals input.
You can use any combination of the following operators, just like a normal calculator:
In addition to these, you can use R,G,B to represent the current LUT's r or g or b channel value.
All of the key words and R,G,B are case sensitive, so if is ok, but If and IF are not good. You can use as many R,G,B as you like in ANY channel process. You can also use constant values.
All the maths is done floating point, so an integer value of 65535 in 16 bit is represented as 1.0
An example could be:
R = (R *0.28) + (G * 0.7) + (B *0.02)
G = (R *0.28) + (G * 0.7) + (B *0.02)
B = (R *0.28) + (G * 0.7) + (B *0.02)
Putting these 3 lines into the maths engine, will give a LUT that produces a 'weighted' monochrome image.
Another example could be:
R = (R <= 0.0031308) ? R * 12.92 : 1.055 * (R ^ (1.0/2.4)) - 0.055
G = (G <= 0.0031308) ? G * 12.92 : 1.055 * (G ^ (1.0/2.4)) - 0.055
B = (B <= 0.0031308) ? B * 12.92 : 1.055 * (B ^ (1.0/2.4)) - 0.055
Which is the gamma formula for sRGB from linear data, extrapolated from
x <= 0.0031308 ? x * 12.92 : (1.055 * pow(x, 1/2.4)) - 0.055
to meet the formula requirements for the LightSpace CMS maths engine.
And for Linear to Rec709:
R = (R < 0.018) ? R * 4.5 : 1.099 * (R ^ (0.45)) - 0.099
G = (G < 0.018) ? G * 4.5 : 1.099 * (G ^ (0.45)) - 0.099
B = (B < 0.018) ? B * 4.5 : 1.099 * (B ^ (0.45)) - 0.099
Which is the gamma formula for Rec709 from linear data, extrapolated from
x < 0.018 ? (x * 4.5) : 1.099 * pow( x, (0.45) ) - 0.099
to meet the formula requirements for the LightSpace CMS maths engine.
Note: the sRGB and Rec709 formulas are 'capture/encoding' standards, and are NOT correct for display calibration. For both sRGB and Rec709, display calibration is always a simple Power Law gamma!
(Gamma 2.2 for sRGB, and 2.2 to 2.4 for Rec709...)
And for Linear to Cineon Log:
R = (((log (R * (1.0 - 0.0108) + 0.0108)) * 300) + 685) / 1023
G = (((log (G * (1.0 - 0.0108) + 0.0108)) * 300) + 685) / 1023
B = (((log (B * (1.0 - 0.0108) + 0.0108)) * 300) + 685) / 1023
As you can have different formulas in each colour channel, the actual posibities are very powerful!
The main problem with inverting a LUT is with edge boundary excursions beyond the cube colour space if the original LUT was making major gamma/gamut changes. The inversion of such a LUT will clip data at the cube boundaries. Because of this, inversion of a complex LUT is not a recoverable process - re-inverting an inverted LUT will almost never get you back to the original LUT, unless the original LUT was a very mild LUT!
The Video Scale LUT manipulation tool needs to be used when a LUT box or LUT function within a DI system is expecting a full range LUT data set, but the image data presented to the LUT is in TV Legal range, mapped within full range.
An example of this is the eeColor LUT Box.
The above 1D graphs show the effect of applying a Video Scale function to a Full Range LUT.
ARRI Look import is very straightforward, with LightSpace providing a navigation menu to select the Look file to import and apply to the presently active LUT Image. This should usually be a 'File/New' bypass LUT, so the the generated LUT contains only the ARRI Look data. If a bypass 'blank' LUT is not the presently active LUT within LightSpace the ARRI Look data will be concatenated with the existing LUT configuration.
The ARRI Look Export function will do the best possible to faithfully represent the LUT being 'extracted', based on the relatively limited capability of the ARRI Look format.
The more complex the LUT the less accurate the extracted Look data will be - obviously - but the results are surprisingly good, from all but the most complex LUTs.
After extraction a pop-up window will give a percentage accuracy figure for the extraction - please note this value very pessimistic!
When the percentage accuracy window is dismissed a further window will offer for a new LUT Image to be generated with the extracted ARRI Look data - enabling a direct comparison of the ARRI Look data with the original LUT, including applying the LUTs to test images via the LUT Preview function.
The CDL Extraction function will do the best possible to faithfully represent the LUT being 'extracted', based on the relatively limited capability of the CDL format.
The more complex the LUT the less accurate the extracted CDL data will be - obviously - but the results are surprisingly good, from all but the most complex LUTs.
Using the manual CDL parameter controls is it possible to pre-set values to 'guide' the extraction process. This also means that performing the extraction process twice in a row, can often improve the final result.
Export ccc enables the present CDL dialogue settings to be saved as a ccc file for use in any CDL compatible 3rd party systems. If used after a 'LUT Parameter Extraction' process this enables the best possible emulation of the original LUT data.
The Apply function will apply the present CDL settings to the presently selected LUT within LightSpace. This should usually be a 'File/New' bypass LUT, so the the generated LUT contains only the CDL data. Therefore, before opening the ASC CDL dialogue menu be sure to pre-select the correct 'blank' LUT within LightSpace, or the CDL data will be applied to the incorrect LUT.
To use the ACES CTL component of LightSpace CMS you will need to download the latest ACES version .zip file from HERE - select the desired ACES version and download the .zip file.
Extract this .zip file, and note the location of the 'Utilities' folder, within the .ctl folder.
It is probable that an environment variable will need to be set on the LightSpace PC. On XP this is start -> my computer -> right click 'properties' then select the Advanced tab. On bottom of the window, select 'Environment Variables', and make a new variable, probably best just for the specific 'User'. Call the variable 'CTL_MODULE_PATH', and point to the location of the ACES 'Utilities' folder using the 'Variable Path' entry.
Open LightSpace and generate a new unity (or bypass) LUT via 'File->new'.
Next, select Edit->ACES CTL->Import, and brows to a .ctl file and load it. If all is well, then it will process the data and create a LUT from the .ctl file.
All ACES .ctl files should contain the following:
void main (
input varying float rIn,
input varying float gIn,
input varying float bIn,
input varying float aIn,
output varying float rOut,
output varying float gOut,
output varying float bOut,
output varying float aOut
This MUST be present for LightSpace to read the file.
First, LightSpace CMS is a fully compliant CTL interpreter. This means LightSpace will work any valid CTL file.
However, with ACES v1 The Academy have made some fundamental changes to the way ACES works - not necessarily for the best.
The RRT transform now outputs in OCES, and is no longer coded as normalized space.
The input to an ODT is OCES, and is also not normalised space, while the output is normalised.
Therefore, if a RRT or ODT is processed on their own they will produce blown out or crushed resulting LUTs within LightSpace. This was NOT the case with the earlier RRT/ODT CTL files.
The problem of crushed and blown out LUTs is a function of how the Academy have used CTL to implemented RRTs and ODTs, and not a function of LightSpace CMS.
Therefore, the only meaningful way to extract a LUT from any ACES RRT or ODT is to generate a LUT that is a concatenation of an RRT and an ODT.
Note: An alternative would be to generate a new CTL file for use after the RRT or before the ODT that scales the values accordingly.
When selecting multiple CTL files they must be selected in the right order for processing within LightSpace, using Ctrl/Click. If the order is wrong, the generated LUT will be wrong.
Exporting an ACES CTL file will take the presently active LUT and export it in the latest ACES format, using proprietary LightSpace CMS algorithms to de-compile any given LUT into ACES standard data.
As a very basic tool, an inserted reference image can be used to see any changes made to the default LUT Image via external colour systems, or when ripping a LUT.
So, for example, if you select 'New' to make a new default (unity/bypass) LUT Image with the aim of using it to RIP a LOG based LUT from another system - because the existing LUT is encrypted or LightSpace is not yet able to load the LUT - directly - adding a LOG reference image, such as a Marcy, will immediately show the effect the LUT being ripped.
An alternative use is to again make a 'New' LUT Image and insert a Marcy image, but this time apply a existing LUT directly - but not by using 'Import' - but through the use of 'Edit/LUT Manipulation/Add LUT' function. If the 'Include Reference Image' is ticked the LUT will be added to both the LUT Image and the Reference Image. If the 'Include Reference Image' option is not ticked the LUT will be added just to the LUT Image, not the reference image. This can be very useful when importing LUTs that require further manual changing.
The ability to manually alter an existing LUT is a key function of LightSpace, and is worth exploring further.
If working on a project where it is obvious the calibration LUT is not accurate - say too red in the shadows - the above process can be used to manually alter the LUT. Follow the above procedure, but substitute the Marcy image with a reference frame from the project where the problem is obvious. Either use a reference frame with the LUT already applied, and then use 'Edit/LUT Manipulation/Add LUT' with the 'Include Reference Image' not ticked, so the Image isn't double lutted, or use an image without the LUT previously applied, and Add the LUT to both the LUT Image and the Reference Image. The resulting LUT Image combination can then be 'Saved As' and the new image, in dpx or tif/tiff format taken to any colour correction system (including Photoshop) and the available tools used to remove the red from the shadows. This new colour corrected image is then loaded back into LightSpace for a new text LUT to be exported.
See LUT Image Manipulation page for further information.
The LUT Preview option is another facility with more capability than it's basic application. It will show all the LUTs presently loaded in LightSpace via the tabs along the top, but can also directly load additional LUTs into the preview window via the '+' tab. Moving the mouse cursor over the image will display a 'zoom' magnifying glass icon, and left clicking will zoom the image to show it 1:1. Right clicking will show a 'Save Image As...' dialogue box, and selecting this will save the image with the active LUT burnt-in, so it can be reviewed outside of LightSpace. This is a quick and easy way to apply different LUTs to an image for review externally.
The manual approach to LUT Conversion, using the Import/Export process take the imported LUT and converts it into LightSpace's internal operating LUT format, before then exporting in the selected output LUT format. This enables any of the associated LUT Manipulation tools to be applied to the LUT, as required, while the LUT is held within LightSpace CMS.
The Batch LUT Conversion process converts any given LUT(s) directly to the selected new LUT format, bypassing the LightSpace CMS internal LUT format. For very large LUTs, with high cube density, this maintains the best possible direct conversion, with the minimum loss/chnage in LUT data.
The Convert Colour Space menu is a key component of LightSpace CMS, especially when using it for building calibration LUTs from display profiles. The concept of 'Source' colour space is always the expected colour space any given images are expected to be viewed in. So, for example, normal video will usually be expected to be viewed in Rec709 colour space, making this the Source colour space to select.
The 'Destination' colour space is the new colour space the given images now need to be seen in - an alternative colour space to their original 'Source' colour space.
Source: The colour space the images are expected to be seen in, so when calibrating the target colour space (Rec709, Bt1886, P3, etc.)
Destination: The colour space the images will be seen in, so when calibrating the profile of the un-calibrated display.
Any existing colour space profile can be edited and re-saved with different parameters, for example to alter the pre-set gamma, white point, gamut values.
When re-saving a custom colour space enter a name that defines the new pre-set.
ST2084 introduces a whole new set of issues, as it is an absolute nits based standard, while all other colour space standards are relative based, without any understanding of absolute nits values.
When using one of the ST2084 HDR Colour Space pre-sets, the 'Gamma' box changes to display the Peak 'nits' value desired. When calibrating, this value should be set by the user based on the actual Peak Luma of the display being calibrated (which will be shown within the 'Limit Luminance' option when the display's raw profile is loaded into 'Destination').
The 'Limit Luminance' option is not used, used unless you want to set the Max Luma for the Destination as being below the the peak luma of the display being calibrated, as is its normal operation function.
When generating a Colour Space Conversion LUT to match different ST2084 Peak Luma displays the 'nits' values used within Source and Destination will set the 'clip point' for different max luma displays.
Note: When a non-ST2084 Colour Space is selected as the 'Destination' the Limit Luma values are 'normalised' values, as non-ST2084 standards are Relative, not Absolute. Therefore, if you wish to set a Max Luma point a 'scaling' percentage value has to be used. This is shown by both the 'Nits' and Ftl' options being greyed-out.
Note: When calibrating an ST2084 display you will need to 'save' a new ST2084 Colour Space with the correct 'Nits' value for the display being calibrated, otherwise the the Gamma profile will not have the correct target to map to.
When using one of the BBR HLG Colour Space pre-sets, the 'Gamma' box changes to display the 'System Gamma' value of the display. The 'Sys Gamma' button will open a new menu window, with option boxes for 'Display Peak Luminance' and 'Surround Luminance'.
The 'Display Peak Luminance' value can be set manually, or set to the Destination Profile value using the 'Load' button. The 'Load' button will only be available if a valid Destination Profile has been selected before the 'Sys Gamma' window is opened.
The 'Surround Luminance' value should be set manually, and should be the average illuminance ariubd the display.
After the Peak and Surround value shave been set, the 'Calculate' button is used to calculate the new System Gamma value, after which the 'OK' button should be used to set the System Gamma value, and close the window.
Any colour space can have Parametric Gamma Controls added to it, enabling non-power law variable gamma profiles to be defined.
To add Parametric Gamma controls first save the basic colour space to be modified with a custom name, and then export via the Manage Colour Space library. Open the colour .bcs file in any text editor and add the required Parametric Gamma variables using the following standard.
<?xml version="1.0" encoding="UTF-8" ?>
<builder_color_space name="test_Rec709_Mtx" version="2">
<x red="0.64" green="0.3" blue="0.15" white="0.3127" />
<y red="0.33" green="0.6" blue="0.06" white="0.329" />
<L red="1" green="1" blue="1" white="1" />
The section (para) is optional, and is used to define the Parametric Gamma points. If used it MUST contain a minimum of 2 points, and the first and last points MUST be 0.0 and 1.0. The in-between values are normalized between the first and last values of 0.0 and 1.0.
There can be as many points as needed in the list, and they should be monotonically increasing (in input value). The recommendation is to not exceed 101 pairs.
To see more about Parametric Gamma, and to be able to download a Dolby to Sony HDR example that clips at 75% with Rec709 Gamut, please see the Parametric Gamma page.
In the Manage Colour Space GUI a text message is displayed defining the Parametric Points if you have an active parametric gamma. In the Manage Colour Spaces library any matrix transform with parametric gamma is indicated with a star (*).
When generating LUTs via the Convert Colour Space menu within LightSpace CMS there are three options that control the mathematical processes used to generate the final LUT.
All four of the different processes will produce near identical results on displays that have a native gamut that is larger than the target colour space, and have a white point that is accurate to the target colour space. On displays that still have a native gamut that is larger than the target colour space, but have a white point that is inaccurate to the target colour space, Peak Luma will produce a result that is different to the other three processes. On displays that have a native gamut that is smaller than the target colour space, all four processes will produce results that are different to each other, as they will all use different colour engine algorithms to 'best manage' the display's low gamut.
Peak Chroma is the default, and for displays with complex RGB channel interaction (poor cross-coupling) will be the correct choice for calibration. Peak Chroma will manage any Grey Scale/White Point variation from the measured profile compared to the target colour space. It manages any difference by reducing the maximum brightness of the display to bring the highest colour channel into range, preventing colour clipping in the highlights. However, the results of Fit Chroma or Fix Chroma may be superior on many displays!
Peak Luma maintains the maximum brightness of the display, irrespective of the colour channels, so ignoring any Grey Scale/White Point variation from the measured profile compared to the target colour space. This means if there is any variation in the Grey Scale/White Point colour clipping will occur in one or more colour channels.
Fit Chroma is fundamentally the same as Peak Chroma, but uses totally different Colour Engine algorithms in generating the final LUT, and offers a potentially superior calibration alternative for displays that have good RGB channel separation (low cross-coupling), and for displays that prove difficult to calibrate via Peak Chroma or Peak Luma, specifically if the display has a gamut that is significantly lower than the target colour space, although Fit Chroma can be used on any display as an alternative to Peak Chroma or Peak Luma.
Fix Chroma is basically the same as Fit Chroma, but uses a more simplified process of calculating the display's maximum gamut capabilities, using 'fixed' values based on the display's peak (maximum) RGB readings. This process may produce a 'cleaner' picture quality, possibly at the expense of ultimate calibration accuracy, if the display has a lower native gamut than the target colour space.
After a LUT is generated a pop-up windows displays a Colour Space Conversion Report, which reports how much of the 'Raw' gamut of the display can potentially be accurately calibrated.
It is virtually impossible to register over 99% due to simple rounding errors - (99% can easily be 99.999%)
Therefore, 89% would mean the display can only ever be calibrated 89% accurately - the remainder % will be less than perfect, but may be just a few % off, or it may be hugely wrong...
With 99% the display can effectively be calibrated to be totally accurate.
The final result will actually depend on the data in the profile set - if a 21^3 or greater cube profile the resist will indeed by very, very accurate. If a smaller profile size, or a Quick Profile, the results will be less accurate - the display's potential for 99% calibration will not be met.
The Use Existing options enable a colour space conversion to be concatenated (added) to an existing LUT This is a very powerful tool as it enables a calibration LUT made for one colour space to automatically be converted to a calibration LUT for a different colour space, without any intermediate process, so maintaining the best LUT quality possible.
The 'Display' capability allows any display profile to be seen as Gamut, Gamma RGB Separation, and RGB Balance graphs, showing the actual data measurements plotted against any colour space preset (including saved user pre-sets).
This display capability shows the underlying projector or monitor gamut and gamma, etc., helping understand what future calibration will be capable of.
For example, the above gamut show a monitor profile matched to Rec709 colour space, and red and green are specifically larger than the target gamut, and therefore will potentially calibrate well, depending on the Gamma, RGB Separation and RGB Balance profiles.
For more information on the profile Displays see Display Profile within the Profiling Manual.