Contrast Masking

I found a technique for bringing out low-lights, towning down high-lights while keeping saturated color called contrast masking while reading dpreview forums. It works really well and decided to write a better tutorial on it than the rather quick and dirty found here

 

In this example I am using a rather extreme example of a badly lit photo, in the original the dark areas are completely invisible, after the contrast mask there is a marked improvement.

The technique is very simple, one that can easily be turned into a action. To start with open your image in photoshop. Once opened duplicate the background layer by using Layer->Duplicate Layer... option, call it Contrast Mask.

Once opened, desaturate it using Image->Adjust->Desaturate, you should now have something like this. Once desaturated turn it into a negative using Image->Adjust->Invert.

We have now turned it into a negative, making what used to be dark light and what used to be light dark. By overlaying this onto the original, we will bring out low-lights and take down high-lights.

Go into Layer->Layer Style->Blending Options... and set the Blend Mode to Overlay

At this point you should already see the impact this effect can have, for a better comparison click on the little Eye Icon next to the Contrast Mask layer to turn it off, this will reveal the original and give you a good indication of the change.

You will however notice certain areas of the photo where things arent quite right. This effect is countered by applying some Gaussian Blur to the negative layer. Usually anything between 10 and 30 pixels will do.

Select your Contrast Mask layer and choose Filter->Blur->Gaussian Blur. Experiment with the options till it looks natural.

In some photos you may notice more strange effects as a result of the blur, especially in areas of large contrast changes such as these:

By adjusting the Opacity of the layer you can counter this, its pretty much a matter of adjusting it to taste. In my case 49% was a good figure:

The final result looks much nicer than what we started with.

 

Leave a comment

Recent Entries

  • flashpolicyd 2.0

    I wrote a multi threaded server for Adobe Flash Policy requests, some background from Adobe:Since policy files were first introduced, Flash Player has recognized /crossdomain.xml...

  • Adventures with Ruby

    Some more about my continuing experiences with ruby, in my last post I saidthe language does what you'd expect and as you'll see in my...

  • New programming language of choice - Ruby

    I have fallen out of love with Perl some time ago, I cannot point to one specific thing about it that put me off, I...

  • On working from home

    I've not been posting much here, work has been incredibly manic the last while, especially I need to still finish off my SSO posts with...

  • Rework of puppet facts for /etc/facts.txt

    Previously I blogged a custom fact that reads /etc/facts.txt to build up some custom facts for use in Puppet manifests, well I've since learned a...

Close