Vibrance too weak?

(pphoto) #1

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.


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

1 Like
(Alex Mozheiko) #2

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

(pphoto) #3

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’…

(pphoto) #4

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.

(Daniel Catalina) #5

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

(Mica) #6

You can also use the tone curve in LAB mode.

(Alex Mozheiko) #7

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:

(ph. weyland) #10

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