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

[复制链接]
查看: 40|回复: 0
发表于 2019-9-30 10:47:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
美颜SDK除了应用最多的直播、短视频、视频社交场景以外,同样还可以应用在一些美颜相机或P图软件里。现如今人们的美颜需求和美颜标准也随着时代的变化不断改变,他们不再喜欢过于夸张的美颜效果,反而更倾向于清新自然的美颜效果,其中磨皮作为基本的美颜需求相对来说人们对它的要求更高一些。本文主要分享一下关于导向滤波磨皮的算法是如何实现的。
目前来看导向滤波磨皮算法速度是比较快的,相比起其他的保边缘磨皮算法来说更快一些,所以在一些美颜SDK中导向滤波磨皮算法的应用也比较广泛。
美颜6.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;  
  
美颜5.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;  
}  
美颜10.jpg
拿美图秀秀只是进行一定的参考,因为美图的磨皮在边缘细节方面保持的并不是特别好,所以美图的磨皮可能并没有采用其他的肤色检测技术。可见,为了实现一些更加细节部分,在美颜SDK开发过程中需要提前考虑好想要实现的效果,并在各种算法之中应用各种技术,比如人脸检测技术、人脸肤色检测技术、美白检测技术等等,这都是非常重要的。
此外,由于美颜SDK所应用的场景不同那么需要侧重的地方也是不同的,像是直播和短视频这种泛娱乐应用场景,大多是在动态或视频过程中实现美颜,算法包括技术各方面在实现图片和视频时需要考虑的内容也不同。所以说,不仅需要在选择美颜SDK时考虑运营需求问题,还需要注重质量和技术问题。
声明:以上内容均为作者本人原创,转载需注明作者及原文链接,欢迎转载分享。

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

 
 
工作时间:
8:00-18:00
客服热线:
15368564009
客服微信