Getting Around in GIMP - Skin Retouching (Wavelet Decompose)


Image courtesy of (and copyright) Kelly Ealy (mouse over for original).

I have looked around quite a bit for a good method in GIMP to smooth skin for portrait work. I did find a few tutorials, but they all were mainly concerned with using Gaussian blur with a layer mask to "smooth" the skin. The results were almost always less than satisfactory.

The rest of my GIMP tutorials are all listed here: Getting Around in GIMP

For more examples of this technique at work, have a look at:
my recent shoot with Mairi!

Want to see Wavelet scales as part of a complete portrait retouching workflow? Check here:
The Open Source Portrait (Postprocessing)

Then I found the Wavelet Decompose plugin, and the search was mostly over for me.


Hoodie by Erik Olsson (mouse over for original)

I thought it might be helpful to walk through the theory as I approach it for skin retouching/smoothing, and how Wavelet Decompose fits into my workflow.

The main point that I have noticed is that what most people mean by "smooth" skin really means, "smooth" tones. See, real skin has pores, wrinkles, blemishes, etc. In fact, it's those pores and wrinkles that add "character" to skin. The lack of these features in skin will instantly cause an image to look unrealistic to most eyes.


Martina by Erik Olsson (mouse over for original)

I am very much of the opinion that any modification to skin tones be as transparent as possible - ie: they should not be obvious or immediately noticeable. I personally try to be as natural looking as I can (to my eye at least). Of course, this is a highly subjective thing, and one mans natural is another mans mannequin.


Another mans mannequin.

That is the problem with trying to use a gaussian blur on the base image to "smooth" the skin. You lose a ton of detail and end up with a smeared looking mess. All in an attempt to either smooth the tones of the skin, or to minimize the appearance of pores/wrinkles. Many times, both to some degree. If only there was some way to be able to modify the tones of the skin separately from the pores and wrinkles (and separate again from blemishes or freckles).

Oh, that's right, I mentioned Wavelet Decompose earlier!

If you want to practice some of the things I will be talking about, Flickr user Erik Olsson has licensed both Hoodie and Martina as CC-BY-SA-NC. I'd recommend going to grab one of those images (because really, who doesn't like looking at pretty Swedish girls?). The first image was graciously provided by Kelly Ealy for demonstration here, and was offered on this Model Mayhem practice thread.

Wavelet Decompose

What the WD filter plugin will do is to separate your layer into multiples layers with different sized details on each one and a final residual layer with all the rest of the information. Each of these layers is set to recombine using the Grain merge layer mode, meaning that each layer is added to the previous one to build back up to the final image. This means that we can suppress data at a certain scale level to keep it from contributing to our final reconstructed image.

This is basically frequency separation on your image.

If you're not sure what that means, it might help to see it in action. We'll use a 100% crop from Martina above:


The base layer 100% crop.
Now, running Wavelet Decompose on the layer and leaving the default options the way they are, we get 6 new layers: Wavelet Scale 1-5 and a Wavelet Residual layer. Let's take a look at each layer to see what we get:


Wavelet Residual
This residual layer is what is left over after all of the detail scale layers have been removed. Notice that it represents the global contrast and colors in the image.


Wavelet scale 5
Wavelet scale 5 is the largest details layer in this example. From here on each of the subsequent scale levels down to 1 will only contain finer and finer details from the image on their own. Look carefully at her skin on her cheek here. You'll notice that individual pores don't really show up on this scale, but the overall skin tones show up more. If the skin is "blotchy" or uneven in tone, it will show up very noticeably on this scale. I have found often that this scale level will often impact the overall perception of smooth skin tones more than any other, and it is usually here that I will start my editing.


Wavelet scale 4
Wavelet scale 4 shows some more overall skin tones and texture with just a hint of the pores coming through. Between this scale level and scale 5 is where I do most of my work. Rarely do I need to modify any of the lower scales unless I am targeting specific blemishes.


Wavelet scale 3
Pores are beginning to really become obvious now at this scale. This would be the largest pores in her face, and this scale is the contributor for the largest size.


Wavelet scale 2
The mid-size of the pores are very clear at this scale. Finer features like wrinkles will also show up clearly on this layer.


Wavelet scale 1
It may be hard to see, but the finest details reside here. These are the smallest scale contributors to the pores and fine lines. Stray hairs will sometimes individually show up here as well. (You can make out her eyelashes very nicely in this scale level for instance).

What you want to remember is that each of the scale layers is set to Grain merge layer mode, meaning each layer will intensify with the layer below it, all building up down to the wavelet residual (which is in Normal blending mode). I mention this because if you wanted to remove features from one of the scale levels you can easily just set your foreground color to medium gray RGB(128,128,128), and anywhere you paint on a scale level will remove those details.

If you try this on your own, a good way to understand what is happening is to turn off all the layers in your image, then turn on each of the scale layers starting from the smallest (Wavelet scale 1), one at a time. This way you will be able to see what the contribution of each layer is to the final result.


Retouching skin (in practice)

So, how can we use this information to help us retouch our images? Well, there are a couple of things to keep in mind before getting started...

The number of scales you use will be dependent on your image dimension size, and the relative size of features in it. I don't have any rules to help you decide this, but increasing the number of scales will give you a larger number of smaller frequency separations to work with. If you're just starting out I recommend staying with the default of 5 scales until you are comfortable with this technique.

I personally try to use as light a hand as possible, to avoid destroying too much detail in the skin. A good rule of thumb is, if it looks right to you, then it's too much - make it more subtle.

So, using the Martina image from above, I will open the image in GIMP, and run:

Filters → Generic → Wavelet decompose...

Leaving all of the defaults will leave me with 5 wavelet scales and a residual.

Remember you can use Shift-click on a layers visibility to isolate just that layer to view.

I will often do this with the residual and scale 5 layer to get a feel for what types of objects lie in those frequencies visually.



Now I will leave all the layers visible, and will begin using the Free Select Tool to begin selecting a portion of the face that I want to adjust. I will usually try to keep similar-sized features together, and will also try to follow the contours of the face and light. Once selected, I will also feather the selection by a good sized radius (around 30px radius in this example).


Once I have a region selected, I will then activate the highest Wavelet scale I have (5 in this case), and will try applying a gaussian blur to that layer. Choice of a blur radius is arbitrary, but I'll usually try to blur enough to smooth out the tones on this layer, but not to completely obliterate them. I finally chose 33px in this example. Keep in mind that subsequent scales will also be blurred, and the effect is additive to the final image.


Gaussian Blur, 33px radius on Wavelet scale 5 (mouse over to compare original).

Now with the same selection still, I will activate the next Wavelet scale layer down (4 for me), and will apply another Gaussian blur here as well. I generally tend to aim for approximately 1/2 - 1/4 of the previous blur radius. I finally decided on a 13px radius here.


Gaussian Blur, 13px radius on Wavelet scale 4 (mouse over to compare original so far).

The thing to notice when working on these largest scales first is that the underlying tones of the skin will begin evening out. If there is blotchiness, liver spots, sun damage, etc. those features can be softened or removed without affecting smaller features like pores as much. If this were me, I would stop here and begin pixel-level dodging and burning to clean up other things to my liking.

But, since we are learning, let's keep going and try blurring features on Wavelet scale 3 to see the effect.


Gaussian Blur, 6px radius on Wavelet scale 3.

If we used an even bigger radius on Wavelet scale 3, the effects get a little jarring:


Gaussian Blur, 16px radius on Wavelet scale 3.

This is what I mean when I say a light touch is really best. The 16px blur on Wavelet scale 3 blew us right past nice, neutral retouching into mannequin territory (and I don't want to have to link another mannequin image).

What's nice about using Wavelet Decompose is that on each of the scale layers, a neutral gray (128, 128, 128) color will suppress that feature at that scale level (effectively removing it). This means that you can grab a brush with gray, and selectively paint over blemishes or features that you want to suppress. Instead of using a blur, I could have used a brush with gray, and painted on her skin at each level with varying opacity to suppress those features.

This gives you pixel-level control of features directly with a simple brush, and the fact that the layers recombine with Grain merge layer modes means that you can see the results of what you are doing immediately on the image.

Once I am happy with a region of skin, I will then select a new region to begin working on, and will follow the same steps outlined above to get a result that I like. I like to break up a face into different areas based on the light and skin features. For instance, I will usually work on cheeks and just below the eyes separately from the nose, chin, and forehead. It's really a personal preference rather than a rule, though.

Remember to zoom out and get a look/feel for the result from afar - sometimes you can get too zoomed into a region and not realize what is going on.

I've included the .xcf file with my selection still active from the examples above. It already has the gaussian blurs on scale 4 and 5 done (but not 3).

Download the GIMP .xcf.bz2 file of the example (2MB).
(Just save it and open it directly with GIMP)

Hopefully this has been helpful to some of you out there. With a little perseverance we can eliminate the use of globular gaussian blurs over entire images as a technique for mangling skin. This is a very powerful method of image manipulation and does have other uses as well - did anyone notice that Wavelet scale 1 is a really nice high-pass layer for your image? Bet you could use it for some nice sharpening if you wanted! ;)

Experimentation is key here! Don't be afraid to try things out!

Questions or feedback? Let's here about it in the comments.

Help support the site! Or don’t!
I’m not supporting my (growing) family or anything from this website. Seriously.
There is only one reason I am writing these tutorials and posts:
I love doing it.
Technically there is a second reason: to give back to the community. Others before me were instrumental in helping me learn things when I first got started, and I’m hoping to pay it forward here.

If you want to visit an ad, or make a donation, or even link/share my content, I would be absolutely grateful (and tickled pink). If you don’t it’s not going to affect me writing and posting here one bit.

I’ll keep writing, and I’ll keep it free.
If you get any use out of this site, I only ask that you do one thing:
pay it forward.


30 comments:

  1. nice work, a great example of this useful plugin

    ReplyDelete
  2. Wow, this is awesome, thank you for the detailed description!

    ReplyDelete
  3. Thank you very much! I hope it will be helpful to others.

    Remember - light touch! :)

    ReplyDelete
  4. thanks man from germany , you helped me alot to get through this plugin. great job

    ReplyDelete
  5. Glad it was helpful! If you want to do a German translation I'd be happy to put it up as well :)

    ReplyDelete
  6. Excellent. I got it now...Thanks!!
    Dan T.

    ReplyDelete
  7. I was aching to learn how to do this properly. Thank you so much for covering this!
    T. Hernz

    ReplyDelete
  8. How to install this plugin in Ubuntu Gimp 2.6?

    Thank you very much

    Francis
    francisgan9@gmail.com

    ReplyDelete
  9. Awesome! Thanks for the great tip. I was looking for something like that for very long.

    Francis Gan, just install gimp-plugin-registry. You will find it under Filters -> Generic then.

    ReplyDelete

  10. It's also a great way to "shave"!
    You just need three levels, depending on the resolution, scales 2/3 tend to have the most stubble.

    ReplyDelete
  11. What do you mean when you say you start dodging and burning at pixel level? You mean really zoomed in?

    ReplyDelete
    Replies
    1. I mean to start manipulating tones down in specific areas at a higher zoom, yes. Getting in close to work on very small/specific portions of the image that you want to manipulate.

      These techniques work on a much larger portion of the image (the entire face or a region of it, for instance), so they make changes across a larger area.

      A good example would be to work on crows feet wrinkles around the eyes. This is something I would manually touch zoomed in to that specific area.

      Does that make sense? :)

      Delete
  12. Fantastic tutorial for the use of this very fine plug in.

    This is just the very thing I've been looking for, natural looking retouching without the hard work of pixel level work. (Other methods leave very undesirable porcelain looking faces!)

    Already came across my mind as a desirable high pass filter for sharpening and then read it at the end of the article :-)


    Well done and thanks.

    Victor

    ReplyDelete
  13. I found this article some time ago and applied it to some of my images which came out really nice with this method. I have exactly the same opinion when it comes to natural skin retouch, so you showed me a really powerful method to accomplish that. Thanks really much for sharing this in-depth article ;)

    ReplyDelete
  14. What an amazing tool! I've just been practising and the results are spectacular.

    I have been getting some good results using despeckle with its two options unchecked instead of gaussian blur for the smoothing. My best discovery however is using "Heal selection" under Enhance to lessen / remove large creases from around the mouth and eyes.

    ReplyDelete
  15. I've done this, but instead of gaussian blur, I tackled individual blemishes with the smudge tool and a soft round brush. I noticed you mentioned in the tutorial you felt the effect was overdone, and on the finer, more detailed layers, perhaps a smudge brush dabbing can be preferable to an overall gaussian blur.

    ReplyDelete
    Replies
    1. This is absolutely a great way to proceed, especially around prominent blemishes that you want to modify. With GIMP 2.8 I've found that the brush dynamics and size controls allow me to use the blur tool to greater effect on spot areas now. I'll also sometimes sample for the clone/heal brush from other areas on the same wavelet scale to retain similar texture.

      Delete
  16. Some of us like the mannequin look ;P but for when it's not appropriate, this is Key. Thanks from a gimp newbie!

    ReplyDelete
  17. Even now, this plug-in is working wonders! It just helped me save a good number of images I had no idea how to correct without creating either a mannequin, or a fuzzy monster. Thanks for this tutorial!

    ReplyDelete
  18. Thanks for this information - I've been a hobbyist for years but never retouched portraits much. Without even trying very hard (just a sloppy first attempt with using an imprecise laptop touchpad!) I was able to get results nearly as nice as yours above. Really useful, and thanks.

    ReplyDelete
  19. Your tutorial is a Godsend! After reading it, I've been using the tool for the last couple of months to achieve very subtle enhancements to skin texture and quality.

    I think details are our friends. They help give a sense of realism. For that reason I try to avoid the mannequin look as well as the "fuzzy-faced" (or "peach-fuzzed") look of over-blurring and airbrushing. So, sincerest thanks for this tutorial, and thanks for the poignant suggestions of subtle skin retouching methods.

    ReplyDelete
    Replies
    1. Thanks for the kind words, RC!

      Yes, it is absolutely the details that will make or break the image in my opinion. Treat them nicely, and they will pay you back big time! :)

      Delete
  20. Thank you so much for all the insights. I found your tutorials looking for some hints on retouching and spent the last couple of hours reading in pure fascination. I've been working with GIMP for long years, but you opened up completely new ways for me to enhance photos without "smearing" them. Reminds me a lot of the old times when this was done in the darkroom with smelly chemicals and a stop watch :-)

    So once more: thank you very much and please keep up the great work.

    ReplyDelete
  21. Amazing! I think I just found my new favourite blog.

    ReplyDelete
  22. Good tuto! I`ve trying to follow your tuto, but the original photos are not in mediafire anymore, so Could you please upload them?

    ReplyDelete
    Replies
    1. There aren't any photos in this tutorial that are hosted at mediafire. Which ones do you mean specifically?

      Delete
  23. Could someone please thoroughly explain to me how to install this on a windows computer? Any help at all would be greatly appreciated

    ReplyDelete
    Replies
    1. You could try using the gimp-extensions project to get it:
      https://code.google.com/p/gimp-extensions/

      You could also just pickup a precompiled GIMP (with many other great plugins) from Partha:

      http://www.partha.com

      Delete
  24. I have done with retouching task in photoshop till now and now getting interested to try my hand on GIMP also. So collecting all helpful resources like above, thank you.

    ReplyDelete