Vibrance too weak?

Vibrance in darktable saturates and brings down the lightness of the most saturated pixels to make the colors more vivid

Often I use the vibrance module in photos that I took in bright sunlight. In many cases I crank up the module to 100% and still find the effect too weak. In some occasions I use a second module.

This is an example of stacking four vibrance modules with 100% amount, I still don’t find the result exaggerated.

vibrance

What do you think, should the vibrance module be made stronger?

1 Like

Yes, in most cases it needs high values. Is there an alternative?

Could be using a module that can reduce brightness and increase saturation with a parametric mask that resticts the effect to highlights.

I try that with ‘color zones’…

I was able to bring down the highlights and increase colors with a similar result as the vibrance module. But I lost some contrast, even without the parametric mask.
The result is not as good as the vibrance module.

You can most likely use more Vibrance modules to make it stronger, right?

You can also use the tone curve in LAB mode.

You know, there’s just one slider in the Vibrance amd ten more in the Tone Curve :smiley:

How about the colour balance module?

Let’s take a look at the code.
Vibrance is computed from the amount (user input divided by 100) which is a value in [0,1]

  float sw = sqrt((in[offs + l + 1] * in[offs + l + 1]) + (in[offs + l + 2] * in[offs + l + 2])) / 256.0;
  float ls = 1.0 - ((amount * sw) * .25);
  float ss = 1.0 + (amount * sw);
  out[offs + l + 0] = in[offs + l + 0] * ls;
  out[offs + l + 1] = in[offs + l + 1] * ss;
  out[offs + l + 2] = in[offs + l + 2] * ss;

Can we go beyond 100%? Well as sw is smaller than 1, we can go up to 400% while still having ls >= 0.
But ls = 0 means all the image will become black.
Apart of that, I wonder why the sqrt is divided by 256. I don’t know the range of a and b of Lab in darktable, but if it is [-127,128], then the sqrt maximum possible value is sqrt(2*128*128) which is approximately equal to 181. So by dividing by 256, we get a value in [0,1/sqrt(2)]. So we could increase again the bound for the amount by a sqrt(2) factor.

So it seems that there is plenty of room above 100%, if it makes sense to have ls smaller than 0.75. In that case, we can change the slider range to allow values above 100%.
Also, please note again that I don’t know the range of a and b in darktable, so if someone knows it please don’t hesistate to tell us, as it influences the second computation (i.e. how large is 256 compared to the maximum chroma we can get) :slight_smile:
Hope it can help :slight_smile:

2 Likes

it is [-127,128] as you have suggested.