I am in the process of learning post-processing, using darktable. I have a couple of pictures shot in RAW with lots of contrast in them (for instance, dark passages with bright sky).

Now, in getting those pictures into the nicest possible final jpeg image I am trying to understand the difference in approach between those methods:

  • Global tone mapping
  • Tone curve

Unfortunately, it seems technical information on tone mapping operators is hard to find. I only could find specifics for Reinhard and I am a bit surprised, in that the formula looks like something that can be done with a tone curve.

Is it so? If it is, what is the difference between global tone mapping and tone curve, and if not, what am I missing?


The global tonemap module fills a different role than the generic tone curve. Since its purpose is to compress the wide dynamic range of an HDR or RAW file in a specific way based on theories of human perception, it occurs earlier in darktables fixed-order processing pipeline, allowing the modules that follow to operate on this compressed range.

It also offers a "detail" control for retaining a degree of local contrast, making it actually less "global" than a generic tone curve (more like the usual sense of "tone mapping"). This leaves the tone curve module available later in the pipeline for its more typical role of adjusting the degree of contrast between different tonal regions based on artistic preference.

Even earlier in the pipeline is the base curve module, which may be worth looking at when dealing with high-contrast images; the default curve automatically chosen based on camera brand may be more contrasty than you want for such an image, and can be adjusted similarly to the tone curve.

  • I usually disable the base curve when I use the global tonemap module. You make a good point about the order of the module in the pipeline, I had not thought of it. But just to be sure: am I right about the global tonemap effect being attainable through the tone curve (or base curve for that matter)? And the difference just lies in the intended role and pipeline order (and not having to manually fiddle with the curve to get a mere approximation of course)?
    – spectras
    Jun 19 '16 at 19:48
  • @spectras: I believe so, but like you said, information isn't easy to find. You could ask on the darktable dev list for a more authoritative answer, or inspect the code for the module, I suppose... Jun 19 '16 at 21:12

A tone curve is just a function that assigns at every pixel a brightness level based on the current value. So it is a pixel-by-pixel operation like adjusting brightness and contrast.

Tone mapping is different in that it enhances perceived contrast by acting on edges and gradients. It means that two pixels of the same brightness before tone mapping become different after.

  • 1
    The normal "tone map" module works in the way you describe, but the "global tonemap" module is a little different, and doesn't actually do any of that using the operators alone (but it can, slightly, if you then adjust the "detail" control). Jun 19 '16 at 16:58
  • This. I know what tone mapping does, and the purpose of this question is to clear the confusion about what darktable calls "global tone mapping", which looked very similar to a pre-computed tone curve to me.
    – spectras
    Jun 19 '16 at 19:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.