对皮肤美白算法的一些研究。

     第一:借用色彩平衡算法

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

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

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

     第二:使用logarithmic Curve。

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

  可见,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

     

****************************基本上我不提供源代码,但是我会尽量用文字把对应的算法描述清楚或提供参考文档************************

*************************************因为靠自己的努力和实践写出来的效果才真正是自己的东西,人一定要靠自己*******************

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34509 人正在系统学习中 相关资源:我国某大型软件企业美国软件外包案例(44PPT)_业务外包案例-外包…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年6月12日
下一篇 2014年6月13日

相关推荐