水族馆

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

图层截图high

Grain merge 把当前层和下层图像相加,再减去 128 ,当前层为 high ,下层为 low 那么数学公式可以写作:

$$ low + high - 128 = low + (original - low + 128) - 128 = original $$

此时 highlow 的混合结果与 original 是一样的。

磨猫猫

只要记住

我想要给猫猫改颜色,我使用画笔配合取色工具修改了低频层。修改可以使用空气刷、画笔、高斯模糊等任何你喜欢的工具。修改后单独显示低频层如下

漫画猫猫

叠上高频层,就大功告成啦

result

可见猫皮已经被磨成非常单一的颜色,但没有改变皮上的毛发信息。

原图对比

原图

参见