说到美颜SDK中的“磨皮”功能,大家应该不会太过陌生,毕竟它是用户使用频率较高的一个功能,但每当说起它背后的算法,大部分人实际上是比较模糊的。今天小编就用“大白话”来给大家讲述一下磨皮算法,让大家快速认识一下它。
一、磨皮简介
在讲解美颜SDK磨皮算法之前,我们先来了解一下磨皮是什么?经常自拍的朋友应该比较清楚,大部分人的面部并非完美无瑕,而是有各种肌肤问题,例如痘印、雀斑、黑痣等,而磨皮的目的就是淡化面部这些瑕疵,让皮肤变得细腻,以此达到美颜效果。所以,磨皮算法应该做到哪些事情呢?
首先,第一步便是确定人脸上的特征点,如痘痘、暗色粗糙皮肤;第二步就是对面部瑕疵点进行处理,完成美化。
二、算法分析
我们通常看到痘痘和暗色皮肤,仔细观察,会发现这些特征点和周围正常皮肤在肤色上有一个差别;如果拍照拍下来,用灰度值查看这个图片,你会发现特征点灰度值较低,而正常白色皮肤灰度值较高,这是一个凸变的过程,正常皮肤到特征点,灰度值从高点陡然下跌;可以用这个现象来把特征点提取出来。
另一个是局部粗糙皮肤,其局部灰度值,也需要尽可能将数字磨平,让它和正常皮肤一样,也会有一个灰度值徒然下降的过程。
三、特征点提取
这里需要一种滤波算法,可以是均值化滤波、高斯滤波、双边滤波和导向滤波等算法,考虑到手机CPU性能,一般会选择高斯滤波,加权求平均的算法;试想一下,一张二维灰度值人脸图片,特征点灰度值低,正常皮肤灰度值高,滤波算法过后,正常皮肤变化不大,特征点因为周围正常皮肤灰度值较高的原因,普遍灰度值会有一个变大的效果,这个时候用原图灰度值减去滤波后的灰度值,那么特征点的灰度值是小于0位负的,正常皮肤灰度值为正的,就得到整张人脸图片的特征点了。
最后便是特征点加强、特征点亮化处理、细节补偿等操作,然后用户即可得到想要的图片效果,因为受限于篇幅问题,牵扯的很多复杂内容就不详细展开了。
以上就是磨皮在美颜SDK中的实现过程,如果你对美颜SDK接入感兴趣,欢迎咨询在线客服。
声明:本文由美狐原创,未经允许禁止转载,谢谢合作。