ACEScg to LogC Wide Gamut conversion matrix

What is the colorspace conversion / transformation matrix of ACEScg to V3 LogC EI800 Wide Gamut ?
I need to use t he matrix directly instead of using the ociocolorspace node to do the transformation

Also, Is there a way in colour science or python in general to figure out a colorspace’s coordinates and conversion matrices?

Hi Sarah,

You can generate matrices here:
https://www.colour-science.org:8010/apps/rgb_colourspace_transformation_matrix

I think you need CAT02 for chromatic adaptation.

That’s out of my knowledge to answer but I do know that most camera log white papers list the coordinates and matrices to XYZ and/or ACES AP0.

For example have a look at the last page of Alexa Log C curve in VFX document.

1 Like

Thanks Shebbe for your reply !
I indeed looked there, but I couldn’t find the Arri logC Wide gamut colorspace. Do you know what is it listed as if it’s in there?

As @Shebbe pointed out, you can find a table of the ALEXA Wide Gamut RGB chromaticities and conversion matrixes on pg 10 of “Alexa_LogC_Curve_in_VFX.pdf

1 Like

Hi @SarahMx,

Look for “Alexa” and you should find it!

Cheers,

Thomas

1 Like

In colour-science see colour.models.RGB_COLOURSPACE_ALEXA_WIDE_GAMUT and, more generally, colour.models.RGB_COLOURSPACES

You can also find a subset of some common camera primary spaces listed in the CTL ACESlib.Utilities_Color.ctl

It’s usually best to refer back to the official vendor whitepaper.

1 Like

Thank you all for the info , much appreciated !

@Thomas_Mansencal : the conversion matrix generated from ACEScg - > Alexa wide Gamut doesn’t match the ocio transformation from ACEScg → input Arri V3 LogC (EI800) - Wide Gamut , which is my intention . I’m trying to avoid ocio usage and instead use the matrix directly

as I understand, AWG and Arri logC colorspaces are not quiet the same colorspace?

LogC v3 is, as the name implies, logarithimic. So as well as applying an AP1 to ARRI Wide Gamut v3 matrix, you then need to apply the LogC v3 transfer function.

1 Like

I might be doing something wrong, but I’m getting a very interesting and very wrong looking color:

my transformations are like this:
AP1 to AWG matrix:

m3 = ```
array([[ 1.0389645242, -0.0979906481, 0.0590261890],
[-0.0441883410, 0.8586611525, 0.1855265906],
[-0.0098325450, 0.0546403233, 0.9551908935]])

then I apply log3 transfer function to the above matrix:

from colour.models.rg.transfer_functions import *
logc_mat = log_decoding_ALEXALogC(m3)
logc_mat = array([[ 7.91850201e+01, -3.55461832e-02, -6.29377466e-03],
[ -2.55227545e-02, 1.47572605e+01, 1.85252345e-02],
[ -1.91222321e-02, -7.11086623e-03, 3.62809138e+01]])

I get a 3x3 matrix when I plug it in nuke, the color is totally broken. I’m probably doing it wrong
any help is appreciated :slight_smile:

It looks like you’re applying the LogC curve to the matrix values themselves. Instead, you want to apply the logC curve to the resulting RGB after applying the matrix to AP!. It should be two separate steps.

e.g.

// Apply matrix to AP1 RGB to get ARRI WG RGB (linear)
RGB_linear_ARRI_WG = RGB_linear_AP1 * m3

// Apply LogC curve to linear ARRI WG RGB to get get LogC ARRI WG RGB
RGB_logC_ARRI_WG = logC( RGB_linear_ARRI_WG )

What is the RGB_linear_AP1? Is it the RGB coordinates for AP1 ? or is it a 3x3 transformation matrix

It is the image values of your AP1 image.

1 Like