Tutorial: Frequency Separation for portrait retouching

For PhotoImpact, Paint Shop Pro, PhotoExplorer, PhotoExpress, GIF Animator & WebUtilities

Moderator: Ken Berry

photodrawken
Posts: 684
Joined: Wed Sep 26, 2012 8:40 am
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
ram: 16Gb
Hard_Drive_Capacity: 324Gb
Location: USA

Tutorial: Frequency Separation for portrait retouching

Post 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!
Ken
Yes, I think it can be eeeeeasily done...
Just take everything out on Highway 61.
teknisyan
Posts: 2421
Joined: Wed Oct 06, 2010 4:18 pm
operating_system: Windows 7 Home Premium
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: Sony Corporation VAIO
processor: Intel Corel i5
ram: 4 GB
Video Card: ATI Mobility Radeon HD 5650
sound_card: Realtek HD Audio
Hard_Drive_Capacity: 500 GB
Location: Riyadh, KSA

Re: Tutorial: Frequency Separation for portrait retouching

Post by teknisyan »

Wow..thanks for the tip! :)

I usually just edit the photo without using layers..
Like reading blogs?
About Tech
About Sports
Pnoy.Me - A URL Shortener
Follow me on Facebook & Twitter
photodrawken
Posts: 684
Joined: Wed Sep 26, 2012 8:40 am
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
ram: 16Gb
Hard_Drive_Capacity: 324Gb
Location: USA

Re: Tutorial: Frequency Separation for portrait retouching

Post 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.
Ken
Yes, I think it can be eeeeeasily done...
Just take everything out on Highway 61.
caspia1
Posts: 137
Joined: Mon Nov 01, 2010 12:55 pm
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
ram: 16gb
Hard_Drive_Capacity: 1Terrabit
Monitor/Display Make & Model: twin hp displays
Corel programs: Pro 2023 Ultimate
Location: Madrid, Spain

Re: Tutorial: Frequency Separation for portrait retouching

Post by caspia1 »

Excellent!
Sorted it out fine, now.
many thanks
photodrawken
Posts: 684
Joined: Wed Sep 26, 2012 8:40 am
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
ram: 16Gb
Hard_Drive_Capacity: 324Gb
Location: USA

Re: Tutorial: Frequency Separation for portrait retouching

Post by photodrawken »

Glad to help.

Nice to hear the technique is also relevant for B&W photos.
Ken
Yes, I think it can be eeeeeasily done...
Just take everything out on Highway 61.
simpak
Posts: 1
Joined: Fri Jun 21, 2013 7:54 am
operating_system: Windows 7 Ultimate
System_Drive: C
32bit or 64bit: 32 Bit

Re: Tutorial: Frequency Separation for portrait retouching

Post 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 :)
Klossr
Posts: 2
Joined: Fri Oct 24, 2014 11:00 am
operating_system: Windows 7 Professional
System_Drive: C
32bit or 64bit: 64 Bit

Re: Tutorial: Frequency Separation for portrait retouching

Post 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': []
})
trueblue
Moderator
Posts: 1563
Joined: Sat Dec 30, 2006 1:43 am
operating_system: Windows 10
System_Drive: C
32bit or 64bit: 64 Bit
motherboard: ASUS Z97M Plus
processor: Intel Core i7-4790 CPU 3.60 GHz
ram: 12GB
Video Card: NVIDIA GeForce GTX 750
sound_card: NVIDIA High Def Audio Realtek High Def
Hard_Drive_Capacity: 1.740GB
Monitor/Display Make & Model: Benq E2420HD 24" wide x 2 monitors
Corel programs: PSPX8-VideoStudio-AfterShot
Location: Australia

Re: Tutorial: Frequency Separation for portrait retouching

Post by trueblue »

I wish the photos were still available, this would make a super tutorial.
~~~~Maureen~~~~
Tutorial Writer for PaintShop Pro

Creative-Designs
Free! PaintShop Pro Tutorials
PaintShop Pro - VideoStudio Pro - AfterShot - CorelDraw - Painter
migf1
Posts: 510
Joined: Fri Apr 03, 2020 3:09 pm
operating_system: Windows 8.1
System_Drive: C
32bit or 64bit: 64 Bit

Re: Tutorial: Frequency Separation for portrait retouching

Post by migf1 »

I realize this topic is ancient, but I just came across this: https://youtu.be/d3YCMcxuTSA and I was kinda stunned (they offer a free script there, but it's a really simple process).

I'm using Frequency Separation, mostly in Ps but occasionally in PSP too (I don't mind Hard Light instead of Linear Light, since most of the times I contrast & color grade the final result anyway) but after watching that video I was like "what?" I just tried it in PSP and I have to say again... WHAT?

It's not that flexible and all, but it is freaking working more than decently, especially after setting appropriate High Pass and Gaussian Blur radius for one's project. Looked around and saw tuts for Ps too, though they use Vivid Light blend there (haven't tried it in Ps yet... nor Gimp for that matter).

Just wanted to share it, cause it is actually a crazy FS shortcut and I think it can prove such a time saver!
Good Unofficial PaintShop Pro Tutorials: Creation CasselMake Shop ProHEC Image EditingLeviFiction PSP Basics
(plus my own Gimp & Stuff)