5

I'm trying to learn to use Darktable effectively.

That's why over the weekend, in the middle of a massive cleaning and organizing task at home, I took a minute to shoot this compositional disaster of a photo: Side by side comparison of RAW vs. JPG of a picture that's several different kinds of mess

(I'm not attempting to make a good picture out of this. I don't take pictures this way. I just saw that this pile of junk and blankets had good color contrast and detail that I could use to play around with while learning Darktable. It was a case of "Hey, there's a thing." click "Back to work.")

Anyway, I captured in RAW+JPG. The RAW exported from Darktable is on left, the from-the-camera JPG is on the right. I played a little with sharpness and highlight/shadow modules. I played a lot with color tools, but I couldn't make the colors turn out right. The color of the red bin in the camera JPG is pretty much spot on, and this is where the color problem is most obvious to me. The colors seen in the version on left is as it appeared when I imported to Darktable, with no color correction tools in use.

I also see that the purple blanket is a lot more saturated in the version on the left.

How would I go about correcting the color of this picture in Darktable?


Please nobody tell Mrs. Blanston that I posted a picture of our basement clutter on the internet.


Edit (x2): I'm not confused about the difference between RAW and JPG. In this case, I'm using "RAW" as shorthand for "the JPG file which was exported from Darktable after it was imported as RAW and Darktable's default color mapping was used to render, with none of my (unsuccessful) manual color correction included," and "JPG" as shorthand for "the JPG as rendered by the camera."

  • Let us continue this discussion in chat. – Gern Blanston Feb 28 at 19:40
  • "I'm using 'RAW' as shorthand for 'the JPG file which was exported from Darktable after it was imported as RAW and no color correction was done on it.'" If you are looking at it on your screen, there has been color conversion applied. The fact that you did not alter what was there when it was first opened only means the default color conversion for your app was applied instead of some other color conversion more closely mirroring the color conversion used in the camera's own processing engine. – Michael C Mar 1 at 16:15
  • @MichaelC Edited again to be more accurate. Thanks for the correction. – Gern Blanston Mar 1 at 18:05
8

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 thecolor look-up table and tone curve modules by hand (or try the newer filmic module).

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:

enter image description here

Compare the camera's "natural" picture mode JPEG:

enter image description here

...and the default result from darktable after profiling with darktable-chart:

enter image description here

Some notes:

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.

  • 1
    Interestingly, it's the darker blues in your image that jump out to me as being really "off"... maybe because it's these same hues that I had the most trouble dealing with initially. The base curve was pushing them so far over the edge that none of the color modules could repair them very well until I switched to "tone curve" instead (and more recently to the "filmic" module, which does a similar job but offers a different approach to adjustment). – junkyardsparkle Mar 1 at 4:46
  • Thanks a million! I also came across this article on pixls.us after finding that site via xenoid's comment on my earlier question. – Gern Blanston Mar 1 at 14:36
  • 1
    Yeah, I actually find that write-up slightly confusing, but some of it gets ironed out in the comments section. For our specific purpose of basic camera-matching, many things are less critical than if you're calibrating to a target's reference values (particularly lighting). I also think the "colorchecker" target probably isn't the best choice here, where broad coverage of the color range is more important than precisely calibrated patches. I'll expand the answer a little re: this when I get a chance. – junkyardsparkle Mar 1 at 21:02
  • 1
    I added this link to the answer while shaping it up a bit, but I'll post it here, too, so you don't have to go looking for it... more background from the author of the tools in question: web.archive.org/web/20190301215811/https://jo.dreggn.org/blog/… – junkyardsparkle Mar 2 at 0:44
  • "[darktable] doesn't try very hard to produce a good default "vanilla" rendering of the RAW files" -- That's intentional. darktable's MO is to be more like a chemical darkroom, where you figure out the best way to process your images and apply that knowledge to your workflow. In that respect, it's more of an expert-level tool than something that produces acceptable work at the touch of a button. – Blrfl Mar 2 at 3:19

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.