Why is the global histogram in darktable different from the ones in modules ?

I have seen this question several times these past few weeks:

If you open darktable modules like tone curve, rgb tone curve, tone equalizer, levels, rgb levels etc. the inset histogram doesn’t look the same as the global histogram (at the top of the right sidebar). Why ?

Capture%20d%E2%80%99%C3%A9cran%20du%202019-11-10%2013-13-35

The top right histogram is the non-linear RGB histogram of the full pipeline output. darktable stacks modules in a sequence named a pipeline:

RAW -> [demosaic] -> [...] -> [input color profile] -> [...] -> [output colour profile] -> DISPLAY

The histogram you see in the top right corner is the data sent to the display, after the full pipeline is processed, and (in darktable 3.0) you can select in which RGB space you want it (“histogram profile” option when you open the softproofing menu):

The inset histograms you see in modules like tone curve represents the input of the current module, in the colour space it is working (Lab for tone curve and levels, linear RGB for RGB tone curve and RGB levels, luminance for tone equalizer). That’s all you care about at the module level, when you set it up: local input.

TL; DR:

  • global histogram : global output of the full pixelpipe
  • modules inset histograms: local input of the concerned module

Same applies to colour pickers (global vs. in-module).

15 Likes

@aurelienpierre This is a bit old now but thanks for explaining this part…is there an explanation some where of how the display, display preview ,and softproof profiles fit in the picture as well. I can understand THe concept of input to working to output but then it gets confusing with all the other options as well I could see how softproofing is to emulate a look that you will achieve while printing…display would normally be your system or calibrated profile normally would it not and the histogram would you normally want to set it to output profile to determine that the pipeline was working to match your intended output or maybe working to see that your module edits don’t push too far?? I am just a bit confused about how all these tie together and why you would set them at one color space vs another…eg in your screen print why preview at rec2020 and the others at adobe RGB?? or is that just how they ended up for the pic??? I guess my issue is I was trying to get a linear tiff output for argyll to do some color profile testing but depending on what I set the input colorspace too the tiff looks different and so when I am testing the L value of test patches I am not sure what settings to use …I have tried both input and output at srgb and both at linear prophoto this is supposed to be a neutral colorspace conversion but I get different images and values…then if I change the histogram profile the picker values change as well…I believe I read that argyll will ignore this and use the raw data so long as the gamma is 1 its okay but still I would be more confident if understood it and had the correct values to create the linear tiff for use with color profiling…thanks in advance for any comments…if this has been previously discussed and anyone comes across this just point me to that and I apologize for any duplication…

1 Like

I’ve got the exact same confusion…

In the end, all I want is that what I see on screen is what eventually ends up in my JPEG file. Based on what output profile I select.

The fact that I see the histogram and color picker change based on the profile I select for it contradicts your statement of it showing the output of the pipeline. @aurelienpierre

I now don’t even trust that color picker anymore and I have no clue what profile to select so my picked color matches with what I see and write to a JPEG.

1 Like

Depending on your monitor and if you calibrated or not sRGB as output will be the closest match generally and since the histogram shows the result of the entire pipeline setting it as output ie export or sRGB should give you the histogram of your JPG…setting to working won’t match your output but will show you what happens at each stage of your edit…as I understand it