3.4.2. Tone group

This group contains modules that operate on the tonal values of an image, modulating brightness while leaving color values intact. Fill light

This module allows local modification of the exposure based on pixel lightness.

Pushes exposure by increasing lightness with a Gaussian curve of a specified width, centered on a given lightness.


Sets fill-light exposure in [EV].


Sets the median lightness impacted by the fill-light. A color picker is activated by pressing . It shows the picked lightness value in the gradient bar, which helps find the desired center value. You can switch between point and area sampling mode from within the global color picker panel (see Section 3.3.4, “Global color picker”).


Sets the width of the Gaussian curve. This number is expressed in zones, with the whole dynamic range being 10 zones. As the Gaussian curve is symmetric, only even numbers can be entered. Levels

A tool for adjusting black, white, and mid-gray points. This module is especially useful if the histogram of an image does not span the whole horizontal range, from pure black to pure white.

The levels tool offers two modes of operation: manual and automatic.

In manual mode the levels tool shows a histogram of the image, and displays three bars with handles. Dragging the handles modifies the tones in the image. Those bars control the black, middle gray and white points in absolute values of image lightness (the L value from Lab).

You can move the black and white bars to match the left and right borders of the histogram, which will make the output image span the full available tonal range. A previously flat looking image will get more contrast and pop.

Moving the middle bar will modify the middle gray tones. Shifting it left will make the image look brighter, shifting it right will make it darker. This is often referred to as a change of image gamma.

There are three color pickers in black, gray, and white, available by pressing the respectively colored icon. You can use them to sample the corresponding level directly from the image. You can switch between point and area sampling mode from within the global color picker panel (see Section 3.3.4, “Global color picker”).

The auto button autoadjusts the black and white point and puts the gray point exactly in the mean between them.

In automatic mode the module automatically analyses the histogram of the image, detects the left and right histogram borders, and lets you define the black point, the gray point and the white point in terms of percentiles relative to these borders.

Tip: Under certain conditions, especially highly saturated blue light sources in the frame, the levels module may produce black pixel artifacts. See the gamut clipping option (Section, “Input color profile”) on how to mitigate this issue.


Set the mode of operation of this module. Defaults to manual.


Sets the black point in percentiles relative to the left border of the histogram (only automatic mode).


Sets the gray point in percentiles relative to the left and right borders of the histogram after having applied the black point and white point corrections (only automatic mode).


Sets the white point in percentiles relative to the right border of the histogram (only automatic mode). Tone curve

This module is a classic digital photography tool. Unlike other image manipulation software, however, darktable's tone curve acts in Lab color space. Thus, it offers three independent curves for L, a, and b channels.

In its default state, curves will be straight lines, defined by few anchor nodes. You can move the nodes to modify the curve. You can generate new nodes by clicking on the curve. With ctrl-click you generate a new node at the x-location of the mouse pointer and the corresponding y-location of the current curve – this adds a node without risking to accidentally modify the curve. Up to 20 nodes per curve can be defined. To remove a node, move it out of the widget area.

A color picker is activated by pressing and will show the picked values in the graph. You can switch between point and area sampling mode from within the global color picker panel (see Section 3.3.4, “Global color picker”). Numerical Lab values of input and output (see below) at the selected spot or area are shown on top left of the widget.

L-channel curve

The tone curve in L-channel works on Lightness. For a better overview a lightness histogram is displayed in the diagram.

The horizontal line represents the input image pixels' lightness. The vertical line represents the lightness of the output image pixels. A straight line does not change anything. A point above the default diagonal increases the lightness, whereas a point under decreases it. Shifting the center of the curve upwards will lighten the image, shifting it downwards will darken the image. An S-like curve will enhance the contrast of the image.

a/b-channel curves

The curves in the a and b channels work on color values. They are only displayed and active if the scale chroma combobox is set to manual. The horizontal line represents the color channel value of the input image pixels. The vertical line represents the color channel value of the output image pixels. Positive a-values correspond to more magenta colors; negative a-values correspond to more greenish colors. Positive b-values correspond to more yellowish colors; negative b-values correspond to more blueish colors.

A straight line does not change anything. Shifting the center of the curve will give the image a color tint: shifting a-channel upwards gives a magenta tint; shifting b-channel upwards gives a yellow tint; shifting a-channel downwards gives a green tint; shifting b-channel downwards gives a blue tint.

Increasing/decreasing the steepness of the curves, without shifting its center, will increase/decrease the color saturation of the respective channel. With properly defined curves you can exert fine control on color saturation, depending on the input pixel's colors.

scale chroma

darktable does an automatic adjustment of color saturation, if this combobox is set to automatic. The level of this adjustment depends on the pixel's color values and its L-value modification by the L-channel tone curve. It is designed to give an overall boost in color saturation, if the L-curve gives a contrast boost. The automatic in XYZ mode offers an alternative for automatic saturation adjustment. It works by applying the L-channel curve to all three channels in the XYZ color space. This has the same effect on saturation as RGB curves would have. Look at blend mode coloradjustment if you want to tune the strength of automatic chroma scaling (see Section 3.2.6, “Blending operators”). If this combobox is set to manual, you can manually modify color saturation using the curves in channels a and b.


Original image
Tone curve settings. Please note how the center node of our b-curve was shifted down to negative values. This gives the image its blue tint.
Resulting image Zone system

This module is another way to change the lightness of your image, based on Ansel Adams' system. It allows modification of a zone's lightness taking into account the effect on the adjacent zones. It divides the lightness range into a user-defined number of zones.

Following the concept of Ansel Adams the lightness (based on the L channel from Lab) is divided into a number of zones ranging from pure black to pure white. These zones are displayed in a zonebar. The number of zones can be changed by mouse-scrolling on that bar (defaults to 10 zones).

The zonebar is split horizontally with the upper part showing the zones of the module's output and the lower part the according zones of the module's input. In its default state both parts are fully aligned. While the output zones are static you can left click and drag a control point in the input zones to modify the zonemapping. Shifting a control point proportionally expands the zones on one side and compresses the zones on the other side. Any already existing control point stays in place, effectively preventing changes to the zones beyond. Use right click to remove a control point.

The preview shows the image broken down in zones. When hovering above a zone on the zonebar, that zone – either from input or output – is highlighted on the preview.


The original image.
Here, the darker and lighter zones were compressed to increase contrast, then the upper parts of darker zones were expanded to increase their visual impact. Local contrast

This module allows enhancing local contrast. It uses the unnormalized bilateral filter, and works on the L channel from Lab.

Local contrast boosts details of your image, much like the equalizer does (see Section, “Equalizer”). However, it is easier to use as it does not require you to work on different frequency bands.


Make the details you want to adjust finer or coarser.


How strongly the algorithm distinguishes between brightness levels. Increasing the value results in a more contrasty look.


Add or remove detail. Higher values will increase local contrast.

After, a little overdone to demonstrate the effect. Use this sparingly, to avoid a cheap, overprocessed look. Tonemapping

This module compresses the tonal range of HDR images, so they fit into the limits of a normal, low dynamic range image, using Durand's 2002 algorithm. darktable can import HDR images if they come in OpenEXR, RGBE or PFM format or as a DNG generated by darktable's HDR creation mechanism (see Section 2.3.6, “Selected image(s)”).

The underlying algorithm uses a bilateral filter to decompose an image into a coarse base layer and a detail layer. The contrast of the base layer is compressed, while the detail layer is preserved, then both layers are re-combined.

contrast compression

Sets the contrast compression level of the base layer. A higher compression will make the image fit a lower dynamic range.

spatial extent

Sets the spatial extent of the bilateral filter. Lower values cause the contrast compression to have stronger effects on image details. Global tonemap

This module implements another approach to compressing the tonal range of an HDR image into the limited tonal range of a typical LDR output file. It offers several implementations of global tonemap operators.

Global tonemapping processes each pixel of an HDR image, without taking the local surrounding into account. This is generally faster than local tonemapping, as implemented in the tonemapping module but might lead to less convincing results with very high dynamic scenes. As an enhancement to the original operators, darktable can preserve detail of the input image, and transfer it back to the output image.


Reinhard, Filmic and Drago global tonemap operators are available for use. Depending on the selected operator, different parameters can be adjusted. Some operators are fully self-adjusting, and do not require specific controls.


Only offered for the Drago operator. This parameter influences the contrast of the output image. It is an essential parameter for adjusting the compression of high values and the visibility of details in dark areas. According to the original paper, a value of 0.85 is recommended as a starting point.


Only offered for the Drago operator. This is a scale factor to adjust the global image brightness to the brightness of the intended display. It is measured in cd/m 2 , and should match the according value of your output device. Higher values lead to a brighter image, while lower values lead to a darker image.


Offered as an addition to all operators. This parameter controls how much detail is preserved and transferred back into the output image after tonemapping.