Getting Around in GIMP - Skin Retouching (Wavelet Decompose)

Tuesday, December 6, 2011


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

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! ;)

Finally, if this tutorial has been helpful at all, please consider visiting an ad sponsor (it's like donating without actually doing it!). If not, then just say hi in the comments! I always love hearing feedback from folks.

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

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

Getting Around in GIMP - Contour Painting

Wednesday, November 2, 2011

Similar to using dodging and burning is something I like to call "Contour Painting". It's basically dodging and burning (d&b), but with an eye towards contours of the subject in a photo. I will use this very often in shots with skin, and a great example of this would be a nice cheesecake pin-up style image!


Lovely pin-up pose! (mouseover to see the final result)

First off, I want to thank Evolutions Photography for graciously allowing me to use this wonderful image as part of my tutorial. The model is the lovely Ariel Fulmer (Arielita on ModelMayhem). Make up artist is DmarieBelleza, and the hair stylist is Anna Marie De Almeida. I originally came across this image in the ModelMayhem Digital Art & Retouching Challenge forum in this thread.

The rest of my GIMP tutorials are all listed here: Getting Around in GIMP
If you want to retouch the skin before contour painting, see this tutorial:
Skin Retouching (Wavelet Decompose)

Planning

For the most part, the lighting in your image should already indicate how the major contours of your subjects are lit. This should be the baseline by which you begin enhancing those highlights/darks to begin adding shape. Remember - you will usually want to approach this with a light hand at first.

You should also have an idea of how strong you want the effect to be. If it's highly exaggerated it tends to look more like a mannequin or illustration in some cases, if it's subtle it can nicely highlight those portions of your images. If I am using it on a more natural image I will use it lightly on faces and to slightly enhance the shapes of interest (bare skin or interesting textures/folds in clothing).

With an image like this pinup, I want to push things to be more exaggerated for a very stylized look (see this search on Vargas for examples of what I am aiming for).

Looking at Contours


The trick to this method is an understanding of where the light is primarily coming from in your image, and what the shape of the objects are. This is best illustrated in images with a single light source (but can be used on just about any image), as you can easily tell where the highlights are on an object.

What you want to notice is: what is the shape of your object, and how do you want to enhance it in your final image?

Bonus! At the end of the tutorial is a link to the GIMP file I used while making this tutorial.

Dodging & Burning

The basic premise behind dodging and burning (d&b) is to manipulate the exposure in certain areas of a photo. In the old days we would actually do this on an enlarger by using something to limit the amount of light hitting our print (dodging), or by masking other areas of a print to allow extra light to pass through on certain portions (burning).

In the digital realm, GIMP has a specific Dodge / Burn tool for this. It is nice to quickly touch up an area, but works destructively on your image (it alters the pixels of the underlying image without a means for easy adjustment). We can achieve the same effect (mostly) by using extra layers set in Overlay (or Soft Light) blend mode.

With a new layer over our original image in Overlay mode, we can then paint with white and black values to selectively darken or lighten the areas we want. It's far easier to show this process rather than explain it, so on we go!

Set Up

The nice thing about this approach of using Overlay layers is that you can leave your base image underneath all the layers for different manipulations (like color changes), without affecting your d&b work.

Add a New Layer (Shift + Ctrl + N or Layer → New Layer...) to your image above any existing layers.

Make the "Layer Fill Type" Transparency.

I will usually name the layer something descriptive ("Legs" in this case) so I know which layer does what. This is helpful because you may use differing amounts of blur later for different regions.

Change the layer blend Mode to Overlay.

Now we are set up to begin painting over our image.

Contour Painting

This is where you want to pay attention to what the light is doing to the subject of your photograph. We'll start with highlighting portions of the image we want to pop a little bit (this is basically a "dodging" action).

The models legs are really the stand-out portion of this image, so we will start there. Here are the legs before anything is done to them:


Our original image.
From this view I can determine that I would like to highlight the shape of her legs, and perhaps enhance the volume a bit.

To do so, I will highlight the legs to exaggerate the lighting as it comes from directly in front of the model (notice how the center of the legs are well lit, with a fall-off of light as you approach the edges).

If you look closely, you'll see that the contour/shape of her leg is well defined by the light hitting the front. That is the guide to where we are going to paint on the highlights (dodging).


Choose your favorite painting tool, and set your foreground color to White. Remember - painting on this Overlay layer means that white will lighten, black will darken, and middle gray will do nothing to the underlying layers.


Painting on the contours.
I like to use the Paintbrush tool with a Fuzzy Circle scaled larger to allow me to lay a big stroke of paint at first.

Now paint white onto your "Legs" layer following the contours of her leg.

I don't have to be pixel-perfect just yet, because I am going to be blurring this white overlay in a moment to soften up those edges. I just aim to get the highlights along the most important areas.

This should get your roughly to where you are wanting to go.



After applying Gaussian Blur (88px radius).
Mouseover to see the Dodge Layer.
Now I apply a Gaussian Blur to the "Legs" layer to feather out the effect even further. This smooths out the transition, and makes it all look just a bit more natural.

The blur radius depends on the image size and painting size, but in general I try to make it large-ish. In this case it was 88px.

Now those legs are looking sort of shiny!

We could stop here, but to exaggerate the effect even further, we can use burning to cause the edges of the legs to drop even darker than they already are.



Painted and blurred "burning" along the edges.
To begin burning the edges of those legs, I'll add another new transparent layer to the image in Overlay mode. This time I'll name it "Legs Dark".

I'll keep using the same brush, but now I will change my foreground color to black (or any other value darker than gray, to taste).

I will now paint (burn) with a fuzzy brush just along the outside edges of the leg, following its contour again. I don't usually brush right along the edge, but rather just outside so I just kiss the edges with a little fuzzy black.

I sometimes apply another Gaussian Blur to the dark layer (this is highly subjective and up to you). In this case I did apply the blur - 88px again.


After erasing the burn layer from other objects
(like her left foot).
In places where the foreground leg overlaps the background leg, I will then go back and use the Eraser Tool to remove any unwanted burning from the background or other objects (the background in this image is white, so it makes it a bit easier).

Notice the models left foot is now not as dark from spill-over after I erased the burning layer from it.

Also notice that I have only done the right leg at this point. When multiple areas I am burning overlap, I will approach each one on it's own layer to isolate the work I have to do. So to do her left leg, I would create another transparent overlay layer just to work on her left leg.


Burning the left leg, after cleaning up with eraser.
After repeating the same procedure with a new burning layer, the left leg looks pretty good.

This was done on another Legs layer ("Legs Dark 2" in this case), which allowed me to separately control the amount of spillover with erasing, and will also allow me to independently control the opacity of each leg (to give me even more control over the final result).


That is basically all of the steps in what I call "Contour Painting". To finish this image off, I would basically repeat all of these steps for each area of interest where I want to paint and enhance the shapes and contour of our model.


The body with no contour painting yet.
To keep the overall shape highlights consisten, I will continue thinking in terms of highlighting the peak areas of skin (basically to keep a consistent look with the legs).

I will apply highlighting to her arms and portions of her face next, as well as the exposed portions of her stomach.



Contour painted highlights on her body.
A couple of new layers and some more contour painting produces this.

Again, a rather high-ish radius was used for the Gaussian Blurs in these cases (~66px this time around - and even smaller when doing finer details like her fingers).

The nice thing about using many layers for these operations is that I can now control the opacity and strength of the effect in different regions independently.


Finally some burning along the contours of her body, along with some added highlights in the hair.



After fiddling a bit more and then adjusting each layer's opacity until I got something I liked, we end up with this (mouse over the image to compare it to the original):


Mouse over the image to see the original.

There is still more yet to do to call this a finished image, as we haven't even touched color effects or pushing the background to pure white, but those are tutorials for another day.

Remember, I used this type of image because we can approach it with a heavy hand and still get results that look good. Also, try thinking about this technique in different terms that aren't so large. You can use the exact same procedures on features that are much smaller to adjust the local contrasts in whatever scale you'd like. (For instance, if I could have spent time dodging and burning every little fold of cloth in her top, or been more specific with her hair).

If you've followed me all the way down here, I have a treat for you: My full .xcf.bz2 GIMP file that I used to create this tutorial so you can fiddle with it yourselves!

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



I know this tutorial has been long, but hopefully some people will find it useful in some way. After practicing a bit you might find it a regular part of your workflow! If you think it's been helpful, consider scrolling back up and hitting the "Donate" button (or maybe visit an ad). It helps feed my caffeine addiction!

This basic method can be used on just about any image that you take to give you even more control over the final results. Similar results could be obtained using local contrast enhancements, for instance, but this method really lets you decide where those enhancements could best be targeted.

I have found this also works to great effect on children's skin (which should appear smooth and soft anyway), and I will usually do some sort of contour painting on most of my images (even if it's just a tiny amount). Here are just a couple of other examples where I used this same technique:

Leila Being Devoured by Beverly
Leila Being Devoured by Beverly, a photo by avhell on Flickr. (Mouseover to see original).

Whitney by avhell
Whitney, a photo by avhell on Flickr.


Lauren by avhell
Lauren, a photo by avhell on Flickr. (Mouseover to see original).

Mobile Gothic
Mobile Gothic, a photo by avhell on Flickr.

DIY Ringflash Tests

Wednesday, October 12, 2011

I recently had a party at my house for some co-workers of my wife, and managed to get a few of them to let me shoot some quick photos using my DIY ringflash. These are the results.

Whitney by avhell
Whitney, a photo by avhell on Flickr.

Considering that I constructed the ringflash from 2 bowls bought at a dollar store, and an old plastic cup, I'm pleasantly surprised at the results. I still need to place diffusion material over the front to help soften the light a bit, but the overall effect is pleasing. I'll have a DIY tutorial on how I built the ringflash, as well as my softbox shortly.

To Randi
To Randi, a photo by avhell on Flickr.

The rest of my DIY ringflash tests are here in my Flickr set.

Getting Around in GIMP - Luminosity Masks

Friday, October 7, 2011

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

There was a recent thread on the GIMP users forum at Flickr on how to generate luminosity masks (and use them I suppose). I figured I would chime in a bit here with how I generate and use them in my own workflow. There is an older and interesting discussion about Luminosity Masks by Tom Kuyper that was referenced in that thread, and this is a translation of sorts for GIMP users that want to accomplish the same thing. The original tutorial by Tom is here: Tom Kuyper's Luminosity Masks Tutorial

The basic premise of luminosity masks is to allow you to modify elements of a layer masked to a specific region of luminosity (or value). If I wanted to control the colors in the shadows of my image without modifying the mid tones or light tones, then this is the method you want. Similarly you can adjust just the mid tones, or light tones without affecting the other regions as well.

If you are new to layer masks (or need to brush up), I recommend you head to Getting Around in GIMP - Layer Masks to brush up first, then come back.

Some Theory


What we'd like to accomplish is to produce masks for our image that target a specific tonal rage (lights, mids, or darks). This way, we can make adjustments to the image on a layer, and to use the masks to only apply those changes to certain areas (based on luminosity or value). The nice thing about using our image as the base for the mask is that the tonal ranges in the image will provide a smooth transition between the different layer masks.

Even though you may want to modify some aspect of the lighter portions of your image, it will be hard to tell where that effect is applied as it fades to a gray or black. Don't worry if this sounds strange, it will become clear before long...

To illustrate what we want, I am going to create a simple image with a gradient that goes from full white to full black:


Lights Mask


Now, across this gradient we may want to make modifications, but restrict them to the lighter values. This is usually the simplest mask to create, and just involves making a desaturated copy of your base image (based on Luminosity). So, create a copy of your base layer, and run:

Colors → Desaturate

and check the box for Luminosity.

After doing this, my gradient image will look exactly the same. I'll normally rename this layer to something original and creative, like Lights. That's actually all there is to it! Let's see it in action, though, to find out how this helps us.

I'm going to create a new layer in my image filled with red, and I am going to turn the visibility off on the other layers. So now my image looks like this:


At this point I will add a layer mask to my red layer by Right-Clicking on the red layer, and choosing Add Layer Mask.... I'll usually just initialize the mask to White (full opacity), because I'll be changing it shortly anyway.

Then I will want to copy my Lights layer by activating it (Left-Click on the layer), and then choosing:

Edit → Copy.

Now just paste this into the layer mask on the red layer by activating (Left-Clicking) the red layer mask, then doing:

Edit → Paste.

This will give you a Floating Selection (Pasted Layer) on your layer window, and you can just Right-Click the Floating Selection layer, and choosing Anchor Layer. This will now paste your Lights layer as a layer mask, and you should now see this:


My Layers palette now looks like this:


Basically, we can now change whatever we want on the red layer, and it will only affect the lighter parts of that layer.

Darks Mask


We can produce another mask that will only affect the darker parts of our image by simply inverting the Lights layer. First I'll duplicate the Lights layer, then invert the colors on that layer:

Colors → Invert

To keep things straight in my head, I'll find an even more original and interesting name to rename this layer, like Darks.

To show the two masks being applied to my image, I'll create another new layer below the red layer, and fill it with a nice blue, then add a layer mask, and copy-paste the Darks layer into the layer mask the same way as above.

This results in:


My layers palette for this image:


The reason that they are not perfectly blended exactly in the middle of the gradient is due to the layer ordering on my palette (red above blue). What we are seeing here is that the Lights and Darks layer masks only allow the portions of their layer to show through according to the mask (red shows through the Lights mask, and blue shows through on the Dark mask).

Mids Mask


There is one more mask we can make from these Light and Dark masks, and that is a mask for the Mid tones. This is simply the difference between the Light and Dark masks, inverted:


Lights Mask


Darks Mask


Mids Mask - Difference between Lights and Darks, inverted.

To create this mask easily, just make visible your Lights and Darks layer, then set the one on top (Darks in my example) to layer mode: Difference.

Right-Click on the top layer, and choose New from Visible. Then, invert the colors on the new layer (and name it something interesting... say... Mids).


Darks layer set to Difference mode, then created a new layer from visible, and inverted the new layer colors to get the Mids Mask.

If we now take our image strip one step further and add a green filled layer, and apply the Mids mask to it, we have this:


Solid Red, Green, and Blue layers with all masks applied.

The layers palette:


There is one other thing that bears mentioning here, and that is the range that each mask allows through. The Lights mask you will notice went from pure white, all the way to black, with many shades of gray in between. If you wanted one of your masks to not affect other tones as much, you can simply adjust the mask levels to remove other shades.

For instance, the red layer above the blue layer in the example above showed red extending past the mid tones and into the darker tones. You could clamp each mask to only affect from mid tones to either Light or Dark by adjusting each layer masks levels. You would basically activate a mask, then go to

Colors → Levels...

And set the Input Levels Black Point to 128 (middle gray). This will make the Lights mask stop affecting anything right at the middle gray point.


If you do the same thing to the Darks mask, then each mask will stop affecting anything right at the mid-point of values (they won't bleed over into each other). If I do this, and hide the green layer, we'll see:


Lights and Darks mask clamped at the mid point to prevent spill-over.

Layers palette:


The main thing to take away from this is that you can create these masks, and then narrow the range of tonal values they apply to by adjusting their range (using Levels). This can then let you filter out specific tonal ranges in your image to modify, independent of other areas.

A good example to see this in action would be to try some... Split Toning!


Split Toning


In my opinion, this is probably the easiest way to ease into how Luminosity Masks should work. The basic premise behind split toning is that you want to color a black and white image using two different colors: one color for the darks, and another color for the lights. In my example below, we'll use this image from the Dauphin Street Beer Festival in Mobile, AL.:


Conversation in Hayleys on Flickr (insert funny caption in the comments!)

You can download this image from my Flickr photostream if you'd like.

Now, we need to make some artistic judgements with how we want to split-tone this image. In honor of teal & orange madness, we will use a teal color to tint the dark areas of the image, and a nice orange for the lights.

With our newfound knowledge of how luminosity masks work, this should be a piece of cake, right?

Let's create those masks...

  1. So load up your image, and duplicate the Background layer.
  2. Desaturate it using Luminosity. This is now your base Lights layer (might want to rename it for clarity).
  3. Duplicate this new Lights layer, and do Colors → Invert to invert it. This is your base Darks layer. Rename it to Darks
  4. This step is optional, but if you wanted to clamp the Lights and Darks layers to not overlap, on each layer of the two layers do a Colors → Levels, and set the black points to 128 (see above).
You should now be looking at a layers palette that looks like this:


Now you have your Lights and Darks masks. The next step would be to add some color to your image. How you go about this is entirely up to you, but I will walk through a simple example.

  1. Turn off all layers except your Background layer.
  2. Copy your Background layer twice (we'll use one for the cool dark tones, and the other for warm light tones). Name them something descriptive (I'm going to use "Warm" and "Cool").
  3. Now we need to tint each layer with the appropriate color. We'll start with the cool layer. You can tint this layer using any method you'd like, but for the purposes of this tutorial I'll use Colors → Colorize....
  4. Your Cool layer should have a nice blue-ish tint to it right away (if you can't see it, you may have to hide any layers above it). Let's get it more teal-like by changing the Hue to about 200 in the Colorize the Image dialog:
  5. Nice, but the entire image is now tinted teal. This is where we can apply the Darks layer mask to restrict the teal tint to the darker tones in the image only.
  6. Add a layer mask to the Cool layer (Right-Click the layer, and choose Add Layer Mask... - you can initialize it to white, we're going to replace it in a moment.)
  7. Select your Darks layer, and copy it (Edit → Copy).
  8. Now select the Cool layer mask, and paste in the Darks layer you just copied. Right-Click the new Floating Selection (Pasted Layer) and Anchor Layer to apply it. Your image should now change, and you'll notice that the teal tint is only applied to the darker tones in your image.
  9. Halfway there!
  10. Now on to the Warm layer! Select it, and again run Color → Colorize...
  11. This time we want to use a warmer color for the light tones, so set the Hue to around 20. Your layer should have a nice orange-y tone to it.
  12. Apply the Lights layer mask to the Warm layer. Right-Click the Warm layer, and choose Add Layer Mask..., again initializing to white is fine.
  13. Select your Lights layer, and copy it (Edit → Copy).
  14. Select the Warm layer mask, and paste in the Lights layer you just copied. Anchor the Floating Selection to apply it.

That's it! You should now notice that all the darker tones in your image have a cooler teal color to them, while the highlights will have a warm orange color. The separation of tones is all due to the Lights and Darks layer masks that you've applied:


Mouse over the image to see the original.

You could also go a step further here if you'd like and generate a Mid-tones mask as well for further experimentation! I know this has been long, but hopefully it's been helpful. I will write another post addressing how to further narrow the range of tones in your masks to specifically target even smaller sections of the image.

Feel free to ask any questions in the comments.