Unsolved
This post is more than 5 years old
2 Posts
0
592
March 15th, 2019 14:00
SDK 2.0.0
Hi,
The example code sets a bypasss 3x3 matrix, a 2.2 gamma, and a 4.5 inverse curve. That example seems to be showing something a compositor would do in Nuke to move from logarithmic space to linear, perform operations, and then go linear to log for output.
But how exactly are these six curves, bundle as three pre-gamma and three post-gamma, used to implement color correction? It's unclear how to set the lut or why there is a pre and post.
Thanks.
SetLUT
Setup the LUT (Look Up Tables) for CAL1 or CAL2.
NOTE: Only works in Color Preset Color Space CAL1 or CAL2.
API
MONITOR_CODE SetLUT(UWORD16 arrPreGamma[3][1025],
UWORD16 arrPostGamma[3][1025],
UWORD16 arrColorMatrix[9])
Params
arrPreGamma
Array with 1025 16-bit color values for RGB channels, where
[0][1025] for Red channel,
[1][1025] for Green channel and
[2][1025] for Blue channel
arrPostGamma Array with 1025 16-bit color values for RGB channels, where
[0][1025] for Red channel,
[1][1025] for Green channel and
[2][1025] for Blue channel
arrColorMatrix 2’s complement values of the 3x3 16-bit color matrix, in the order from
a 1 to a 9


open color io
2 Posts
0
March 22nd, 2019 13:00
Does Dell have more information on the LUT setting call? Thanks.
yumichan
4 Apprentice
•
739 Posts
0
March 23rd, 2019 04:00
" It's unclear how to set the lut or why there is a pre and post."
Pre-LUT sets RGB numbers encoded in typical gamma (2.2) to linear.
Matrix is used to emulate gamut, because since RGB numbers are now lineas you can write your desired calibration target gamut as a linear combination of 3 RGB native gamut primaries
For example:
Native gamut : matrix = indentity matrix
AdobeRGB: matrix blue row more or less 0 0 1, green row more or less 0 1 0, red row A B 0.9xxxx so A and B a 0.9xxxx when multiplied by native RGB primaries gives you AdobeRGB red which is inside native gamut.
sRGB: same as AdobeRGB but green needs to be a mix of the 3 RGB native primaries too.
Post-LUT is used (AFAIK) to do 3 things:
-white point (limiting output of 1 or 2 channels)
-grey neutrality (to fix color tints in grey ramp)
-reencode RGB numbers to your desired gamma.
If you wish to play with SDK and monitor is supported (because Dell refuses to give SDK support to 2013 models like my U2413 although we have HW calibration capabilities with DUCCS), there is a shortcut IF YOU STAY WITH NATIVE GAMUT an it is to do not decode and re-encode gamma leaving prelut lienar (input = ouput), set matrix to identity and load in Post LUT a ".cal" calibration for DisplayCAL (but expanded from 256 to 1024 entries using interpolation). *.cal= 1D -LUT calibration for Graphics card like in icc profiles for monitors without HW cal.
Once you can verify that this works ok you can start with matrix for gamut emulation (like Rec709), but there you need to decode gamma first in prelut and reencode in post lut.