27
\$\begingroup\$

See: What's the difference between saturation and vibrance in Lightroom?

In a nutshell, Adobe's Vibrance is a "smart" color adjustment that increases saturation selectively, leaving skin tones and other saturated colors alone.

I'm curious if there's any equivalent in Gimp.

I've found a couple of plugins and scripts that use the same word "vibrance", but in everything I see, they don't mean the same thing. Usually, it's "super-saturation", as in this script, which claims it's an "implementation of a 'digital velvia'. I'm not looking for that. The Adobe feature seems to be a more subtle (and therefore more useful) tool for photo editing.

If nothing exists, is there a convenient (or even less-convenient) way to emulate it?

\$\endgroup\$
5
  • 1
    \$\begingroup\$ "Vibrance" is just a word Adobe chose, it doesn't have a specific meaning in this context, like saturation does. \$\endgroup\$
    – Matt Grum
    Commented Mar 3, 2011 at 11:44
  • \$\begingroup\$ @Matt Grum -- obviously. And Adobe's use doesn't really match the plain-English, which is why it's hard to Google for an answer. \$\endgroup\$
    – mattdm
    Commented Mar 3, 2011 at 12:20
  • \$\begingroup\$ I hadn't heard of the EG Vibrance script until you mentioned it here. After playing with it a bit, I'm surprised you don't find it subtle enough. At its default settings, it seems very subtle to me. It's also set up for easy fine-tuning through layer opacity. \$\endgroup\$ Commented Mar 4, 2011 at 6:35
  • \$\begingroup\$ I'm not familiar with what color vibrance exactly is, but if you need to manipulate saturation curve without any intermediate steps like de-/re-composing to/from HSV and so on, try out this gimp plugin - saturation equalizer. There are also same examples in the link. \$\endgroup\$
    – user7967
    Commented Jan 5, 2012 at 22:19
  • \$\begingroup\$ Not directly answering the question, but did you give a try to darktable? It does have a vibrance tool which seems similar to what Lightroom is doing, and if you're looking for a Lightroom equivalent, then darktable comes closer to that than Gimp. \$\endgroup\$ Commented Mar 27, 2017 at 20:00

5 Answers 5

29
\$\begingroup\$

If Matt's answer about the nature of vibrance is correct (and the Adobe documentation agrees), you may be able to obtain a similar effect in GIMP. However, I don't have any Adobe software, so I can't judge how closely this actually matches Adobe's effect.

Use Colors -> Components -> Decompose, decompose to Hue/Saturation/Value or Hue/Saturation/Luminance. Select the Saturation layer and use Curves to boost the saturation of the unsaturated parts of the image. (That is, the middle grays of the saturation layer. You may want to avoid boosting the saturation of the very darkest, least saturated parts of the saturation layer, because unexpected color casts can happen in areas that are very close to a colorless black, white, or gray.) Use Colors -> Components -> Recompose to apply the change to the original image.

That's pretty clumsy compared to using a slider, and it doesn't offer any smarts about skin tones, either. It may be possible for someone familiar with writing GIMP scripts (i.e., not me) to streamline and improve it, though.

Here's a photo I tried this method with. I tried to get about the same increase in saturation in the grass with both the ordinary saturation control and by using curves on a decomposed saturation layer. You can see that in both adjusted pictures, the grass is much more saturated, but that the simple saturation control also puts the reds in the fence and in the dogs' fur way over the top, where the curves method didn't.

enter image description here enter image description here enter image description here

\$\endgroup\$
0
16
+200
\$\begingroup\$

Matt specifically asked:

whether the Adobe feature does anything special with skin tones

I've always thought it did, and Adobe come right out and say it does. But I wanted to test it before saying so. Here's the test I did: I took our standard calibration print, which was specifically built to cover a wide range of skin tones:

Original

And I gave it first a +100 saturation boost in LR3.3, just to see how bad it would look:

+100 saturation

Then I undid that and gave it a +100 vibrance boost instead:

+100 vibrance

(you can (AND SHOULD) go see them all big.)

Based on that experiment, I do think vibrance gives skin tones a little bit of special dispensation. Now, Matt then followed up with:

and how to recreate that generically.

I gotta tell ya, I'm an software engineer, and was a hard core Gimp user for a very very long time... and this had me stumped for hours. But here's a best guess at how you could accomplish it:

  1. decompose the image into HSV layers in a new document.
  2. In your main document, create a new layer, I called it "faux vibrance", set it's type to Saturation.
  3. on that new layer, create a mask
  4. go back to the hsv layers document you created, select the saturation layer and copy/paste that layer into the faux vibrance layer you created in step 2.
  5. go back to the hsv layers document you created, select the hue layer and copy/paste that layer into the MASK on the faux vibrance layer you created in step 3.
  6. go into the "faux vibrance" layer and apply a curve to it, the other two answers talk about how to curve it. Personally I think this is a space for lots of trial and error, and there will be different curves for different images.
  7. on that layer, you now have what LOOKS like a saturation layer, but it's not usable with the Gimp's saturation layer control as is. Why? because every pixel on there has (roughly) the same saturation value. (5-8 in my experience.) Gradient map to the rescue. Set your foreground color to 0 saturation (black works well) and your background color to 100 saturation (I did red, but you can pick any hue, as long as sat is 100). Now select the "FG to BG" gradient and apply the gradient color map to the layer.
  8. go into the "faux vibrance" layer's mask and tone down the hues you don't want to be adjusted. Caucasian skin tones for example all appear to cluster around 340-40. So those areas of the mask you're going to want to drop down "pretty low", everything else, you're going to want to push up to 100%. (I wouldn't go as far as a one bit "on or off" mask, I would feather it around the transitions, but not very much.) Again I suspect every image is going to benefit from a unique mask here, but I would probably create a custom gradient, then apply it with a gradient map. (to test this, I just did a simple, ugly, hand painted mask with two colors: white and 40% grey (V=15).) It was really surprising when I looked at the Hue layer just how OBVIOUS the skin tones were. The areas of the image that are skin were amazingly obvious on that layer.

That will give you the basic setup, once you have this working, the opacity slider on that layer is your "vibrance" control. To demonstrate what you'll end up with, here's a short screencast I made playing with the faux vibrance layer with an image of my son.

\$\endgroup\$
2
  • \$\begingroup\$ Awesome, thanks. I can't award the bounty yet, but I'll be amazed if someone comes along and tops this. :) \$\endgroup\$
    – mattdm
    Commented Mar 5, 2011 at 21:01
  • \$\begingroup\$ Based on this, I've added "vibrance" to my list of photography-related features missing from Gimp. I think even with your process for doing something similar, it still counts as "missing". photo.stackexchange.com/questions/556/… \$\endgroup\$
    – mattdm
    Commented Mar 5, 2011 at 21:12
4
\$\begingroup\$

If you are comfortable with writing GIMP scripts, you can modify the script provided in your link, to do the following operations:

  1. Convert the RGB to HSV.
  2. Transform the S plane with an exponential transform (similar to Gamma correction, but with exponent <1). This will enhance low saturation values while keeping high saturation values.
  3. Convert back to RGB.

UPDATE: Just saw @Lyman Enders Knowles' answer. This is basically following the same steps programmatically.

\$\endgroup\$
0
\$\begingroup\$

Based on the your brief description of what Vibrance does, I'd approach this in one of two ways in GIMP.

  1. Make a selection that excludes skin tones, shrink and feather than selection if need be, and apply saturation adjustment excluding that selection. This is probably the simplest, but it would depend on how good you are at making selections (among other tools, you can select by color).

  2. Using the Hue and Saturation adjustments, adjust different colours separately, applying next to no adjustment to the "red" colour. Increase overlap between colours to 75% or so to avoid harsh edges. This would be good if you want to increase saturation of all colours except for red.

You can also do color/saturation adjustment in a non-destructive way by creating a new empty layer set to "Color" overlay mode and a lowish opacity, then using the airbrush tool with a large soft brush gently to just paint in some colour. Or to do it more indiscriminately to all colours try the "Saturation" overlay mode and just painting in pure red (or green or blue, makes no difference as long as it's saturated). You can use the eraser tool to gently reduce the effect in certain areas.

\$\endgroup\$
0
\$\begingroup\$

using the saturation native saturation tool in gimp you can select the colors you want to boost it is a lot simpler than the methods mentioned above and as far as I can tell does a pretty good job of emulating the vibrance adjust in photoshop

\$\endgroup\$
1
  • 2
    \$\begingroup\$ Can you elaborate on this? Which colours would need to be selected to mimic the effect of the 'Vibrance' slider? \$\endgroup\$
    – user456
    Commented Aug 25, 2015 at 15:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.