darktable page lede image
darktable page lede image

Tone group

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 supports two modes of operation: the default one uses a local laplacian filter, the other one uses the unnormalized bilateral filter. Both work exclusively 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. The local laplacian filter has been designed to be very robust against unwanted halo effects and gradient reversals along edges.


Choice of "local laplacian filter" or "unnormalised bilateral grid". The options for the bilateral grid are: coarseness, contrast, and detail. The local laplacian filter supports: detail, highlights, shadows, and midtone range. The local laplacian mode supports shadow lifting and highlight compression, similar to the shadows and highlights module.

Bilateral grid

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.

Local laplacian

To understand the parameters of the local laplacian filter, you can think of it as applying a curve to the image, similar to this picture:

It will then be applied to the image in a way that works locally and avoids halo artifacts.


Add or remove detail. Higher values will increase local contrast. This will insert an S shaped element in the center of the curve, to increase or decrease local contrast. For monochrome images it is often possible to push this parameter to extreme settings without ridiculous results or artifacts.


This affects one end of the curve, effectively increasing or compressing contrast in the highlights. A low value will pull the highlights down.


Similar to the highlights parameter, this affects the other far end of the curve, and will increase or decrease contrast in the shadows. A higher value gives more contrast in the shadows. A lower value will lift the shadows and can effectively simulate a fill light. Note that this is done via local manipulation of the image, however: this means that a completely dark image cannot be brightened this way, only dark things in front of bright things will be affected.

midtone range

This controls the extent of the S shaped part of the contrast curve. A larger value will make the S wider, and thus classify more values to be midtone range and fewer values to belong to the highlights and shadows part. In more high dynamic range settings it can be useful to reduce this value to achieve stronger range compression by lowering the contrast in the highlights and the shadows. Note however that for really strong HDR scenarios this may work best in combination with a base curve which pre-compresses the range, maybe with an approximately logarithmic base curve. Also the exposure fusion feature in the base curve module may lead to more pleasing results at times, but is more prone to producing halo effects.

This setting can cause banding artifacts in the image if pushed to extreme values. This is due to the way darktable computes the fast approximation of the local laplacian filter.

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.