not preserving crominance in filmic rgb

The manual warns about

… if you choose “no” in the preserve chrominance parameter. This value may yield seemingly “better” results than the other values, but it may negatively impact later parts of the pipeline, for example, when it comes to global saturation.

First, what comes later in the pipeline? Isn’t filmic rgb the last thing?

Second, my personal experience is that images almost always look more natural, approaching the look of film much better. If I am after that look, is there any downside to not preserving chrominance?

Quite a few modules still come after filmic in the pipeline:


Though I guess a lot of people don’t use them – filmic is usually still the last thing I enable in my processing pipe.

My experience is the same. I mostly use sigmoid these days, but if I use filmic I select v5 and preserve chrominance: no.


I have been working with a number of photography students in the last few weeks teaching them darktable and it was very interesting processing a number of images with Filmic V6, Filmic V5, Base curve (yes base curve!) and sigmoid. There was no single clear winner as which was best depended on the individual image and a person’s individual taste. I certainly developed a great respect for all the options and even liked the base curve fusion option for some underexposed dark and gloomy images.

Try this experiment. I hope the instructions make sense.

1. Filmic option
    a. Open an image in filmic and use auto tune levels. 
    b. In filmic’s look tab increase the latitude slider as high as possible without warnings.
    c. Activate the color balance rgb module using the pre-set basic colorfulness: standard. 
    d. Take a snapshot.
    e. Create a duplicate (original) in the duplicate manager module and name it V5. 
    f. In filmic use the auto tune levels
    g. In the options tab select color science filmic v5.
    h. Set preserve chrominance to no and the colours will pop.
    i. In the look tab increase the latitude slider until just before the point of orange warning on the filmic curve 
    j. Take a snapshot.
    k. Compare to the filmic V6 snapshot. You should notice much richer colours and it is personal taste which you prefer. 
2. Base curve option
    a. Create a duplicate (original) in the duplicate manager module and name it base curve. 
    b. Deactivate filmic and exposure modules.
    c. Select base curve and select a suitable preset to match the camera
    d. Set preserve colors to none.
    e. Take a snapshot.
    f. Compare this result to the snapshots of filmic V5 and V6.
3. Sigmoid option
    a. Create a duplicate (original) and name it Sigmoid. 
    b. Deactivate the filmic module.
    c. Activate the sigmoid module. 
    d. In the sigmoid module experiment with the skew slider 
    e. Adjust contrast to desired level if needed. 
    f. Compare the snapshots from filmic and base curve.
1 Like

Interesting result, even with a (severe) disadvantage for basecurve: in both filmic and sigmoid, the dynamic range of the original image is corrected (steps 1-f, and 3-e), you do not allow any such correction with the basecurve (tone equaliser comes to mind as an option). You even desactivate the exposure module (which you don’t do for the two others).
And why force a preset that matches the camera?
Also, why do you want (in filmic) the latitude as high as possible (current default with v6 is setting it to 0!)?

I think that simply comparing defaults and looking for a “winner” is a misconceived experiment. An intermediate user of Darktable can get desired the results with any combinations of the tools you list (eg whatever filmic or sigmoid does with the colors and luminance can be done or undone with color balance rgb, possibly adjusted with tone equalizer). It’s just that some of them are more convenient. In particular, base curve is practically meaningless in a scene-referred workflow; sure, you can use it after filmic or sigmoid, but there is little point. You can do everything much better earlier in the pipeline.

In case this was not clear, the question is about a practical scene referred workflow, ignoring modules that are not recommended in this context. Sure, practically anything can come after filmic rgb, as one can reorder the modules. But in practice this does not happen, and my point is that the quoted part of the manual may be outdated.

I have read the motivation for color compression for filmic-blender (on which filmic rgb is based, if I understand correctly), and I find it unconvincing. It sounds like the main argument for the exact mapping is historical (let’s not change things too quickly), and it sounds rather ad hoc.

FWIW, I think that not preserving chrominance would be the best default, and in the future the whole feature should be considered for removal. It is a blunt instrument in filmic rgb, especially in v6, and tools that come before in the pipeline (in particular, color balance rgb) are much more flexible if needed.


I’ve not moved any of the modules in my screenshot – the default scene-referred pipe order still includes (display-referred) modules after filmic and it remains up to the user whether to activate them or not. In practice I still use a couple of the display-referred modules myself (though increasingly rarely). This warning is basically for “if you choose to use display-referred modules or move things in the pipe”, and is correct. Obviously if you don’t activate any modules after filmic the warning will not apply and I think that is clear from the wording of the manual.

No problem with making that assumption for a discussion here, but the user manual cannot do so, since darktable still permits modules to be active after filmic and therefore still has to cater for those scenarios.

1 Like

@rvietor and @Tamas_Papp I maybe made a mistake posting this suggestion without a specific image being discussed. I was just trying to encourage the exploring of four different approaches to see that all methods produce valid results. These results are adapted from working with well exposed images which did not need the exposure module when using base curve. The exposure module is normally a standard inclusion in scene referred workflow. In all of these methods I have outlined I have set the preserve chrominance to none and hence why I thought it was relevant to the original post. I didn’t make it clear that this is not my standard workflow but rather that some and I enthasise some images look better with no preserve chrominance.

I am not sure that each method can come to the same result or certainly not as easy. There are certain images where working with Sigmoid seems way easier than Filmic and other times when the opposite is true. I also discourage the blind use of base curve as both filmic and sigmoid are superior for most images.

I apologise if I have added unnecessary noise to this thread.

I feel photography is about the look and when not preserving chrominance provides the user with the desired look then that is the correct pathway and I see no downside to it.

I never mentioned trying to match the camera. The reason I push the latitude slider in this case is to increase the saturation in the extreme luminosity range. I have seen this approach recommended many times as filmic tends to desaturate the extreme highlights and shadows. For personal taste it is often desirable to bring back this saturation. With filmic V6 the basic colorfulness pre-set is standard for me to use to correct the dull colors that it produces. Filmic V5 and Sigmoid produce more vibrant colors.

Thanks for the discussion and again I apologise if I am just adding noise to this thread as that was not my intent.

A small technical observation - it’s not actually desaturating (unless AP did something even more ridiculous than he has in the past), it’s failing to increase the saturation with contrast in a way that our brains expect.

1 Like

I appreciate the correction, with the addendum that not preserving crominance is what my brain expects. This is what happens, more or less, on analog photos (the precise effect of course depends on the kind of film).

For me it is the preservation that is “unnatural”. I recognize that this is a personal preference and sensible people can have a different one. In fact, it took me a while to realize what mine is; the compression has been something I had been fighting in other parts of the pipeline, not realizing how I could circumvent it best. YMMV.

I actually missed the “highlights and shadows” thing there… So yeah, “not preserving chrominance” is indeed what our brains expect. I strongly disagree with AP’s usage of “yet another module” to compensate for not doing something the human brain expects.

A potential enhancement here would be to pull the hue preservation mechanisms from sigmoidal into basecurve - at some point I implemented “preserve colors” into basecurve in an attempt to appease AP, but frankly doing so was ill-advised. It leaves basecurve with two different non-optimal mechanisms - either hue twisting, or not doing what our brains expect. The appropriate solution would have been to implement a hue preservation mechanism similar to the sigmoid module or what RawTherapee does by default. Something someone else could do if desired.

1 Like

That would be nice, especially if the relevant code could be shared between the two modules.

Hi Andy, do you maintain or develop the code for base curve?

I began submitting patches against it back in 2018, including improvements to the “preserve colors” functionality. To say that my experience was a negative one thanks to AP would be an understatement, which is why I switched to using and contributing to RT.

Yup. If I were still around, what I’d look into:
Split the “curves” part of basecurve and sigmoid from the color preservation components
Wrap the color preservation components around the core “curves” - If you’re doing a “norm”, pass the norm to the curve, if you’re doing perchannel with or without hue correction, pass perchannel to the underlying curve, hue-correct afterwards if necessary.

Not sure if filmic is salvageable into such a decomposed independent “curve” and “color preservation” subcomponent.

Assuming that the above reworking to support nested “wrapping” of modules could be extended further, take the exposure fusion part of basecurve and make it a “wrapper” around any of the display transform options.

In retrospect, attempting to appease AP by moving fusion to a completely separate module was a mistake for a variety of reasons. We all know that it was insufficient for appeasement anyway.

1 Like

It is sad to realise that was your experience. DT is more than one developer and from a users point of view AP dominated DT with his contribution and strong point of view about which was a good module and which was garbage. I only recently rediscovered the beauty of fusion in the base curve. I also regularly use shadow and highlights because I like the way it lifts colours in the shadows along with brightening the shadows. I greatly appreciate the contribution AP has made to DT and now he has branched off into Ansel I hope some of his work finds a way into DT. I also would love to see some of the great features of RT added to DT. The reason DT is my #1 choice for editing is the fantastic masking options available in nearly every module.

After more experimenting, I think I prefer the way sigmoid handles this — a continuous slider in per channel allows me to control what happens in a very fine way.