Help: How to achieve "Vibrance"?

Hi, it is really appreciate if I can pick the wise brains of forum users.

My one of favorite photo retouch app has “Vibrance” filter.
I would like to achieve that by G’MIC.
What kind of filter is fit for this effect?

(I don’t know what “Vibrance” do actually.
Maybe, keeping mid saturation range and control high saturation range only?
Look below example. The eye, lake, man’s shorts and green vegitables, those are keeping saturation mildly.)

and I would like to achieve low vibrance.(keep mid, bleach low and high saturation. keep shadow)

The purpose of “vibrance” is to deal with the scenario where high saturation reduces colour detail. This is particularly noticeable in faces where detail and saturation have to fall within certain parameters to be realistic and attractive.

The idea is to suppress the increase of already highly saturated areas from becoming clipped or too similar in value[1] while pushing the colourfulness of lower end. Typically, applications use the HSV (let’s call it) family of models.

What you need to do is separate the S channel and apply an inverse mask to it so increases in saturation affect the already saturated less. In the reverse direction, use a normal mask to reduce the effect on already unsaturated colours.

[1] Note: when I use the term “value”, I mean the numerical value of the saturation channel; not capital V value. Try not to be confused by my choice of words. :wink:


I will try to make those masks and apply to my works.
Thank you for detail analyzed information!:pray:

I have run out of time but I would recommend using the following filters:

  • Blend [Fade] (GUI) or blend_fade (CLI)
  • Decompose Channels (GUI) or see reference for CLI related commands
1 Like

This is something I looked into before. There’s very little implementation on this. I will have to call @aurelienpierre in hope that he has more information.

There’s literally no open-source correspondent to Vibrance. The ones that I can access are closed-source, and I will not touch these without permission.

I searched github for vibrance. Nada. Zip. Nothing.

Nada is too absolute. Sure there is. However, I am not sure whether we should do Vibrance as commercial entities do it. It seems ad hoc and trying to solve/defend a poorly-developed/dated understanding of Saturation, which both Aurelien and I would hate. We can do much better.

That said, it may not be in the interest of the user; there will always be that tension between what the user wants and what they probably should want. Hence, I am more interested in giving people the tools with which to explore this notion of Vibrance, which is what I have begun to do above.

This… bothers me in a very general way.

We should never judge what the user would like to have, even if it seems to be completely wrong.
He may still have valid reasons.
The probability that we do not understand his reasons is actually greater than the probability that his reasons are actually dumb.

In general, keeping some modesty and not always thinking we know everything is desirable.
(unfortunately, this is what Aurélien has difficulty doing IMHO).

Note also that the advantage of being an open-source developer is that I’ll never have to force myself to implement something I think is useless or stupid :slight_smile:


I’m not sure to understand this, the saturation channel (or chroma channel for lch) “is” the mask, then just increase saturation globally.

Thank you! actual filter suggestion is huge help.:heart:
(I was about to make masks by the normal paint software to make myself understand, for the first)

And, if I touched something sensitive matter, I apology.

1 Like

The definitions I have found for vibrance seem to be a little vague. However I have sometimes found a need to be able to adjust the saturation independently in areas of high, medium and low saturation. I created a GIMP plug-in to achieve this. It occasionally proves useful.


I do not think there is a need for an apology.
I understood your question as “what exactly does vibrance do?”, which is perfectly valid - if and how you apply any effect, is up to you.

@afre and @David_Tschumperle sparked an interesting discussion, though.
I personally would phrase something like

to “… what they really want.” - because

How much a developer follows those, is of course up to them, but doing user support myself, I often find interesting ideas even in seemingly strange concepts that sometimes feed back to established concepts (@afre If you think this is worthy of its own topic, feel free to do your admin magic :slight_smile: - otherwise, sorry for being a bit off-topic.).


It sounds cool. can I use that plug-in?

The plug-in can be found at: High, Medium, & Low Saturation Area Plug-in - GIMP LEARN along with a brief write-up on its use.

Comments, criticisms and suggestions are always welcome.


@David_Tschumperle Don’t worry, I always side with the user. See my track record in the forum.

I was using hyperbole to point out there is usually a difference of opinion. Perhaps, I didn’t make that clear. What I did make clear was the desire to empower the user to achieve ideas.

Even that could be misunderstood. Fortunately, on the forum, I get the chance to explain myself, which I hope I am good at doing. No need for a new thread.

Yes! Perhaps, that is all @makkkraid needs. Let us know!

1 Like

The pseudo method may need work shopping.

The characteristic of vibrance is to limit saturation increases in the most saturated areas to preserve colour resolution. Conversely, when dialing down saturation below normal levels, a normal saturation mask would make sense, since we want to preserve colour in the shadows.

In general, vibrance retains some semblance of colourfulness no matter what. That is why we see colour in low and high vibrance. As stated in the responses to this thread, there can be many different approaches to the actual implementation. @david’s is one of them.

1 Like


You are, and also important: you encourage others to participate :slight_smile:

1 Like

Seems like a gap in the existing g’mic GUI filters to me… I had a look, and although there are quite a few which do saturation related things I have doubts they would behave the same way.

Might be interesting to make such a filter, if somebody has the will and time :slight_smile:

Edit: btw, if you provide separate before/after images it can be easier to discover the transform. For example, whether there are non-global calculations.

I think it might be as simple as multiplying the saturation channel in HSV, perhaps in linear RGB.

gmic image.jpg srgb2rgb rgb2hsv sh 1 mul. 0.8 rm. hsv2rgb rgb2srgb

Ops! Yep for vibrance the inverted saturation channel is the mask.

That lower the luminosity. See here:

But, I do like the idea of modifying chroma/saturation. It might be our best chance to get vibrance.