Earlier quoted context omitted.
One more interesting and substantial difference between Oklab and XYB is that XYB includes biases before the nonlinearity, i.e., one can consider the M1 matrix as a homogeneous matrix. These biases make the receptive model (more) linear close to zero, and the non-linearity ramps up when one goes further into high intensity. The idea there is to model the spontaneous opsin isomerization in the receptors. I believe sRG…
Not that familiar with XYB and its properties. Is there anywhere I can read more? Found some specifications, but not anything on its properties. I think this might be a case where the requirements for image editing and image compression are different. For image editing, especially when working with HDR images, I think it is better to just have a simple power function, since this makes less assumptions on the exact vi…
Basically the M1 matrix for linear sRGB [linearR, linearG, linearB, 1] to approximate cone responses:
(I think in this normalization 1 means 250 nits, but not completely sure at this stage of optimizations -- we changed normalizations on this recently.)
M1 = [ [0.300, 0.622, 0.078, 0.0038], [0.240, 0.682, 0.078, 0.0038], [0.243, 0.205, 0.552, 0.0038], [0, 0, 0, 1] ]
then non-linearity by cubic root, in decoding cube, see: https://gitlab.com/wg1/jpeg-xl/-/blob/master/lib/jxl/dec_xyb...
The LMS values after cubic root are coded by this matrix M2:
M2 = [[1, -1, 0], [1, 1, 0], [0, 0, 1]]
In practice Y->X and Y->B correlations are decorrelated, so M2 looks more like this:
M2 = [[1+a, -1+a, 0], [1, 1, 0], [b, b, 1]]
after decorrelations a is often around zero and b is around -0.5.
The first dimension in this formulation is X (red-green), second Y (luma), third B (blueness-yellowness).
For quantization, X, Y and B channels are multiplied by constants representing their psychovisual strength. X and B channels (the chromacity channels) are less important when quantization is low, and particularly X channel increases in strength when more quantization is done.
Cube is beautiful in the sense that it allows scaling the intensity without considerations, but it is quite awful in the near black psychovisual performance. That is why sRGB added a linear ramp, and I added biasing (homogeneous transform instead of 3x3).