魔扣论坛

魔扣源码论坛业务
查看: 17|回复: 1

美颜SDK中比美图秀秀还好用的磨皮算法是什么

[复制链接]
  • TA的每日心情
    慵懒
    3 天前
  • 签到天数: 33 天

    [LV.5]经常留意

    33

    主题

    37

    帖子

    188

    积分

    初级魔扣

    Rank: 2

    魔扣币
    340
    贡献
    137
    威望
    0
    发表于 2019-9-30 10:40:48 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】
    淘宝、天猫优惠券

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    美颜SDK除了应用最多的直播、短视频、视频社交场景以外,同样还可以应用在一些美颜相机或P图软件里。现如今人们的美颜需求和美颜标准也随着时代的变化不断改变,他们不再喜欢过于夸张的美颜效果,反而更倾向于清新自然的美颜效果,其中磨皮作为基本的美颜需求相对来说人们对它的要求更高一些。本文主要分享一下关于导向滤波磨皮的算法是如何实现的。
    目前来看导向滤波磨皮算法速度是比较快的,相比起其他的保边缘磨皮算法来说更快一些,所以在一些美颜SDK中导向滤波磨皮算法的应用也比较广泛。
    美颜5.jpg
    值得一提的是,导向滤波磨皮算法中用到了大量的均值卷积,所以可采用快速积分图的方法进行加速,该算法也算是一种保边缘的滤波算法,但是其中所包含的用处远不止于滤波。比如在一些抠图算法中,如果直接对一张大图进行抠图速度会很慢,而这个算法中的升采样功能,可以对图像直接进行采样然后再从小图上抠图,最后进行升采样。参考代码如下:
    float*CGuidedfiler::Guidedfiler(float*inimg,float*guidedimg,int height,int widht,intRadius,float eps)  
      
    intlenght=height*widht;  
    float*mult=newfloat[lenght];  
    float*oned=new float[lenght];  
    for (inti=0;i<lenght;i++)  
    {  
        mult=inimg*guidedimg;  
        oned=1;
    }  
    float *covmult=newfloat[lenght];  
    float *covone=newfloat[lenght];  
    FastGetAVG(covmult,mult,widht,height,Radius);  
    FastGetAVG(covone,oned,widht,height,Radius);  
    for (inti=0;i<lenght;i++)  
    {  
        covmult/=covone;  
    }  
    delete[]mult;  
    delete[]oned;  
      
    美颜6.jpg
    //计算导向图、原图的窗口均值  
    float*mean_inimg=new float[lenght];  
    FastGetAVG(mean_inimg,inimg,widht,height,Radius);  
    float*mean_guideimg=newfloat[lenght];  
    FastGetAVG(mean_guideimg,guidedimg,widht,height,Radius);  
    for (inti=0;i<lenght;i++)  
    {  
        mean_guideimg/=covone;  
        mean_inimg/=covone;  
    }  
    //计算ak的除数
    float*var_guideimg=new float[lenght];  
    float*sqr_guideimg=new float[lenght];  
    for (inti=0;i<lenght;i++)  
    {  
       sqr_guideimg=guidedimg*guidedimg;  
    }  
    FastGetAVG(var_guideimg,sqr_guideimg,widht,height,Radius);  
    delete[]sqr_guideimg;  
    for (inti=0;i<lenght;i++)  
    {  
       var_guideimg=var_guideimg/covone-mean_guideimg*mean_guideimg;  
    }  
    //计算ak  
    float*a=newfloat[lenght];  
    for (inti=0;i<lenght;i++)  
    {  
       a=(covmult-mean_guideimg*mean_inimg)/(var_guideimg+eps);  
    }  
    //计算bk  
    float*b=newfloat[lenght];  
    for (inti=0;i<lenght;i++)  
    {  
       b=mean_inimg-a*mean_guideimg;  
    }  
    美颜2.jpg
    拿美图秀秀只是进行一定的参考,因为美图的磨皮在边缘细节方面保持的并不是特别好,所以美图的磨皮可能并没有采用其他的肤色检测技术。可见,为了实现一些更加细节部分,在美颜SDK开发过程中需要提前考虑好想要实现的效果,并在各种算法之中应用各种技术,比如人脸检测技术、人脸肤色检测技术、美白检测技术等等,这都是非常重要的。
    此外,由于美颜SDK所应用的场景不同那么需要侧重的地方也是不同的,像是直播和短视频这种泛娱乐应用场景,大多是在动态或视频过程中实现美颜,算法包括技术各方面在实现图片和视频时需要考虑的内容也不同。所以说,不仅需要在选择美颜SDK时考虑运营需求问题,还需要注重质量和技术问题。
    声明:以上内容均为作者本人原创,转载需注明作者及原文链接,欢迎转载分享。

    该用户从未签到

    2

    主题

    198

    帖子

    394

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    196
    贡献
    196
    威望
    0
    发表于 2019-9-30 10:41:27 | 显示全部楼层
    没有一百分的另一半,只有五十分的两个人。',
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表