While darktable is an increasingly powerful piece of software, one of its rough edges is the fact that it doesn't try very hard to produce a good default "vanilla" rendering of the RAW files from the vast array of cameras that produce such files (understandable, being an open-source project with limited volunteer resources). By default, it applies a "base curve", usually according to brand of camera (although a few camera-specific curves are included), then pushes the results through a camera-specific color matrix derived from Adobe DNG conversion.
In the real world, there are a couple of issues with this: manufacturers release different cameras with different sensors (especially over time), so applying base curves based on "maker" is over-simplistic. The bigger problem is that applying a log curve ahead of the color matrix seems to not use the color matrix as intended; piping linear data into the matrix and applying the curve later in the pipeline makes more sense. (UPDATE: It looks like this will be getting fixed in the 2.8 release.)
In light of this, the tool
darktable-chart, using a shot of a reference target, produces a tone curve setting, which is applied later in the pipeline. It also uses the color look-up table module to further map color from the camera matrix to the reference. This process involves some effort, but once you have a basically "sane" rendering that you like as a starting point, you can set it up as the default for imported images using auto-applied presets. It might be worth searching/asking in appropriate forums about your particular camera (or closely related one) to see if someone has already done the work (for instance, users of 16MP Olympus cameras, see here).
If you're not interested in messing with charts or emulating camera rendering (or even "reality"), but just want better behavior from the various color tools, you can just disable the
base curve module and adjust the
color look-up table and
tone curve modules by hand (or try the newer
By way of sample results, here are some shots of an inexpensive Wolf Faust IT8 chart from an Olympus camera... first the default darktable "base curve" rendering:
Compare the camera's "natural" picture mode JPEG:
...and the default result from darktable after profiling with
Out-dated documentation for
darktable-chart states that it uses the "base curve" module to produce the log curve, but this is no longer the case (unless you have an old version of darktable... don't use old versions of darktable).
Also, for the specific purpose of using a camera-processed JPEG as the reference (as opposed to the reference values supplied with a target) the calibrated accuracy and illumination of the actual color patches is less important, since the "reference" is literally the same scene after additional processing. The quantity is more important, so even a cheap IT8 chart is probably better than a "checker"-type target with few colors. Some discussion or tutorials about
darktable-chart may not clearly distinguish between the two cases, so apply common sense as needed.
I also found that setting
darktable-chart to use the maximum number of patches for the CLUT gave the best results (no suprise there), and that the results became "less-good" fairly quickly when decreasing the number. The implication for CLUTs with more patches is that they're more computationally "expensive", so the trade-off may be worth it if you're using darktable without OpenCL support.