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

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

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

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

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

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

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

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

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

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

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

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

本文来源:http://blog.csdn.net/laviewpbt/article/details/20290763

c语言中人脸磨皮算法,人脸磨皮算法相关推荐

  1. c语言实现点在多边形内部,C语言中实现 点在多边形内 算法

    来源: 天极网 作者: 若水 2008-05-15/01:29 本文是采用射线法判断点是否在多边形内的C语言程序.多年前,我自己实现了这样一个算法.但是随着时间的推移,我决定重写这个代码.参考周培德的 ...

  2. r语言pls分析_R语言中的偏最小二乘PLS回归算法

    偏最小二乘回归: 我将围绕结构方程建模(SEM)技术进行一些咨询,以解决独特的业务问题.我们试图识别客户对各种产品的偏好,传统的回归是不够的,因为数据集的高度分量以及变量的多重共线性.PLS是处理这些 ...

  3. c语言中余数恒等于1,费马小定理_KANGMANG201102_新浪博客

    费马小定理是数论中的一个重要定理,其内容为: 假如p是质数,且(a,p)=1,那么 a^(p-1) ≡1(mod p) 假如p是质数,且a,p互质,那么 a的(p-1)次方除以p的余数恒等于1 费马小 ...

  4. android 人脸检测 facedec,智能访客系统中的人脸检测及方向判别算法.pdf

    智能访客系统中的人脸检测及方向判别算法,人脸识别算法,人脸检测算法,opencv人脸识别算法,人脸识别算法有哪些,人脸识别pca算法,人脸比对算法,android人脸识别算法,adaboost人脸检测 ...

  5. python用opencv实现图片的美白磨皮_opencv----人脸美白算法,祛斑,祛痘,磨皮等...

    现在各种手机camera软件都自带图像美颜处理,但是成熟的算法在网上很难搜到,博主也是自己摸索了自己做出来了,跟美图秀秀的处理效果相比,还不错,感觉很好,所以PO上来,与各位博友分享之. 首先是根据网 ...

  6. 人脸识别安全帽识别检测算法 opencv

    人脸识别安全帽识别检测算法通过opencv+python深度学习架构模型,对于现场画面中人员行为及安全帽穿戴着装进行实时分析检测.OpenCV的全称是Open Source Computer Visi ...

  7. opencv算法+人脸检测

    文章目录 ORB算法 视频读写 图像人脸识别 摄像头实时人脸检测 ORB算法 orb算法结合了Fast和Brief算法,提出了构造金字塔,为Fast特征点添加了方向,从而使得关键点具有了尺度不变性和旋 ...

  8. 人脸识别,人脸关键点检测算法

    from http://blog.csdn.net/sloanqin/article/details/48193119 1 Face++:http://www.faceplusplus.com.cn/ ...

  9. python人脸比对算法_人脸比对算法-人脸比较(1:N)

    第1章前言 设计一个1:N的人脸,随着N的增加,最小化精度降低的解决方案具有很强的现实意义.人脸1:N的框架大致可分为:人脸检测,人脸对齐,人脸映射和人脸识别LOSS设计,其结构如下图所示: 图1:人 ...

  10. 人脸识别之人脸对齐(三)--AAM算法

    原文: http://blog.csdn.net/colourfulcloud/article/details/9774017 AAM(Active Appearance Model)主动外观模型 ...

最新文章

  1. java数字转大写 其他报异常_【踩坑系列】使用long类型处理金额,科学计数法导致金额转大写异常...
  2. Python 数据类型之字典
  3. C++:52---多重继承
  4. JDK和JRE它们之间的关系及区别
  5. JVM的内存区域划分
  6. 新浪云python示例_新浪SAE部署python项目
  7. HDU2046 骨牌铺方格【递推】
  8. SpringMVC教程
  9. [kuangbin带你飞] 专题一简单搜索
  10. Protel 99SE在Win10下按键就卡,无法使用
  11. html 透明玻璃效果图,CSS3教程实现模糊透明玻璃效果
  12. 2022-07-25
  13. python做生词本_Kindle 阅读器“生词本”功能详细使用说明
  14. 将文本格式转为kindle可用格式
  15. java实现支付宝网页扫码支付
  16. 机器人关节控制硬件知识——伺服电机、驱动器、控制器
  17. 发现fir.im的bug,可以获取fir.im用户的任何软件id和用户token。
  18. 基于NT98530的多目VR摄像机方案,多sensor同步,多sensor防抖,PTP校时,实景SLAM数字孪生的最佳搭档。
  19. 穿越NAT的SDWAN技术实现(下)
  20. GiveMeSomeCredit——信用评分卡模型

热门文章

  1. Android 即时通讯
  2. WPS三线表的绘制方法
  3. 计算机服务器机房设计方案,机房设计方案.pdf
  4. MOSFET器件手册关键参数解读
  5. 运用Excel实现描述性统计分析
  6. SIRS传染病模型求解及MATLAB实现
  7. QT5/C++项目:基于QT的跨平台网络对战象棋(二)(推荐★★★★)
  8. 汉诺塔递归算法Java实现
  9. Access2016学习4
  10. java 验证码图片不显示图片_验证码图片生成及无法显示问题的解决