皮肤美白是现在任何一款流行的美颜软件必备的功能之一,不过你如果在互联网上搜索关于美白算法,能直接拿到并使用的可能不多。一直觉得这个算法其实很简单的,并且实现的方式可以说是多种多样,本文分享自己研究过的三种实现方式。

    第一:借用色彩平衡算法

  色彩平衡是Photoshop中常用的一个功能,发现这个算法能实现美白的是从一个叫DigitalCameraEnhance的软件中偶然遇到的,这个软件的界面如下图:

  其中的调节中间影调一栏会发现右侧目的图像美白程度不断增加,于是我想到PS中有中间调的功能最有名的就是色彩平衡,打开色彩平衡功能,把色阶三个框设置为同一个正值,并且不勾选保持明度选项,则图像明显出现美白现象。

  注意第一: 色阶的三个调整值必须相同或者差异很小,不然输出图片会出现偏色,第二:一定选选择中间调;第三:必须不勾选保持明度选项。

关于这个算法的代码,可以从开源的GIMP软件中扣取,其实如果符合上述三个条件,有能力的人就会发现其实最后就是一个映射表而已了,这里不给出具体的算法公式。GIMP是开源的,有这个需求的就应该自己动手去找。

    第二:使用logarithmic Curve。

  美白其实主要使皮肤变白变亮,因此,如果能有个合适的映射表,满足使得原图在色阶上有所增强,并且在亮度两端增强的稍弱,中间稍强,则也是个不错的选择。在研究一篇图像增强论文《A Two-Stage Contrast Enhancement Algorithm for Digital Images 》时发现其中的一个公式非常适合这个情况:

  其中w(x,y) 表示输入图像数据,v(x,y)表示输入结果,beta为调节参数,我绘制了Beta分别为[2,3,4,5]时的曲线,如下图:

  可见,Beta越大,美白的程度越强,我想这个程序实现起来应该很容易吧。

  第三:使用图层混合。

  用Photoshop我是这样做的,打开图像,然后点通道面板,按住Ctrl+ 点击RGB通道图像,这样会得到以图像的强度为内容的选区(选区其实就是一副灰度图像),然后回到图层面板,点新建图层,再点添加图层蒙版按钮,这样就会将刚才所建立的选区的内容作为蒙版,接着将,图层填充为白色。调节新建图层的透明,则可以控制最终美白的程度。

这种方法中以图像强度的内容作为蒙版这一步很重要。

这种图层+蒙版的编码实现其实也就是一些Alpha混合的过程,有兴趣实现的朋友可以自行研究。

我个人认为,如果掌握了PS里调整菜单的大部分算法,很多美图软件里的调色这一块基本上都逃不出手掌心了,当然比如有强大的美工基础作为支撑,先靠美工通过某些步骤摸索出某个效果,然后再靠程序员编码实现,可以我美工不行。

   以上操作都是针对全图进行的处理,这样毕竟会把非肤色部分的地方也处理,在很多情况下可能是不合适的,因此一个更好的方式是进行肤色识别,当然这种肤色识别和我之前的磨皮算法原理也一样,不需要也不应该太准确,在边缘处还必须进行一定的羽化,包括非皮肤部分也应该有一定程度的处理,这样整个图看起来会更加自然一些。

  我用以上三种算法进行了一些处理,效果如下所示:

   

                  原图                                ColorBalance , 参数为75

   

            Log曲线, 参数Beta为5                                 图层混合,不透明度30%

   

                原图                                ColorBalance , 参数为75

   

          Log曲线, 参数Beta为6                                   图层混合,不透明度35%

     

原图                                ColorBalance , 参数为75

    

          Log曲线, 参数Beta为5                                 图层混合,不透明度30%

  纯粹就这个功能来说,和美图秀秀之类的软件区别也不大的。

测试程序下载:http://files.cnblogs.com/Imageshop/SkinWhitening.rar

  以上测试图像均来源于互联网。

图像处理----美白相关推荐

  1. Android视频编辑器(二)预览、录制视频加上水印和美白磨皮效果

    前言      这是视频编辑器系列的第二篇文章,在上篇文章中,我们讲解了利用OpenGl和SurfaceView进行视频预览,MediaCodec和MeidaMuxer进行视频录制和断点续录.而这篇主 ...

  2. 数字图像处理(3) — 基于白平衡的人脸美白算法

    前言 上篇文章介绍了基于VC++的人脸美颜软件的具体原理和编程细节,其中提到了美白效果由于难度和时间关系,借用了另一套图像增强-非锐化掩蔽算法.本篇将着重介绍白平衡人脸美白算法,并给出基于MATLAB ...

  3. 数字图像处理——皮肤美白(Skin whitening)算法实现

    数字图像处理--皮肤美白(Skin whitening)算法实现 一 色调平衡(Color balance )算法 1.1 当选择色调平衡以保持亮度时 1.2 当取消色调平衡并保持亮度时 二 loga ...

  4. 数字图像处理-美图秀秀:美白算法

    简介 本项目是以matlab为主语言并设计GUI界面的一款简易美图秀秀,包含基础的图像处理和一些常见美颜算法 对于一些matlab较难实现的算法采用C++或python来实现 ⭐️ github地址: ...

  5. python用opencv实现图片的美白磨皮_12 - OpenCV+TensorFlow 入门人工智能图像处理-磨皮美白-多智时代...

    磨皮美白 上节课的+固定值,我们还可以变为乘以一个系数. foriinrange(0,height):forjinrange(0,width): (b,g,r)=img[i,j] bb=int(b*1 ...

  6. 【图像处理·实验三】matlab 去除人脸图像中的雀斑,人脸美白

    以下内容均有参考, 非原作者允许,请勿用于商业用途!!! 仅供大家学习交流所用!! 一. 实验内容 1. 去除人脸图像中的雀斑 2. 去除图像中的背景和水印的去除. 二. 实验目的 1. 综合运用图像 ...

  7. 图像处理(七)导向滤波磨皮

    导向滤波磨皮的对应文献为:Guided Image Filtering,这个算法速度极其之快,比其他的保边缘磨皮算法都快,甚至快上好几倍.这个算法最初来自于何明凯的图像去雾算法中,现在已然被应用封装与 ...

  8. matlab导向滤波磨皮,图像处理(七)导向滤波磨皮

    导向滤波磨皮的对应文献为:Guided Image Filtering,这个算法速度极其之快,比其他的保边缘磨皮算法都快,甚至快上好几倍.这个算法最初来自于何明凯的图像去雾算法中,现在已然被应用封装与 ...

  9. JC-6、OpenCV+Tensorflow入门人工智能图像处理

    目录 Beginner 1. Anaconda下载与环境搭建 2. 计算机视觉入门 hello world 2.1. OpenCV基础操作 2.1.1. 图片的读取与展示 2.1.2. OpenCV中 ...

最新文章

  1. linux libuv 交叉编译 高性能事件驱动库
  2. Linux(Ubuntu)常用命令(二)
  3. chartcontrol饼状图属性设置_温故而知新,ggplot2 饼图的几点笔记
  4. MySQL 之Navicat Premium 12安装使用、pymysql模块使用、sql注入问题的产生与解决
  5. 关于Linux和Windows的换行符
  6. CYQ.Data 轻量数据访问层(四) 构造数据单元列
  7. 2017.9.18 calc 失败总结
  8. 利用WPS 2013文字制作精美的信纸的方法
  9. 计算机应用与推广,计算机在中小学教学中的推广和应用
  10. 【2019秋招】OPPO无线通信协议工程师笔试
  11. 微软易升级服务器,通过“微软Windows10易升”升级Win10 1803全程图解
  12. 揭秘淘宝286亿海量图片存储与处理架构(转)
  13. 【Heydrones】飞手百科第一篇:一定要看的无人机原理总结
  14. 浏览器打开163邮箱提示“登录环境异常,暂时无法登录”?可能是电脑在念旧……(NET::ERR_CERT_DATE_INVALID)
  15. java实现登录注册界面
  16. OpenGL导入3DMax模型(.3DS)
  17. 仅需24小时,带你基于PaddleRec复现经典CTR预估算法
  18. postman接口自动化(三)变量设置与使用
  19. GHOST WIN8 32位软件自选安装专业优化版 201307 V4.0
  20. Shamir秘密共享算法

热门文章

  1. html5 meter,html5 meter标签是什么意思?html5 meter标签的用法及属性介绍
  2. CDH Oozie邮件配置
  3. Line披露母公司Naver详情:去年营收28.4亿美元
  4. mcafee 杀毒软件防火墙下载和病毒库升级及设置教程
  5. 面试常见几种排序算法 Java代码总结
  6. jQuery 如何得到 scrollHeight 的值
  7. matlab中求虚数的模,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
  8. Web API Request Content多次读取
  9. 全志a10 Android,全志A10 android平台CVBS效果调试
  10. linux管理工具WDCP的安装教程