影楼精修-中性灰磨皮算法解析
注意:本文样例图片为了避免侵权,均使用AIGC生成;
中性灰磨皮是一种常用的人像修图技术,主要用于去除皮肤瑕疵(如痘痘、斑点等),同时尽可能保留皮肤的自然质感和细节。其核心思想是通过在图像上创建一个“中性灰”图层(即RGB均为128,50%灰色),利用图层混合模式对原图的亮度进行局部调整,从而实现磨皮效果。
中性灰磨皮的原理
-
中性灰图层的创建:新建一个与原图大小相同的图层,填充50%灰色(RGB 128,128,128),并将该图层的混合模式设置为“柔光”、“线性光”或“叠加”等,这些混合模式能够根据灰度的变化对原图像素进行提亮或调暗处理。
-
亮度调整:中性灰图层上的亮度变化会映射到原图上。具体来说,图层中比中性灰更亮的部分会使原图相应区域变亮,反之则变暗。通过在中性灰图层上用黑白画笔涂抹,白色区域会提亮原图中较暗的瑕疵(如痘痘),黑色区域会调暗过亮的高光,从而使皮肤亮度均匀,达到磨皮效果。
-
保留纹理:由于中性灰磨皮主要调整的是亮度而非直接模糊图像,因此能够较好地保留皮肤的细节和质感,避免传统磨皮方法导致的过度平滑和塑料感。
中性灰磨皮的操作步骤(以Photoshop为例)
-
在原图层上新建一个图层,填充50%中性灰(快捷键Ctrl+Shift+N新建图层后,使用填充命令填充灰色)。
-
将该图层混合模式设置为“柔光”。
-
使用黑白画笔工具在中性灰图层上涂抹:
-
用白色画笔涂抹皮肤暗部瑕疵,使其提亮。
-
用黑色画笔涂抹过亮区域,使其变暗。
-
-
通过调整画笔的不透明度和流量,细致修饰皮肤瑕疵。
-
可以结合修补工具先去除明显大痘痘,再用中性灰磨皮处理细节。
-
适当调整图层透明度,控制磨皮强度,保持自然效果。
中性灰磨皮的应用
-
去除痘痘和斑点:通过提亮暗部瑕疵区域,使其亮度与周围皮肤一致。
-
调节高光和阴影:可以局部调暗高光区域,避免过曝,同时增强面部立体感。
-
五官塑形:通过在中性灰图层上局部提亮或调暗,塑造鼻梁、颧骨等部位的光影效果,增强立体感。
中性灰/高低频/通道磨皮三大磨皮方法的对比:
像素蛋糕中性灰磨皮
像素蛋糕的中性灰磨皮包含两个部分:中性灰平整和中性灰立体,界面如下图所示(在早期版本中仅有一个中性灰磨皮,后续功能做了更新,拆分为了两个调整功能,而原来的中性灰磨皮更名为质感磨皮功能)。对于像素的中性灰立体继续拆分为五官和轮廓,这一点我们暂时先不考虑,文末给出方案;
整体上中性灰磨皮的算法原理与前面所讲述的原理保持一致,像素蛋糕自己的特色是把一个中性灰磨皮拆分成了平整层和立体层两层,或者说,是将中性灰图层拆分成了平整层和立体层两个图层,两个图层分别对结果进行调节。
示意图如下图所示:
从图中可以看到,平整层主要关注细节,比如痘痘斑点的部分等;立体层关注整体的光影明暗调节;
有了上述分析,我们来给出中性灰磨皮的解决方案;
中性灰磨皮算法
中性灰磨皮的核心在于使用AI算法自动构建中性灰蒙版图层,然后将图层与原图进行图层混合(我们以柔光模式为例);下文中我们分标准中性灰和像素的拆分中性灰两个部分讲解;
标准中性灰磨皮算法
标准中性灰算法步骤:
1.中性灰图层生成,我们选择GAN网络来进行中性灰蒙版图层的生成。网络输入为512×512的人脸图像,输出为中性灰蒙版图像;如下图所示:
对于网络选取,可选CGAN、Pix2Pix等;
2.数据集构建,通过人工修图来构建类似的成对数据集1W+;
3.训练中性灰模型;
4.输入用户人脸图S,输出中性灰蒙版图M,将M与S按照柔光图层混合模式进行图层混合,即可得到中性灰磨皮效果图;
5.考虑到影楼修图中的高分辨率清晰度问题,我们使用512×512的人脸图得到对应中性灰蒙版M,将M缩放会原始大图,然后进行图层混合即可,中性灰磨皮最大的优势就是在不损失原图清晰的度同时,对皮肤进行美化;
上述1-5就是标准中性灰磨皮算法的实现步骤;
注意:这里如果对于分辨率要求不高,比如手机端使用,那可以考虑直接使用pix2pix原图到磨皮结果图来训练模型,这里不在累赘;
像素蛋糕算法
像素蛋糕的算法很简单,我们在标准中性灰步骤中,将中性灰蒙版拆分为平整层和立体层两个中性灰图层,在构建数据集的时候分开构建即可。算法步骤如下:
1.中性灰图层生成,依旧选择GAN网络来进行中性灰蒙版图层的生成。网络输入为512×512的人脸图像+条件label(0-平整层,1-立体层),输出为条件中性灰蒙版图像,label=1时输出立体中性灰图层,label=0时输出平整中性灰图层;
2.数据集构建,通过人工修图来构建类似的成对数据集1W+,数据对(原图,平整层,立体层);
3.训练中性灰模型;
4.输入用户人脸图S,中性灰图层样式label,模型输出对应的平整层和立体层中性灰蒙版A和B,输出结果图为D;
将中性灰模板按照原图进行缩放;设定平整层调节参数ka,范围[0,100],立体层调节参数kb,范围[0,100],选择柔光图层混合Softlight;我们设定先调节光影层再调节立体层的顺序,则算法计算:
tmp=(Softlight(S,A)*ka+S*(100-ka))/100
D=(Softlight(tmp,B)*kb+S*(100-kb))/100
即可得到最终双参数调节的中性灰磨皮效果;
上述步骤可扩展到全身皮肤区域,算法不再累赘。
这里注意:像素蛋糕的立体层调节又继续拆分为了五官和轮廓,拆分方法与前面的平整层-立体层类似,大家可以按照同样的方式拆分,个人理解像素蛋糕拆分的这么精细,实际上也是从设计师修图的角度来获取的用户反馈,修图师有时候需要更多的可操控性和精确性。
像素蛋糕的效果测试:
这里给出本人算法实现最终的效果展示: