GIMP 中的高低频磨皮方法和数学原理
阅读时间 2 分钟
模特太害羞,让我抓只猫猫来替 ta
高低频磨皮是很常见的后期美颜方法。原理很简单:分离原始图片的高频和低频信息,然后修复高频上的斑点纹理,调整低频的皮肤颜色。最后得到一个更干净的皮肤,但又不损失皮肤原有的纹理信息,能够有效减少美颜涂抹感。
简单来说,高频记录纹理,低频记录图像,通过分频方法对两种频率分开处理,就能磨出自然又好看的皮肤。
在 Photoshop 上,提取高频信息使用 「应用图像」(Apply Image) 减去 经过高斯模糊处理的图层得到。而在 GIMP 上没有「应用图像」这样的功能,但只要明白了高低频分离的原理,在 GIMP 上也非常容易做到。
Photoshop 中的分频原理
https://www.youtube.com/watch?v=792im_OkAvE 这个视频讲的非常详细,此处总结一下视频中提到的数学公式。
获得低频图像
首先对原始图像进行高斯模糊处理,得到低频图像 low
获得高频图像
然后对原始图层使用「应用图像」功能,将「混合方式」改为「减去」,缩放设置为「2」,画面错位设置为「128」。为什么是 2 和 128 呢?这个稍后提到。
假设原始图像为 original
,低频图像为 low
,那么得到的高频图像 high
$$ high = \frac {original - low} {2} + 128 $$
为什么是 128 这个数字?因为颜色范围是 0 - 255。128 即代表白色和黑色中间的灰色。
混合高低频
然后对高频图层选择「线性光」混合模式,该模式的数学公式是
$$ I + 2 \times M - 255 $$
其中 I
是下层图像 (Image) ,M
是当前图层 (Mask) 。在这个例子中,下层是低频图层 low
,当前层是高频图层 high
,那么可以写作
$$ low + 2 \times high - 255 = low + 2 \times ( \frac {original - low} {2} + 128 ) - 255 = original + 1 $$
高低频合成得到的图像与原始图像几乎没有差异。
GIMP 中的分频原理
GIMP 中没有「应用图像」这一功能,但有 Grain extract (灰度提取) 这一图层混合方式能够实现相同效果。
获得低频图像
与 PS 的方法一样,第一步是对图层进行高斯模糊。模糊到纹理信息刚好消失,边缘不晕染开为最佳。
如果是人像,那么模糊到纹理消失,但仍然可见瑕疵(黑眼圈、色斑之类)的程度。稍后会在低频层将这些瑕疵涂抹掉。
获得高频图像
然后保持低频层在上,原始层在下,将低频层的混合模式选择为 Grain extract ,即可得到一张灰度高频信息图。
Grain extract 使用下层图像减去当前图像+128 ,假设下层为 original
,当前层为 low
数学公式如下:
$$ high = original - low + 128 $$
然后右击图层区域,选择 从可见新建图层 New from visible ,命名为 high
混合高低频
将 high
混合模式改为 Grain merge 。
可以顺便把 low
的图层模式改回为 Normal。
Grain merge 把当前层和下层图像相加,再减去 128 ,当前层为 high
,下层为 low
那么数学公式可以写作:
$$ low + high - 128 = low + (original - low + 128) - 128 = original $$
此时 high
和 low
的混合结果与 original
是一样的。
磨猫猫
只要记住
高频修纹理
低频修颜色
我想要给猫猫改颜色,我使用画笔配合取色工具修改了低频层。修改可以使用空气刷、画笔、高斯模糊等任何你喜欢的工具。修改后单独显示低频层如下
叠上高频层,就大功告成啦
可见猫皮已经被磨成非常单一的颜色,但没有改变皮上的毛发信息。
原图对比