Technical follow-up on the subject of color processing!
It’s easier to show some behaviors on synthetic charts so I created a simple one where the background is middle grey (0.1845 on all channels) and the color triangle is the linear interpolation between the three different primaries with a constant average of 1.
So let us just show what these look like for the three different color modes with the exposure adjusted up by 1, 2, and 3 Ev. All other settings are default i.e. contrast = 1.6, skew = 0
Crosstalk
Base | +1 Ev | +2 Ev | +3 Ev |
---|---|---|---|
Preserve Hue
Base | +1 Ev | +2 Ev | +3 Ev |
---|---|---|---|
RGB Ratio
Base | +1 Ev | +2 Ev | +3 Ev |
---|---|---|---|
They all look pretty very similar for the base image with this contrast setting and it is actually hard to tell them apart at this level. But even small changes hard to spot here can be visible in faces as shown earlier.
The crosstalk and preserve hue options are still hard to tell apart when doubling the intensity by increasing the exposure by one stop, but something weird happens with the RGB ratio option. A triangle between high saturation purple, yellow, and cyan is formed. The extreme red, green, and blue are desaturating before less saturated colors closer to the neutral center of the triangle.
Doubling the scene intensity again by increasing the exposure with another stop continues the trend of the RGB ratio option where desaturated colors remain saturated in a cross in the middle while colors on higher saturation are desaturated before these. Its also finally possible to see a difference between crosstalk and preserve hue where the former has its purple, yellow, and cyan regions has widened while they stay unchanged for the preserve hue option. There is just one downside to the preserve hue option: star-shaped desaturation spikes going out against the primary locations.
The trend continues for the last picture where rgb ratio has saturated neutrals, crosstalk twists almost all colors, and preserve hue keeps the original hue along the edges.
So what?
I, first of all, want to focus on the problematic desaturation behavior of the rgb ratio option. The shape of the artifact depends on which norm you use but it will pretty much be there in some form. I think it is important that any desaturation of colors in highlights has to begin with low saturation colors and then gradually desaturate more saturated colors. This is what the crosstalk and preserve hue options do as the saturation is part of the dynamics of the tone mapping and not a separate manual step. I find this very problematic, what would you say?
It’s also clear that the preserve hue option actually preserves the hue even for brighter colors while it also becomes clear why any piece of bright sky pretty much always ends up cyan. But also note that there is very little difference at lower intensities between these two options such that the colors will be correctly preserved if the sky exposure first is reduced using either a masked exposure module or the tone equalizer. I.e. dodging and burning in scene-referred space is king and reduces the needed reliance on the tone mapper preserving colors!
Try it yourself!
I finally encourage you to try out the synthetic image yourself on the sigmoid or any darktable module for that matter! It is a really good method for revealing how colors are changed! I like to drag the exposure up and down to see how modules react to changing exposure levels!
Download the openexr-file or the Blender-file that I used to create it with:
average plane at 1.exr (8.0 MB)
color slice.blend (550.9 KB)
I took a very geometrical approach and assigned the colors from the coordinates of the surface, just change the surface if you want to modify what plane to look at or what colors to include.