宋亮
2017年八一建军节正值建军90周年,在手机平台上,一款自动P图的“军装照”应用火爆朋友圈,只需上传一张正面照,就可以自动生产不同年代的军装照,让群众过了一把“军装”瘾。
其实,这只是中国P图术的冰山一角。在广大俊男美女们对于颜值的不懈追求中,技术宅们不断地完善着P图技术。只需要下载个小小的APP,就可以分分钟搞定双眼皮、美瞳眼、瓜子脸等等,只有想不到,没有做不到,相比于日本化妆术、韩国整形术、泰国变性术而言,中国的P图术最为物美价廉。
那么,中国如此强大的P图技术,背后是什么原理?今天就来聊一聊图片美化背后的技术。
“P图”一说来自于Photoshop,它是一款由Adobe开发的图像处理软件,由一个叫作Display的程序经过不断修改而来。
时至今日,尽管软件更新不断,功能更为强大,但是,图片编辑处理背后最基本的方式方法和当年都是类似的,只是随着计算机硬件的提高,支持的图片处理更加复杂而已。
对于计算机而言,使用最为广泛的就是面向硬件的颜色模型——RGB(红绿蓝)模型。
计算机显示和识别的所有颜色都由RGB的数值来表示,各种强度的RGB光混合在一起就会产生出各种各样的色彩。当然这是一种对于人十分不友好的模型,因为人眼根本无法从杏黄色中分离出红绿蓝的比例。
高斯模糊
于是,对人很友好的HSL颜色模型就产生了,这是一种基于色相(H)、饱和度(S)、明度(L)3个颜色通道的变化以及它们相互之间的叠加而产生各式各样颜色的模型。在P图时,要调整图片的亮度,只需对其L(亮度)部分调整,就可达到图像亮度的线性调整。
而在PS中,各种滤镜都有着自己基于色彩系统的识别与运算方法。例如,Convolution Matrix(卷积矩阵)是图像处理中一个非常有效并快捷的工具,图像的“高斯模糊”滤镜,就是通过在处理图像时采用统一的卷积矩阵进行的。而由于采用统一的卷积矩阵,“高斯模糊”往往在P图时会造成一些细节,如眉毛、头发等细部也模糊。“表面模糊”能更好地解决这个问题,因为它在图像处理时,是每一个像素点都有自己的卷积矩阵,而且还有对应RGB的分量,计算起来更为复杂。
而这些都是图像处理的原理和模型,如何实现就靠广大辛勤耕耘的程序员了。
P图确实具有化腐朽为神奇的功能,配合着各种色彩调整、滤镜调色、高光覆盖、局部处理、自由变换等,能够自由地修改图片。然而,这么复杂烦琐的操作,并不是普通群众能够掌握的。那么,如何能够让高大上的PS技术走入寻常百姓家呢?
在移动设备普及,特别是手机智能随处可见的今天,各种APP层出不穷,它们还往往可以通过调用系统API(应用程序接口)访问相机,从中采集画面进行美图处理,而这些其实就是一个集成的、程式化的、模板式的系列图像处理程序。
在这里举一个简单的美图功能——磨皮遮瑕祛痘。
在APP的UI界面菜单中看似简单的一键操作,其实在APP背后是一个复杂的程序。对于脸部的斑、痘之类的缺陷,在拍摄出来的照片中,其实就是相对比脸部周围皮肤的颜色和灰度的变化。而如果一张照片的局部相邻区域灰度相差比较大的时候,就会被认定是一个“噪点”。因此,祛痘祛斑的过程实际上就是图片处理的“降噪”。这是最常见的图片处理方式,其中包含了各种算法。
例如滤波算法,就是用周边的点的灰度平均值来代替原值,这样各点的灰度相差就不会太大,噪点就不会那么明显,而对于人脸来说就是皮肤看上去更加光滑,一些斑、痘都消失了。在很多APP处理时拖动进度条的操作,其实就是在为降噪过程设定阈值。
但是,如果仅仅是在后台对于噪点判定并且调用一定算法降噪,那么原图中的一些细节部分,例如眉毛、头发等也会丢失,看上去就“很假”。为了避免这种情况,在处理之后,图片要和原图进行融合,这就类似于PS中的图层叠加。在一键P图时,往往要调整两张图片的混合权重,使得处理之后的图片更加自然。
当然,对于永远自认为先天不足的朋友来说,仅仅皮肤光滑、白皙还远远不够,最好还能身材苗条、面容姣好。这些也都没问题。人脸识别技术能够解决各种疑难杂症。
在这个看脸的时代,“刷脸”已经成了一项很普通的功能,既然计算机可以识别人脸、捕捉人脸,那么是否可以换脸?答案当然是肯定的。在八一建军节时的军装照正是这种技术的应用——人脸融合。
尽管各家的算法与代码都存在差别,也代表着各种APP的核心技术,但是对于“换脸”这种技术活,从原理上说无外乎就是那么几步——人脸检测、关键点定位、区域提取、色彩调和、边缘融合。
人脸检测是一个很初级的活,就是对于一张照片上有多少人脸进行捕捉,如今已经克服了人脸角度、表情变化、光照强度等问题带来的麻烦。人脸检测的根据是关键点定位,也就是要找到哪里是鼻子,哪里是眼睛,而这个过程往往是通过神经网络技术进行机器学习的方法实现。
进行了关键点定位之后,“瘦脸”的操作就可以开始了,以人脸的轮廓为基础,再通过一定的计算和图形变换,就可以改变脸型。眼睛、眉毛、嘴都是同样的道理。
要想进行“换脸”,还得进行到下一步,经过平面变换之后,脸部就相当于一个图片,可以进行自由变换来改变形状尺寸。至于此后的区域提取,就是抽离出脸部具体的五官,以便后续进行图像融合。而为了保证能够与即将植入的画面协调,就要在色彩上对于脸部进行色彩调和以保证颜色协调一致,避免产生违和感。
最后要做的就是将五官植入准备好的模板照片。此时,经过色彩调整后的五官已经和模板图片一致,而具体位置则靠关键点来定位,保证位置准确。
五官植入模板照片时,会遇到“脸型”的问题,因为虽然人体五官的位置基本相同,但脸型却差别很大,这时候就要进行“图形融合”。图形融合技术有各种算法,例如基于泊松方程的图片处理、利用高斯金字塔与拉普拉斯金字塔的图片融合等。
随着网络直播的兴起,APP美颜技术不再局限于静态的照片美容,而是要对主播的动态图像进行实时美化:在各种直播平台上,主播的小眼睛要变成大眼睛、双眼皮,大饼脸要变成瓜子脸,游泳圈要变成蛇精腰……这些对于中国强大的工程师而言,都不是难事。
相比于图片美化,美女主播的动态美颜显然要更加复杂,但是技术流程却是相似的。
首先要做的依旧是“人脸识别”。APP只有先识别到人脸,才能够进行美颜,这已经是十分成熟的技术了。在动态美颜中,人脸识别的核心技术是“深度学习”,具体地讲就是在后台构建一个神经网络,然后利用海量的图片数据进行学习训练,最终生成一种能够自适应各种图片的算法。利用这种算法,就可以对任何一帧动态画面进行人脸识别。
紧接着,对于实时捕捉的画面,程序会抓取原图,分析与美颜标准的差异,然后进行大量学习训练之后,得到由主播肤色到“标准美肤”的计算方法,之后将原图按照特定算法快速完成肤色转换,达到“美白”效果。由于这种计算要求极高的反应速度,所以程序算法中采用的人工神经网络结构往往并不复杂。
瓜子脸、大眼睛等也都是类似的原理。在直播时,从相机采集的每一帧画面,都会在人脸识别之后,通过关键点位置采集到五官的信息,然后按照“标准脸型”的尺寸,对画面进行处理,最后将处理之后的画面输出,这样美颜的效果才逼真。
如今各种手机终端和软件在性能上都不断提高,卷积神经网络的引入使得深度学习更加灵活、快速、风格化。但是,深度学习技术也造成了一个问题——网红脸。虽然神经网络构建的框架和算法各不相同,但是在进行学习训练时为了优化算法往往靠一个样本数据空间进行训练。动态美颜就是在程序开发时提供一个“标准脸型”“标准肤色”,这样主播们在进行美颜时,就会抓取脸部数据与当下最流行的脸型、肤色进行比较,然后经过程序计算处理,变成最受网友喜欢的脸型和肤色。
所以,很多时候并不是在直播平台上就有这么多俊男靓女,而是强大的美颜APP使得主播们都“整”成了一个模子的俊男靓女。
人类先进的技术已经让我们可以从各种层面上改变“天生”的容颜,而图像处理技术的进步,使得我们在网络上同样能够以最美的容颜面对世界。
不过,当我们随心所欲地改变自己的颜值时,也记得爱护一下身边蓬头垢面、睡眼惺忪的程序员,正是他们的智慧与汗水让这个世界变得更加美好。