Page 1 of 1

Tutorial: Frequency Separation for portrait retouching

PostPosted: Mon Nov 26, 2012 9:07 am
by photodrawken
I recently came across some articles extolling the virtues of the "Frequency Separation" technique for retouching skin in portraits. The advantage of that method is that by having the colours and the details on separate layers, the modifications can be done quite easily and quickly while preserving the texture of the skin -- the final result doesn't look like a rubber mask was painted on the face.

All the articles used Photoshop, and I couldn't find any info for doing the same thing in PSP. So, I experimented and here's what I came up with. (N.B., this is for an 8 bits/channel image)
Here's the original image:
Image
Uploaded with ImageShack.us

1. Duplicate the Background layer, and name the new layer "Colour".
2. On that "Colour" layer, use Adjust...Add/Remove Noise...Median Filter. Use a large enough aperture so the blemishes and uneven skin colours just begin to disappear:
Image
Uploaded with ImageShack.us
3. Copy the blurred "Colour" layer, and paste it in as a new image -- it will be "Image 1", e.g.
4. Use Image...Negative Image to reverse the colours of "Image 1":
Image
Uploaded with ImageShack.us
5. Back in the original image, turn off the visibility of the "Colour" layer so that only the original, sharp Background layer is showing.
6. Use Image...Arithmetic with these settings:
Image #1: your original (sharp) image
Image #2: Image 1 (the blurred, negative image)
Function: Add
Channel: All channels
Modifiers:
Divisor: 1
Bias: -128
Clip color values: selected
7. A new image ("Image 2") will be created, looking like a grayscale high-pass image:
Image
Uploaded with ImageShack.us
8. Copy "Image 2", and paste it into your original image as a new layer at the top of the layers stack, naming it "Texture".
9. Set the blending mode of that new "Texture" layer to "Overlay".

Your layers will look like this:
Image
Uploaded with ImageShack.us

Now you can use various techniques on the "Colour" layer to smooth out the colours of the blemishes and further even out the tones of the skin. I mostly used the Makeover Tool's "Blemish Fixer", but also selected some areas with the Freehand Selection Tool set to a feather of 8 pixels and applied a Gaussian blur of 8 pixel radius. Dodging and burning also came in handy.
The "Texture" layer is used to remove the last traces of some of the blemishes. I used the "Blemish Fixer" for that.
My quickly done final result:
Image
Uploaded with ImageShack.us

Of course, you can go nuts with the technique (as explained in several of the articles found on the Web) :wink: .
Enjoy!

Re: Tutorial: Frequency Separation for portrait retouching

PostPosted: Wed Nov 28, 2012 3:17 am
by teknisyan
Wow..thanks for the tip! :)

I usually just edit the photo without using layers..

Re: Tutorial: Frequency Separation for portrait retouching

PostPosted: Wed Nov 28, 2012 7:50 am
by photodrawken
Abiel Corel NA wrote:Wow..thanks for the tip! :)

I usually just edit the photo without using layers..

You're welcome!

It seems like overkill for most scenarios, but for smoothing out harsh shadow edges (like the one on the photo right side of her face), or large areas of makeup (as on her cheeks), it can't be beat.

One thing I've subsequently changed in my use of the technique is to use a Gaussian blur instead of the Median Filter -- that Median Filter smears the image a bit too much for my liking....
Image
Uploaded with ImageShack.us

Note the more accurate highlight shapes in the eyes. For this example, I finished it with some sharpening using an Unsharp Mask.

Re: Tutorial: Frequency Separation for portrait retouching

PostPosted: Mon May 27, 2013 5:45 pm
by caspia1
Excellent!
Sorted it out fine, now.
many thanks

Re: Tutorial: Frequency Separation for portrait retouching

PostPosted: Mon May 27, 2013 7:27 pm
by photodrawken
Glad to help.

Nice to hear the technique is also relevant for B&W photos.

Re: Tutorial: Frequency Separation for portrait retouching

PostPosted: Fri Jun 21, 2013 7:58 am
by simpak
photodrawken wrote:I recently came across some articles extolling the virtues of the "Frequency Separation" technique for retouching skin in portraits. The advantage of that method is that by having the colours and the details on separate layers, the modifications can be done quite easily and quickly while preserving the texture of the skin -- the final result doesn't look like a rubber mask was painted on the face.

All the articles used Photoshop, and I couldn't find any info for doing the same thing in PSP. So, I experimented and here's what I came up with. (N.B., this is for an 8 bits/channel image)
Here's the original image:
Image
Uploaded with ImageShack.us

1. Duplicate the Background layer, and name the new layer "Colour".
2. On that "Colour" layer, use Adjust...Add/Remove Noise...Median Filter. Use a large enough aperture so the blemishes and uneven skin colours just begin to disappear:
Image
Uploaded with ImageShack.us
3. Copy the blurred "Colour" layer, and paste it in as a new image -- it will be "Image 1", e.g.
4. Use Image...Negative Image to reverse the colours of "Image 1":
Image
Uploaded with ImageShack.us
5. Back in the original image, turn off the visibility of the "Colour" layer so that only the original, sharp Background layer is showing.
6. Use Image...Arithmetic with these settings:
Image #1: your original (sharp) image
Image #2: Image 1 (the blurred, negative image)
Function: Add
Channel: All channels
Modifiers:
Divisor: 1
Bias: -128
Clip color values: selected
7. A new image ("Image 2") will be created, looking like a grayscale high-pass image:
Image
Uploaded with ImageShack.us
8. Copy "Image 2", and paste it into your original image as a new layer at the top of the layers stack, naming it "Texture".
9. Set the blending mode of that new "Texture" layer to "Overlay".

Your layers will look like this:
Image
Uploaded with ImageShack.us

Now you can use various techniques on the "Colour" layer to smooth out the colours of the blemishes and further even out the tones of the skin. I mostly used the Makeover Tool's "Blemish Fixer", but also selected some areas with the Freehand Selection Tool set to a feather of 8 pixels and applied a Gaussian blur of 8 pixel radius. Dodging and burning also came in handy.
The "Texture" layer is used to remove the last traces of some of the blemishes. I used the "Blemish Fixer" for that.
My quickly done final result:
Image
Uploaded with ImageShack.us

Of course, you can go nuts with the technique (as explained in several of the articles found on the Web) :wink: .
Enjoy!


Thanks for this mate, really appreciate it :)

Re: Tutorial: Frequency Separation for portrait retouching

PostPosted: Fri Oct 24, 2014 11:26 am
by Klossr
The procedure still works, although the screenshots aren't there anymore :D
When you start with a 16 bits TIFF-file it doesn't work; the colors first have to be reduced to 8 bits. The shortcut for that: CTRL+SHIFT+R

I have made a script for this procedure. You can paste it in Notepad and save it in C:\Users\YOUR_USERNAME\Documents\Corel PaintShop Pro\16.0\Scripts - Trusted
It takes some time to run and you have to fill in the values as described in the procedure the first time.
You'll get 3 pictures as a result; the script will ask for the first one to save it as a photoshop-file (as it contains layers). The other ones are temp-files which can be discarded.

The script:
from PSPApp import *

def ScriptProperties():
return {
'Author': u'Joop Verdoorn',
'Copyright': u'',
'Description': u'',
'Host': u'PaintShop Pro',
'Host Version': u'16.00'
}

def Do(Environment):
# EnableOptimizedScriptUndo
App.Do( Environment, 'EnableOptimizedScriptUndo', {
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# LayerDuplicate
App.Do( Environment, 'LayerDuplicate', {
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# Eigenschappen laag
App.Do( Environment, 'LayerProperties', {
'General': {
'Opacity': None,
'Name': u'Colour',
'IsVisible': None,
'IsTransparencyLocked': None,
'LinkSet': None,
'UseHighlight': None,
'PaletteHighlightColor': None,
'GroupLink': None,
'BlendMode': None
},
'BlendRanges': None,
'Path': (0,0,[],False),
'ArtMediaTexture': None,
'Effects': None,
'BrightnessContrast': None,
'ChannelMixer': None,
'ColorBalance': None,
'CurveParams': None,
'HSL': None,
'Threshold': None,
'Levels': None,
'Posterize': None,
'Vibrancy': None,
'Overlay': None,
'LocalToneMapping': None,
'Invert': None,
'HistogramAdjustment': None,
'FillLightClarity': None,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Silent,
'AutoActionMode': App.Constants.AutoActionMode.Default,
'Version': ((16,0,0),1)
}
})

# Mediaan
App.Do( Environment, 'Median', {
'Aperture': 13,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# Copy
App.Do( Environment, 'Copy', {
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# PasteGraphicAsNewImage
App.Do( Environment, 'PasteGraphicAsNewImage', {
'CreateFromDropData': False,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# SelectDocument
App.Do( Environment, 'SelectDocument', {
'SelectedImage': 0,
'Strict': False,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# NegativeImage
App.Do( Environment, 'NegativeImage', {
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# SelectDocument
App.Do( Environment, 'SelectDocument', {
'SelectedImage': -1,
'Strict': False,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# LayerSetVisibility
App.Do( Environment, 'LayerSetVisibility', {
'Command': App.Constants.ShowCommands.Hide,
'Path': None,
'WorkingMode': 1,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Silent,
'AutoActionMode': App.Constants.AutoActionMode.Default,
'Version': ((16,0,0),1)
}
})

# Arithmetic
App.Do( Environment, 'Arithmetic', {
'AllChannels': True,
'Bias': -128,
'Channel1': 0,
'Channel2': 0,
'ClipColorValues': True,
'Divisor': 1,
'Function': App.Constants.ArithmeticFunctions.Add,
'SourceImage1': 0,
'SourceImage2': 1,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# SelectDocument
App.Do( Environment, 'SelectDocument', {
'SelectedImage': 2,
'Strict': False,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# Copy
App.Do( Environment, 'Copy', {
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# SelectDocument
App.Do( Environment, 'SelectDocument', {
'SelectedImage': -2,
'Strict': False,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# PasteAsNewLayer
App.Do( Environment, 'PasteAsNewLayer', {
'CreateFromDropData': False,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.Match,
'Version': ((16,0,0),1)
}
})

# MultiObjectProperties
App.Do( Environment, 'MultiObjectProperties', {
'General': {
'Opacity': None,
'Name': None,
'IsVisible': None,
'IsTransparencyLocked': None,
'LinkSet': None,
'UseHighlight': None,
'PaletteHighlightColor': None,
'GroupLink': None,
'BlendMode': App.Constants.BlendMode.Overlay
},
'Effects': None,
'WorkingMode': 1,
'Path': None,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Silent,
'AutoActionMode': App.Constants.AutoActionMode.AllAlways,
'Version': ((16,0,0),1)
}
})

# FileSaveAs
App.Do( Environment, 'FileSaveAs', {
'Encoding': {

},
'FileName': u'-fs.psd',
'FileFormat': App.Constants.FileFormat.PSD,
'FormatDesc': u'PSD Photoshop',
'WorkingMode': 0,
'GeneralSettings': {
'ExecutionMode': App.Constants.ExecutionMode.Default,
'AutoActionMode': App.Constants.AutoActionMode.AllAlways,
'Version': ((16,0,0),1)
},
'DefaultProperties': []
})

Re: Tutorial: Frequency Separation for portrait retouching

PostPosted: Fri Oct 24, 2014 10:41 pm
by trueblue
I wish the photos were still available, this would make a super tutorial.