社区导航

 

搜索
查看: 128|回复: 0

美颜磨皮SDK中关于磨皮算法的大致实现流程

[复制链接]

100

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-10-9 14:45 | 显示全部楼层 |阅读模式

就现在互联网各行业中的发展现状来看,大部分带有娱乐社交属性的平台都少不了美颜磨皮SDK,为什么这么说呢,因为无论是拍照还是拍视频,开启美颜磨皮是非常必要的,毕竟今日不同以往大家对美颜需求也越来越高。

在美颜磨皮SDK中,磨皮算法的实现可以说是比较重要的,其中包含两个主要的部分:滤波和肤色区域检测。

美颜sdk6.png

其中,滤波部分常用到3种算法。

1.高反差减弱

高反差保留算法,指通过高反差来得到皮肤细节的模板,根据模板中的细节区域(如皮肤中的部分斑点区域),从而将原图对应区域进行颜色减淡的处理,从而达到斑点部位的弱化,从而实现美颜磨皮的效果。这一算法在保留了人脸面部纹理的同时,可以减弱皮肤瑕疵颜色,使皮肤呈现自然光滑的效果。

2.保边滤波算法

指通过一些具有保留边远能力的滤波器,从而将图像磨平以达到皮肤光滑的目的。主要有导向滤波器、双边滤波器、局部均值滤波器、表面模糊滤波器等。这一算法可以使人脸皮肤区域平滑,但是后期需要添加一些算法来保留人脸面部的自然纹理。

3.其他算法

主要是一些未知的算法,在此就不多作赘述。

皮肤检测主要是基于颜色空间的皮肤颜色统计方法

开发美颜磨皮SDK时,使用该方法具备较高的误检率,这样一来就不会容易出现将其余区域肤色判定为人类肤色,从而导致非皮肤区域图像被滤波器平滑掉。

美颜sdk15.png

关于磨皮算法的部分参考代码如下所示

def get_unet_256(input_shape=(256, 256, 3),

                num_classes=1):

   inputs = Input(shape=input_shape)

   # 256

 

   down0 = Conv2D(32, (3, 3), padding='same')(inputs)

   down0 = BatchNormalization()(down0)

   down0 = Activation('relu')(down0)

   down0 = Conv2D(32, (3, 3), padding='same')(down0)

   down0 = BatchNormalization()(down0)

   down0 = Activation('relu')(down0)

   down0_pool = MaxPooling2D((2, 2), strides=(2, 2))(down0)

   # 128

……

   center = Conv2D(1024, (3, 3), padding='same')(down4_pool)

   center = BatchNormalization()(center)

   center = Activation('relu')(center)

   center = Conv2D(1024, (3, 3), padding='same')(center)

   center = BatchNormalization()(center)

   center = Activation('relu')(center)

      # center

美颜sdk21.png

以上就是美颜磨皮SDK在开发过程中的简单实现流程,可见要想实现高级自然的磨皮效果,还是需要借助一定的算法实现的,所以还是要找专业的美颜磨皮SDK服务商,从而确保接入不同类型的APP后可以顺利在前端实现应有的功能。

声明:以上内容均为作者本人原创,转载需注明作者及原文链接,欢迎转载分享。

此帖出自信息发布论坛


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-11-19 16:17 , Processed in 0.084906 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表