rebooting color balance

Unfortunately there’s no much room for reducing space without getting a cumbersome workflow.
It’s very useful to have a holistic view on the settings.
Maybe you can ditch the global slider if there’s a way to move the low/mid/high sliders simultaneously (e.g. by ctrl+drag on one slider).
Or you need a toggle to show or hide the low/mid/high sliders (similar to the show/hide toggle for color calibration using targets) - and persist a custom preference…

1 Like

The only other alternative (without code change) is to tweak the font size / CSS to get a more compact layout.

2 Likes

For those who wanted a video demonstration…

6 Likes

Awesome, many thanks Boris. :slight_smile:

Demonstrations of anyone’s workflow and ideas etc are just as valuable in my view as a tutorial.

I’ve watched a few different videos over the years and nearly always learn something from keyboard shortcuts (which I actively try to learn) to ideas and concepts that get shown that make me think “gosh, so that’s how you get that effect” :slight_smile:

1 Like

I have a question about colour balance and I think this is the right thread to ask.

I know there are technical differences between the fulcrum contrast in colour balance rgb, and using the tone equalizer (perhaps one of the presets). One is a (largely colour invariant) luminance adjustment, and one adjusts actual pixel exposure.

But: is there a practical difference between using the colour balance contrast slider, and a tone equalizer contrast preset (s curve with detail preservation set to none) that I should be aware of?

The fulcrumed contrast is shit, that’s the difference. Since it’s not “S”-shaped, it moves the white point freely. So picture this workflow:

  1. you set-up overall brightness in exposure,
  2. you set-up black and white bounds of the DR in filmic,
  3. you add some contrast in color balance with the fulcrumed contrast,
  4. now your white point has moved up and you need to redo step 2, which will actually aim at reducing the contrast, which will go against the step 3.

That sucks.

Why is fulcrumed contrast still there though ?

It is customary to use color balance RGB masked, usually to treat foreground apart from background. Foreground is usually a reflective object/subject, while background often contains speculars and light sources. In case you want to make the reflective foreground pop up a bit more, then it’s fast to do it from the color balance contrast, and it should not affect your global white.

For anything else, tone EQ lets you nail the white point (whether you use details preservation or not) and massage the midtones independently, it’s a much better workflow since you don’t need a second pass on filmic.

3 Likes

Thanks for the write-up! I like how with every post you make I get a better understanding of what a ‘valid’ workflow is and why the darktable pipeline is structured the way it is. But if I understand the graphs correctly it is very much possible (and in fact the tone equalizer contrast presets will do this) to increase the white point to some higher value such that an adjustment of the filmic white point is required.

image

It is possible if that is what you require, yes, but it also gives you an opportunity to nail the white value by simply forcing a +0 EV correction at +0 EV exposure level. The color balance RGB gives you no such option.

I see. But then I would say that a true s-curve like this would be a safer default for increasing global contrast with the tone equalizer.
image
(and now I will stop talking about it here, because this thread is for color balance and I’m national champion in derailing conversations)

1 Like

But then what is the difference with increasing contrast directly in filmic?

My understanding:

  • In both color balance rgb and tone equalizer, you add contrast to the scene-referred, linear data. In filmic, you adjust the steepness of the tone mapping curve, potentially ‘overstraining’ it, which can lead to clipping due to the constraints placed on the curve, which you have to fix by backing off on the contrast or lowering latitude.
  • Usually, you don’t mask filmic, and don’t apply multiple instance in the way you can do with color balance rgb and tone equalizer. (Though I have seen a ‘double-filmic’ trick by @s7habo, but that’s bordering on black magic for me. :smiley: Even that one did not use masks, if memory serves me well.)
  • In filmic, you have no control over the fulcrum (it’s mid-grey). In the other two modules mentioned, you do.
2 Likes

Filmic deals with remapping dynamic range between different media. Whatever you do in there falls back to the basic question : “how do I want to drive the dynamic range trade-off when going to SDR ?”.

Color balance is an artistic module that doesn’t care about output medium.

1 Like

In the documentation:
https://www.darktable.org/usermanual/3.6/en/module-reference/processing-modules/color-balance-rgb/#what-is-the-connection-with-liftgammagain

The lift/gamma/gain algorithm relies on a display-referred color space, since it assumes a bounded and symmetric dynamic range, with white point at 100% and gray at 50%. As such, it is simply unusable in a scene-referred space. However, the only incompatible part is the lift. The gamma is exactly the ASC CDL power, and the gain is exactly the ASC CDL slope.

The part quoted above, with lift being non-linear (addition), is about the original ASC definition, right? And in darktable color balance rgb, the same term, lift is used, but in reality, a gain (multiplication) is applied to the pixels deemed to be ‘dark’ based on the mask:

The color balance RGB module simply has two slopes instead of one: the gain, applied on the highlights extracted from the whole image by a mask, and the lift, applied similarly but on the shadows.

Is this correct?

In lift/gamma/gain, lift is a slope or gain applied to inverted RGB: RGB = ((( 1 - (1 - RGB) * lift)) * gain)^{gamma}. It’s not an offset, aka an addition. Only the ASC CDL has ever had an offset. So, to avoid the inversion by 1 (display-referred white), the modified CDL in the current color balance has 2 different slopes with alpha masks.

2 Likes

As people more often write with queries and problems, here is some feedback on how great I find the new colour balance rgb module in darktable.

If love the way that you can easily add more saturation to darker colours and less to lighter colours. It really allows you to add richness in colours to photos but avoid straying into garish territory. (I know this is just one of many ways of adding contrast and saturation to photos but it does easily offer you a degree of fine control).

Thanks everyone!

7 Likes

Yes, and together with the vectorscope I can now get perfect skintones, fixing the reddish skin out of my Sony cameras.
At every major release, I play with some of my old edits to see if I can get better results with the new tools and I have to say that DT keeps improving so much that I would like to reprocess/reprint al my pics :slight_smile:
A big thanks to the devs team!

4 Likes

Yes, this is the exact “problem” I’ve had in the last 2-3 releases as well. :slight_smile:

Same here! Soon, reprocessing old photos will be my full-time job… but unpaid, which means it’s a terrible job.

What is the use case for offset in color balance rgb?

I’ve been doing some testing of color balance rgb using a black to white horizontal gradient.

For offset, the manual says “This is equivalent to the ASC CDL offset and falls back to adding a constant RGB value to all pixels”.

In this screenshot, I’ve applied an orange hue at 1% chroma in offset. As you can see, the shadows have gone a purplish colour, then there’s a white band before a more gradual orange colour is applied to the midtones and very little in the highlights.

I’m sure there’s a good reason for this (out of gamut, clipping, screen profile…?), but I’m left wondering what the use case for offset is. When is it the right tool to reach for, as opposed to power for example? I watched Aurélien’s video and I noticed he used offset in his examples, but I didn’t really understand what offset was doing that the other sliders couldn’t do.

In a colour grading application (like davinci resolve), i’ve used offset to lift/drop the entire waveform at a constant value (it’s quite useful when dealing with under/overexposure, low contrast/log image/footage), and after that use the other slider (lift/gain/power) to set the contrast. And using the hue and saturation to add/remove colour cast globally (like in white balance).

What I found it’s quite hard to do it in dt as I do in another software (eg. resolve), because filmicRGB is come after this module, it is influenced by the roll-off curve, that’s is why it goes to neutral/desaturated on the shadow/highlight portion. And, somehow there’s always something that makes the upper portion of the waveform sticks to its position or edge, maybe black/white point. So when I need to tint the overall image, I’ve used the 2nd instance of the colour calibration module, or create another instance of colour balance RGB after filmic (I don’t know if it’s the right way or not).

I guess I just need to adapt this behaviour more because different software sure has a different processing pipeline.

I think I want to ask this as well, isn’t Offset slider (in ASC-CDL) supposed to be an addition/extraction to the entire value/range? When I used it in dt, it feels like it’s not simply “offsetting” the graph (exposure/colour).