darktable tone equalizer : help wanted


I’m preparing an in-depth video tutorial about the new darktable tone equalizer module, to avoid reproducing the errors made with filmic v1 (some people got it and enjoyed the time savings, some are still struggling with it and don’t save any time, mostly because they don’t get the problem it solves).

I want to collect here your questions, surprises and misunderstanding about darktable tone equalizer so I can made an extensive presentation of it. I already have a few in mind, but the more the merrier.

Also, please post images you had difficulties editing with tone equalizer so I can edit them live.

I only have problems with the masking. If I follow the bar which indicates what to do, it doesn’t really work. Using the landscape preset works normally very well.

Sorry, just posted some questions there: A tone equalizer in darktable ?

Not sure this the same issue, but when I use “mask exposure compensation” the bar graph above does not always change in a smooth and continuous manner.

1 Like

I also have questions with masking.
When should it be more diffuse? What impacts do the mask settings have on a picture (from a non technical perspective)? Are there recommended groups of mask settings for each kind of images (hdr, ldr)? Are there recommended groups of mask settings for each kind of desired result (as @phweyland mentioned before, high contrast result, contrast compressed result)?

I see that the mask settings deeply affect the final result, but I’m not able to say something like this: “Humm, for this kind of picture, and for the result I want, I have to tweak this and that mask setting

EDIT: Also, it would be nice to keep showing the tie between tone equalizer and filmic rgb.

Smooth and continuous setting is asking a bit much here, but I will see what I can do.

I think there are some cache issues that make this feature fail. More bugs to hunt.

(Full story : the histogram stats are cached and computed only if the mask has changed, and that mask is cached too and computed only if the masking settings or the lower modules have changed, to stay energy-efficient and more responsive in GUI. However, synchronising caches is a nightmare).

Nothing else guys ?

I would also appreciate more explanation about the masking process.

I have been using tone equalizer a bit now and it’s a great tool. The only thing I struggle is to predict how to spread the histogram across all the nodes. The preview bar in the masking tab most of the time is not centered while the histogram in the advance is fine, and the other way around (a center bar does not equate a center and/spread histogram).

Also, maybe one question : say I want to work more on the highlights, does it make sense to spread the histogram just for the highlights? Meaning that most of the nodes in advanced tab will be used to control the highlights ? Is there any downside to do so?

I ask this cause on some pictures, I don’t find a way to pull down highlights enough while at the same time raising the mid tones. Hence the idea to have two instances of the tone equalizer : one for mid tones and shadows, the other for highlights.

Note I mainly use tone equalizer for landscape properly exposed with few over exposed areas.

Forget about highlights. Tone equalizer knows no highlights, it just splits the dynamic range you feed it in 9 zones, spaced by 1 EV. Highlights may fall into the 0, -1, -2 EV band, that doesn’t change anything. Always try to spread the histogram over all the available nodes, so you get maximum control over your whole dynamic range.

Preliminary answer here, for @Julien76, @gadolf, @asn and @phweyland, regarding the masking:

  1. The mask used in tone equalizer simply compresses an RGB image into a grey map representing the pixel lightness, using several norms, and is used internally to map the pixel lightness to the control nodes to apply the corresponding exposure correction.
  2. If you don’t use the details preservation option, the tone equalizer falls back to a simple tone curve with built-in chroma preservation. That’s good if you want to increase the contrast in a picture and don’t mind the over-sharpening (aka you want local and global contrast increase).
  3. If you are decreasing the contrast (in HDR situations) or want to increase the global contrast without affecting the local one (in studio portraits, to avoid making skin flaws pop out too much), you need to post-process the mask and use the details preservation mode.

To avoid affecting the local contrast along, we need to make sure that the same exposure correction is applied over contiguous areas of the picture (say : all the background gets -1 EV, and all the foreground gets +1 EV) and these areas are properly separated.

We therefore need to post-process the mask with a surface blur. We do that with a guided filter.

  1. chose the luminance estimator that gives you the most separation between the areas you want to dodge, and the ones you want to burn,
  2. chose the smoothing diameter depending on the size of the elements you want to isolate,
  3. adjust the edge feathering:
    1. if you get halos along sharp edges, increase it,
    2. if you get too much local contrast compression, decrease it.
    3. Note that a very high edge feathering (> 100) is equivalent to disabling the details preservation at all.
  4. if the trade-off beween smoothing diameter and edge feathering is still not enough to get a good edge-aware blurring:
    1. increase the mask diffusion (aka apply the guided filter iteratively on top of itself),
    2. increase the mask quantization (aka use a pseudo-boolean mask in the guided filter).


The core of the guided filter is actually a box average (also called box blur), which computes the local average in a square box around each pixel. As you increase the mask diffusion, the mask quantization, and decrease the edge feathering, the post-processed mask will tend to its average lightness. Thus the histogram will shrink around its average, and most nodes in the equalizer will consequently control nothing.

So the mask exposure and contrast compensations are just there to counter the averaging effect of the guided filter and force-spread the histogram over all available nodes.

That’s why we don’t care about highlights or shadows in this module, because what the -1EV band actually represents depends on the masking options, and doesn’t change anything since you have the interactive correspondance between image preview and EV band.

At any rate, preview the mask for each step, and read the tooltips labels I have put on each slider, that should help understanding what’s going on. Litterally every setting has a tooltip.


I still did not have time to watch your previous video about features in DT 3.0 so I do not know if my wish list is valid.
I would like to learn basics:

  • what is this new tool,
  • does it replace any previous tools or extends beyond old tool capability
  • what is can do in a very few obvious and straightforward examples,
  • when shall I use it
  • how it affect my old workflow which is based on:
    a) white balance, lens correction, tone curve, equalizer/local contrast + later local correction
  • when this module shall be avoided
  • is it good for portraits
  • is it good for global adjustments only

and later on the more advanced topics:

  • masking
  • tweaking the tool
  • doing wizardry

I would love to see a lot of examples. That would be the best of all.

I struggle to use filmic but more often I end up with several tone curve modules with local edits. Maybe the tone equalizer will be able to do in a single instance what I usually do with 2 or more instances of tone curve

Thank you for preparing such video!


Thanks for this fantastic new tool. It closes the gap to LR a fair bit more. I just like to share my experiences after having read earlier posts and having watched your video, which is not the shortest one but great anyway :wink:.

When I started with tone equalizer I first tried to use the “simple” tab. This tab left me completely confused. I simply could not understand the meaning of the slider´s names (+/-*EV). The second names (highlights, mid-tones, etc.) didn´t help either as they produced more ore less unexpected / unpredictable results.

I then used the “in-picture editing cursor”. Brilliant Idea, easy to understand and work with, made for lazy and dumb users like me => Absolutely cool!

At this stage my problem was, that sometime things happened as expected, and sometimes not. Tweaking the EV (Now I understood what it meant) at a specific location in the picture altered regions that wheren´t always predictable. By moving the editing cursor over the picture I noticed, that the histogram under the “advanced” tab didn´t match the tonecurve histogram.

I found the solution in the last tab “masking”. You have to set this mask first to get the results you expect as you explained here:

Whooops ! Now I get the results I expect. Using this workflow, tone equalizer is a powerful tool, far more versatile as any available commercial software. :sunglasses:

Just an idea: Perhaps you can change the order of the tabs along the workflow like in filmic:

  • Left tab: “masking”
  • Middle tab: “advanced”
  • Right tab: “simple”

Thanks a lot again,