| darktable | |
|---|---|
| | |
| darktable 4.4.2 in darkroom view with the color balance module expanded and its mask shown as yellow area | |
| Original author | Johannes Hanika [1] |
| Initial release | April 2009 [2] |
| Stable release | |
| Repository | github |
| Written in | C and GTK |
| Operating system | FreeBSD Linux macOS Solaris Windows |
| Platform | x86-64, ARM64 |
| Size | 8.72 MiB (source (tar.gz)) 108 MiB (Windows) 91 MiB (macOS) |
| Available in | 18 languages [4] [5] |
| Type | Photo post-production |
| License | GPL-3.0-or-later [6] |
| Website | www |
Darktable (stylized as darktable) is a free and open-source photography application and raw developer. Rather than being a raster graphics editor like Adobe Photoshop or GIMP, [7] it comprises a subset of image editing operations specifically aimed at non-destructive raw image post-production. It is primarily focused on improving a photographer's workflow by facilitating the handling of large numbers of images. It is freely available in versions tailored for most major Linux distributions, macOS, Solaris and Windows and is released under the GPL-3.0-or-later software license. [6]
Darktable involves the concept of non-destructive editing, similar to that of some other raw manipulation software. Rather than being immediately applied to raster data of the image, the program keeps the original image data until final rendering at the exporting stage — while parameter adjustments made by a user display in real-time. The programme features built-in ICC profiles, GPU acceleration (based on OpenCL), and supports most common image formats.
Darktable has built-in ICC profile support for sRGB, Adobe RGB, XYZ and linear RGB colour spaces. [9]
Since version 2.6, darktable uses a “scene-referred” colour workflow to get consistent results throughout varied lighting conditions and even across cameras and lenses.
Due to evolution, the human vision system makes significant adjustments of how a scene is perceived. Raw images from cameras have none of these corrections and therefore significant processing needs to be applied to make photos aesthetically appealing and meet the expectations of audiences. Other raw editors may use a so-called “display-referred” workflow to give photographers a decent looking template to start working from, meaning they already apply significant transformations, such as Gamma curves or LUTs to the image and the photographer can only make their own adjustments on top of the standard transformations. This is problematic, as the image has lost its linearity, this makes the edits of the photographer fundamentally unpredictable. Since a Gamma curve acts the most on the extremes of the image, that being bright highlights and deep shadows, these areas especially will be difficult to control, as the different transformations will be multiplied over each other. [10]
Darktable gives the photographer full control over the entire processing pipeline and by default, preserves linearity until the last step. This means that all adjustments happen in the correct scene-linear colour space and only in the last step, a tone-mapping programme applies a parametric Gamma curve, which again is under the user’s control. As all transformations are linear, the user can control the output more easily. Furthermore, the workflow itself is inspired by the colour science of cinema, meaning it divides the workflow into primary/corrective and secondary/aesthetic colour grading. The first modules in the standard pipeline are purely about colour correction and getting a properly looking image, all cameras and lens combinations until this point will be matched very closely. After the image has been corrected (no tint, correctly exposed, etc.), on top of this correct image, the photographer makes their aesthetic adjustments. As all aesthetic effects are made on top of a similar “template”, these effects will have approximately the same look, even if lenses and cameras produce different, initial raw data. [11]
Support for drawn masks was added in Darktable version 1.4, allowing application of effects to manually specified areas of an image. There are five mask types available: brush, circle, ellipse, Bézier path, and gradient; all are resizable, allow fade-out radius for smooth blending and can have their opacity controlled. An arbitrary number of masks can be created and are collected into a "mask manager" on the left hand side of the darkroom UI. [12]
Over multiple versions, masks have been refined and now additionally to being drawn, they can be controlled parametrically, or imported from external images. If a module warps the image, such as lens correction or perspective correction, said warping operations will be automatically applied to masks as well, meaning that for example a gradient tracking the horizon will be rendered correctly, even after significant perspective corrections are applied. [13] Parametric masks can be created by selecting any given R, G, B, and/or Lightness, Chroma and Hue value. They can be combined with drawn masks, such that the parameters are only evaluated in a certain area of the image. [14] Masks can also be blended with different logic operators, (exclusive, inclusive, etc.) [15] and blend modes (addition, multiply, average, etc.) [16]
Raw image formats, JPEG, HDR and PFM images can be imported from disk or camera, and exported to disk, Picasa Web Albums, email, and to a simple HTML-based web gallery as JPEG, PNG, JPEG XL, TIFF, WebP, PPM, PFM and EXR images. [17] Images can be exported to Wikimedia Commons using an external plugin. [18]
Darktable can be controlled by scripts written in Lua version 5.2. Lua can be used to define actions which Darktable should perform whenever a specified event is triggered. One example might be calling an external application during file export in order to apply additional processing steps outside of Darktable. [19]
The histogram shows how many pixels in the image have a certain value. Left on the X-axis is 0% lightness, and right is 100% lightness. The Y axis represents how many pixels have said value. [20]
Multiple histogram types are available, all with individually selectable red, green and blue channels: linear, logarithmic and waveform (new in version 1.4). [12]
The waveform monitor functions similarly to the histogram and shows the lightness of certain pixels. However, it also shows where the pixels are located. Left on the X-axis of the waveform monitor is also left in the image, while right on the monitor, is right on the image. The Y-axis shows brightness, but for every channel. If an area is white, it means this area is colour neutral, if red, green and blue show up separately, it means this area has a colourful tint. Furthermore, it is possible to infer which colour tint, if Green and Blue are at the same level, but Red is below the two, it means this area has a cyan tint.
The RGB parade works identically to the waveform monitor, but it shows the three channels side-by-side instead of overlaid over one another.
The Vectorscope works purely with colour. The centre is neutral, while the outer part ring represents maximum chroma for a given colour. The Vectorscope can also overlay samples taken directly from the image with the colour picker, display guides for colour harmonies and work in different colour spaces.
Darktable has two main modes: "lighttable" and "darkroom". Each represents a step in the image development process. Two more modes are tethering and a map view. Upon launching, lighttable opens by default, where image collections are listed. All panels in all modes can be minimized to save screen real estate. [21]
The left panel is for importing images, displaying Exif information, and filtering. Rating and categorizing buttons are at the top, while the right-side panel features various modules such as a metadata editor and a tag editor. A module used to export images is located at the bottom-right.
The second mode, "darkroom", displays the image at center, with four panels around it; most tools appear on the right side. The left panel displays a pannable preview of the current image, an undo history stack, a colour picker, and Exif information. A filmstrip with other images is displayed at the bottom, and can be sorted and filtered using lists from the upper panel. The latter also gives access to the preferences configuration. Darktable's configuration allows custom keyboard shortcuts and personalized defaults.
The third mode allows tethering through gPhoto to cameras which offer suitable support. [22]
The fourth mode can display maps from different online sources and geotags images by drag-and-drop. It also uses maps to show images already geotagged by a camera.
As of December 2019, [update] darktable includes 67 image adjustment modules, which it divides into 5 groups. [17] By default, only the modules relevant and compatible with the current workflow are displayed. The hidden modules can be searched for by using the search bar, or by activating the “modules: all” preset next to the group headers. Modules receive input from the module below them, then process them and pipe the output into the module above them. The changes the user makes are updated in real time. [23] There are only four mandatory modules, as these are technically necessary to make an image, that can be loaded and displayed by other non-raw editing programmes: raw black/white point, demosaic, input colour profile, output colour profile.
The basic group includes modules which are required at minimum to make a presentable image, such as exposure, contrast, cropping, etc.
Modules related to contrast and lighting include: fill light for modifying the exposure based on pixel lightness; levels to set black; tone curve; zone system; filmic; local contrast; global tone mapping and tone mapping.
The colour group includes modules, which manipulate colour either aesthetically or correctively.
The colour calibration module is used to make the image perfectly neutral and corrected in its colour. It features different programmes for full Chromatic Adaptation Transformation, which can approximate how a given colour would have looked under a different light source. By default, it is the first module immediately after “input colour profile”.
Darktable automatically computes a standard illuminant by reading the metadata of the raw file. The user can manually select an area of the image, which is supposed to be neutral, a gray card, for example. Darktable will then compute the illuminant of the neutral area and its spectrum, which is then used to neutralise this light source and apply corrections for its colour metamerism. To make this process even more accurate, users can photograph a colour chart under the light source they wish to neutralise. Darktable will then compute a correction matrix with the channel mixer, which is similar to loading a matrix based ICC profile.
The colour calibration module is significantly more accurate than white balance, as white balance only ensures that R=G=B on neutral surfaces; the lens, demosaicing, the effect of colour metamerism from different light sources, and even the other colours other than neutral, are ignored by white balance. [24]
This module is a channel mixer, used for defining how the colours of the image look. By default, it is the first secondary colour grading module. The benefit of using this module in favour of other techniques, is that users can quickly and easily get aesthetic results. Even when colours have their appearance modified, the relationships between colours remain the same, for example, if the photographer shifts the blue primary towards cyan, yellow gets shifted towards orange. If the intensity of blue gets increased, yellow has its intensity increased by an equal amount. [25]
The colour equaliser is used to adjust colours' hue, saturation and brightness, based on their current hue. As an example, it can be used to correct skin tones, if the colour grade from the RGB primaries module has made them unappealing. It is best to make small changes with this module and a general colour grade with the RGB primaries module. If changes with this module are too strong, it will amplify noise and make colour transitions impossibly harsh. [26]
The correction group hosts modules for correcting problems with the capture itself.
In this group, modules that are used for special effects are located.
In 2011, the Darktable team participated in the Google Summer of Code (GSoC). The main goals were to remove libglade dependency from Darktable and to make room for more modularity. The input system for handling shortcuts was also rewritten and incorporated into version 0.9. [27] [28]
Darktable is released under the GPL-3.0-or-later as free software. [29] The current version of Darktable works on Linux, macOS and Windows. Many Linux distributions include Darktable in their default repositories, including Debian, Fedora, openSUSE, Arch Linux, and Gentoo Linux.
Darktable also runs on Solaris 11, [30] with packages in IPS format available from the maintainer. [31]
Darktable is available in multiple languages, but the availability of various locales has varied across Darktable releases. Darktable is notable for using all-lowercase literals in every language by default. Since version 4.4.0, a new locale called "en@truecase" allows users to apply conventional casing to English. [32]
| ver. | en | En | sq | af | ca | cs | da | de | es | eo | fi | fr | it | ja | he | hu | nl | nb | pt-BR | pl | sl | sk | ru | uk | tr | zh-CN | zh-TW |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.0.0 [33] | Yes | No | No | No | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | No | Yes | No | No | No | No |
| 3.0.2 [34] | Yes | No | No | No | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | No | Yes | No | No | No | No |
| 3.2.1 [35] | Yes | No | No | No | No | No | No | Yes | Yes | No | No | Yes | Yes | No | Yes | No | No | No | Yes | Yes | Yes | No | No | No | No | No | No |
| 3.4.0 [36] | Yes | No | No | Yes | No | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
| 3.4.1 [37] | Yes | No | No | Yes | No | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes | No | No | Yes | Yes | Yes | Yes | Yes | No | No | No | No |
| 3.6.0 [38] | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | Yes | No | Yes | No | Yes | Yes | No | No | No |
| 3.6.1 [39] | Yes | No | No | Yes | No | No | No | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | Yes | No | Yes | No | Yes | Yes | No | No | No |
| 3.8.0 [40] | Yes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | No | No | Yes | No | Yes | No |
| 3.8.1 [41] | Yes | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No | No | Yes | No | Yes | No |
| 4.0.0 [42] | Yes | No | No | No | No | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | No | Yes | No | Yes | Yes | No | Yes | No |
| 4.0.1 [43] | Yes | No | No | No | No | Yes | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | No | Yes | No | Yes | Yes | Yes | Yes | Yes |
| 4.2.0 [44] | Yes | No | Yes | No | No | No | No | Yes | Yes | No | Yes | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes | Yes | No | Yes |
| 4.2.1 [45] | Yes | No | Yes | No | No | No | No | Yes | Yes | No | Yes | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes | Yes | No | Yes |
| 4.4.0 [32] | Yes | Yes | Yes | No | No | No | No | Yes | Yes | No | No | Yes | No | Yes | No | Yes | No | No | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes |
| 4.4.1 [46] | Yes | Yes | Yes | No | No | No | No | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | No | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes |
| 4.4.2 [47] | Yes | Yes | Yes | No | No | No | No | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | No | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes |
| 4.6.0 [48] | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes | No | Yes | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes |
| 5.2.0 [49] | Yes | Yes | Yes | No | No | Yes | No | Yes | Yes | No | Yes | Yes | Yes | Yes | No | Yes | Yes | No | Yes | No | Yes | No | Yes | Yes | No | Yes | Yes |
{{cite web}}: CS1 maint: bot: original URL status unknown (link)