算法最近更新时间: 2014.7.19, 效果详见:http://files.cnblogs.com/Imageshop/FaceBeautification.rar算法
话说女人的钱最好赚,因此如今各大流行的图像编辑小软件基本上都有个磨皮的功能,这对那些脸上不当心长了小痘痘或者小斑点的美眉来讲是在上传照片前的必要和必须步骤。加上如今自恋的人特多,没事有事来个自拍,而后挂到网上炫一把,固然也得把本身的皮肤处理好。 所以啊,国内出了很多这方面的软件,好比美图、可牛、美颜相机、美人相机、Camera360等加入了这个功能,固然还有不少小的手机软件业附带了此项目。编程
不过在网络上找寻磨皮方面的算法时,能找到的有用的信息是很是少的,估计这于该算法具备较大的实用和经济价值不无关系,本人通过一番研究,也搞出了一个磨皮的功能,这里就能共享的一些技巧说来给有须要的朋友听听。网络
一、磨皮算法的核心: 磨皮能够当作是去噪算法的应用。典型的去噪算法,好比均值模糊、高斯模糊、中值滤波都有很好的去噪效果,可是视觉效果太差。能有效的用于磨皮算法的去噪方式主要是那些可以边缘的算法,典型的好比双边滤波、Non-Local以及BM3D之类的。BM3D听说去噪效果最好。可是后二者到目前为止未看到具备实质意义的快速实现算法,反而是双边滤波,有多篇论文已经提出了可行的加速方案。其实Photoshop中的表面模糊也能够当作是一种双边滤波,所以很多用PS磨皮的过程也大量使用了表面模糊算法的。多线程
二、头发眼睛等细节部位的保护: 直接使用上述算法获得的结果,针对不少图像会出现头发和眼睛部位的模糊,这种效果对于一个好的磨皮结果来讲是不须要的。特别是眼睛,眼睛是心灵的窗口,被模糊了,窗口就不透明了。所以,须要检测出须要磨皮的部分。这个不少人会想到皮肤检测技术。不过我试过了经典的七八种皮肤检测效果,都不能将不一样场景的肤色部位所有提取出来。一种方式就是综合好几种肤色检测,取最大区域,这也是一种不错的想法,由于通常的肤色检测速度都是很快的。可是实际的效果表面,这样作对于一些比较极端的图像仍是无效的。所以,我采起了一种宁愿错杀一千,也不可放过一个的措施,放松了某一种肤色检测模块里的一些约束条件,使得绝大多数场景下的肤色部分都可以被选中(鉴于某些方面的缘由,这个不可详述)。spa
三、边缘部分的融合:经过上述保护,获得的保护边缘处是硬边缘,即一个像素时要磨皮的部分,边上的可能就是不须要磨皮的,这样的话处理的效果在视觉会形成必定的僵硬,可能会有某个部分过分不天然,以下图所示(全部图片均来源自网络):线程
原图 硬边界磨皮 软化后磨皮3d
一种解决方案就是对获得的硬边界图进行羽化处理,也就是相似高斯模糊之类的算法,这样边缘处就会过渡的较为天然。blog
四、处理后的加强:通过这样处理后的图像若是在进行一下边缘的加强,会获得更好的效果,好比在PS磨皮的最后通常喜欢加个USM锐化。图片
按照上述思路,编程程序,我实现的磨皮效果以下所示:get
原图 本文的磨皮效果 美图秀秀效果(智能磨皮,参数深)
由以上几图能够看出,在磨皮质量基本差很少的状况,本文额磨皮的能尽可能的保留了头发和眼睛处的细节,这样更天然。
在算法实现的速度上,我采用了两种双边滤波,一种速度很快,在PC上若是加入多线程彻底能够实现普通摄像头的实时磨皮,可是效果有一点瑕疵。另一种速度稍慢,效果较为稳定。
一个示例能够从这里下载: http://files.cnblogs.com/Imageshop/FaceBeautification.rar
****************************做者: laviewpbt 时间: 2013.8.23 联系QQ: 33184777转载请保留本行信息********************