文档章节

一种具有细节保留功能的磨皮算法。

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:38
字数 1230
阅读 17
收藏 0
点赞 0
评论 0

     算法最近更新时间: 2014.7.19,  效果详见:http://files.cnblogs.com/Imageshop/FaceBeautification.rar

     话说女人的钱最好赚,所以现在各大流行的图像编辑软件基本上都有个磨皮的功能,这对那些脸上不小心长了小痘痘或者小斑点的美眉来说是在上传照片前的必要和必须步骤。加上现在自恋的人特多,没事有事来个自拍,然后挂到网上炫一把,当然也得把自己的皮肤处理好。 因此啊,国内出了不少这方面的软件,比如美图、可牛、美颜相机、美人相机、Camera360等加入了这个功能,当然还有很多小的手机软件业附带了此项目。

      不过在网络上找寻磨皮方面的算法时,能找到的有用的信息是非常少的,估计这于该算法具有较大的实用和经济价值不无关系,本人经过一番研究,也搞出了一个磨皮的功能,这里就能共享的一些技巧说来给有需要的朋友听听。

  1、磨皮算法的核心: 磨皮可以看成是去噪算法的应用。典型的去噪算法,比如均值模糊、高斯模糊、中值滤波都有很好的去噪效果,但是视觉效果太差。能有效的用于磨皮算法的去噪方式主要是那些能够边缘的算法,典型的比如双边滤波、Non-Local以及BM3D之类的。BM3D据说去噪效果最好。但是后两者到目前为止未看到具有实质意义的快速实现算法,反而是双边滤波,有多篇论文已经提出了可行的加速方案。其实Photoshop中的表面模糊也可以看成是一种双边滤波,因此不少用PS磨皮的过程也大量使用了表面模糊算法的。

      2、头发眼睛等细节部位的保护: 直接使用上述算法得到的结果,针对很多图像会出现头发和眼睛部位的模糊,这种效果对于一个好的磨皮结果来说是不需要的。特别是眼睛,眼睛是心灵的窗口,被模糊了,窗口就不透明了。因此,需要检测出需要磨皮的部分。这个很多人会想到皮肤检测技术。不过我试过了经典的七八种皮肤检测效果,都不能将不同场景的肤色部位全部提取出来。一种方式就是综合好几种肤色检测,取最大区域,这也是一种不错的想法,因为一般的肤色检测速度都是很快的。但是实际的效果表面,这样做对于一些比较极端的图像还是无效的。因此,我采取了一种宁愿错杀一千,也不可放过一个的措施,放松了某一种肤色检测模块里的一些约束条件,使得绝大多数场景下的肤色部分都能够被选中(鉴于某些方面的原因,这个不可详述)。

     3、边缘部分的融合:通过上述保护,得到的保护边缘处是硬边缘,即一个像素时要磨皮的部分,边上的可能就是不需要磨皮的,这样的话处理的效果在视觉会造成一定的僵硬,可能会有某个部分过度不自然,如下图所示(所有图片均来源自网络):

  

           原图                              硬边界磨皮                            软化后磨皮

      一种解决方案就是对得到的硬边界图进行羽化处理,也就是类似高斯模糊之类的算法,这样边缘处就会过渡的较为自然。

    4、处理后的增强:经过这样处理后的图像如果在进行一下边缘的增强,会得到更好的效果,比如在PS磨皮的最后一般喜欢加个USM锐化。

  按照上述思路,编程程序,我实现的磨皮效果如下所示:

    

    

    

    

    

   

                       原图                       本文的磨皮效果                        美图秀秀效果(智能磨皮,参数深)

    由以上几图可以看出,在磨皮质量基本差不多的情况,本文额磨皮的能尽量的保留了头发和眼睛处的细节,这样更自然。

    在算法实现的速度上,我采用了两种双边滤波,一种速度很快,在PC上如果加入多线程完全可以实现普通摄像头的实时磨皮,但是效果有一点瑕疵。另外一种速度稍慢,效果较为稳定。

      一个示例可以从这里下载: http://files.cnblogs.com/Imageshop/FaceBeautification.rar

 

 

 

****************************作者: laviewpbt   时间: 2013.8.23    联系QQ:  33184777转载请保留本行信息********************

© 著作权归作者所有

共有 人打赏支持
abcijkxyz
粉丝 61
博文 6195
码字总数 1876
作品 0
深圳
项目经理
妹纸们的最爱 - 拓幻科技美颜SDK算法

现在各大手机制造商都在主推美颜效果,各种前后2000万像素,照亮你的美,各种逆光也清晰。其实这些看似神秘的美颜效果,除了依赖于手机像素之外,更重要的是攻城狮们对于美颜算法的构造。除了...

tillusory ⋅ 01/31 ⋅ 0

模拟油画和铅笔画的滤镜效果

油画效果 先上未经任何处理的原图 原图.png 然后使用油画风格的滤镜OilPaintFilter看看效果,OilPaintFilter的使用方式就一句话:) 油画效果.png OilPaintFilter在处理人物图片和风景图片时...

Tony沈哲 ⋅ 2017/05/12 ⋅ 0

图像滤镜艺术---人脸编辑(五官微调+瘦脸美型)

原文:图像滤镜艺术---人脸编辑(五官微调+瘦脸美型) 写本文的目的,实际上是对目前人脸美型这一块技术做个总结,跟大家 分享一下! 目前提到美颜算法,大家都会想到磨皮美白 /大眼瘦脸,实际上...

杰克.陈 ⋅ 03/14 ⋅ 0

9- OpenCV+TensorFlow 入门人工智能图像处理-8- OpenCV+TensorFlow 入门人工智能图像处理-图像修复

图像美化 案例1: 直方图 案例2: 直方图均衡化 案例3: 亮度增强 案例4: 磨皮美白 案例5: 图片滤波 案例6: 高斯滤波 颜色等级的直方图。 图片滤波 这一章节所有的知识点都比较复杂,也就是难度...

天涯明月笙 ⋅ 05/08 ⋅ 0

如何开始拍妹(汉)~

1. 拍摄想法 无论拍什么风格,在拍摄之前都要形成想法。想法可以来源于自己的脑洞,如果没有想法或者刚开始摄影,也可以模仿他人 (模仿是最快的进步方式)。 想法应该包含:主题/风格/观念/构...

weberweber ⋅ 2017/12/18 ⋅ 0

看大神用PS修复严重雀斑

看完这对比,我相信你再也不会相信网上糖水照的皮肤嫩得能掐水~ 一组对比图镇楼: PS前 PS后 想必大家都用惯了相机自带美图或者美图秀秀之类的上手就会的美图软件,虽然能把照片中的人物皮肤...

材大难为用 ⋅ 2017/08/10 ⋅ 0

​安卓实时滤镜RTMP推流库--LibreStreaming

Android real-time effect filter rtmp streaming library.using Mediacodec HWencoding&librtmp stream. 安卓实时滤镜RTMP推流库 简介: 支持cpu滤镜和gpu滤镜。 硬编码基于Mediacodec。 推......

lakeinchina ⋅ 2016/09/08 ⋅ 0

VTK简介

VTK(Visualization ToolKit)是一个开放源码、自由获取的软件系统,全世界的数以千计的研究人员和开发人员用它来进行3D计算机图形,图像处理,可视化。 VTK(Visualization ToolKit)是一个开放...

teacheryang ⋅ 2010/10/13 ⋅ 0

女神一秒变路人!腾讯研究AI卸妆效果算法出品“一键卸妆”功能

综合自:快科技、腾讯 国际计算机视觉大会(ICCV)于 10 月 22 日到 29 日在意大利威尼斯举办,会上,腾讯优图团队带来了一个让所有女生恨得牙痒痒的功能——“一键卸妆”。 所谓道高一尺魔高...

ufv59to8 ⋅ 2017/12/16 ⋅ 0

谈谈你对面向对象的理解

Question:请你谈一下面向对象? Answer: 面向对象是相对于面向过程而言的。面向过程语言是一种基于功能分析的、以算法为中心的程序设计方法;而面向对象是一种基于结构分析的、以数据为中心...

DevShaw ⋅ 2016/01/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

apollo配置中心的学习笔记

公司现在配置文件太多了,导致配置文件修改起来还是非常麻烦的。在boss(业务运营支撑系统)中,配置文件是存放在jar包的,通过应用jar包来引用配置文件(区分不同环境)。这种方式虽然能够满足...

miaojiangmin ⋅ 3分钟前 ⋅ 0

Jena增删改查AP

插入、更新数据 public static void insert(){ String query = "PREFIX book: <http://www.book.com/jinyong/> \n" + " INSERT DATA \n" + ......

Vincent-Duan ⋅ 4分钟前 ⋅ 0

springMVC之与json数据交互方法

因为我也要返回json数据。所以需要这个注解@ResponseBody,把Java对象转换成json字符串 注意: 1、@RequestBody不能省,因为前台发过来的数据是json数据,得用这个注解去解析该怎么接收这些数...

颖伙虫 ⋅ 8分钟前 ⋅ 0

用实例域代替序号(31)

1、许多枚举天生就与一个单独的int 值相关联 ordinal 方法,返回枚举常量在类型中的数字位置 下述,枚举修改很不方便,不好维护 永远不要根据枚举的序数导出与他相关联的值 而是将他保存在一...

职业搬砖20年 ⋅ 10分钟前 ⋅ 0

并发编程---ConcurrentHashMap源码解析

ConcurrentHashMap是java中为了解决HashMap不能支持高并发而设计的新的实现。 ConcurrentHashMap的类结构 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements C......

千古一梦888 ⋅ 13分钟前 ⋅ 0

微服务 WildFly Swarm 简介

我们将看到的最后一个Java微服务框架是一个相对较新的场景,它利用了 JBoss WildFly 应用服务器中已试过且受信任的 JavaEE 功能。WildFly Swarm 是 WildFly 应用服务器的一个完整的拆下来的组...

woshixin ⋅ 18分钟前 ⋅ 0

android apk 瘦身

头条APK瘦身之路 随着版本迭代,功能增加安装包体积也会慢慢增大。 今日头条576版本APK达到了25M,通过一系列的优化,到目前的607版本为12M。本文主要是介绍头条APK瘦身中用到的一些方法。 ...

GoldenVein ⋅ 21分钟前 ⋅ 1

mac机器学习开发环境部署及helloworld

一、下载并安装Anaconda2.7 https://repo.anaconda.com/archive/Anaconda2-5.2.0-MacOSX-x86_64.pkg 路径:/Users/shijun/anaconda2 二、运行Anaconda Navigator -> Environments -> base(ro......

八戒八戒八戒 ⋅ 32分钟前 ⋅ 0

关于日常开发的经验总结(Java),持续更新中

常量尽量使用枚举来表示,这样表现力会很强,因为枚举比一个常量类要有更多的扩展性 方法的入参和出参尽量不要使用Map,因为Map会让调用者感到迷惑,他不知道你里面装的什么,面向对象的开发...

小99 ⋅ 33分钟前 ⋅ 0

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 33分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部