文档章节

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

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:41
字数 1282
阅读 8
收藏 0
点赞 0
评论 0

  

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

     第一:借用色彩平衡算法

  色彩平衡是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

     

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

  

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

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

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

 

 

 写博不易,土豪请打赏,屌丝一分也是爱(非强制要求):

本文转载自:http://www.cnblogs.com/Imageshop/p/3843635.html

共有 人打赏支持
abcijkxyz
粉丝 60
博文 6196
码字总数 1876
作品 0
深圳
项目经理
产品一:葡萄籽的美肌功效

隔离紫外线 紫外线会伤害到人的肌肤,使肌肤产生皱纹和黑斑。这是因为日光产生的紫外线会产生大量有害的自由基,从而引起肌肤红热敏感,进而导致肌肤变黑,并产生色斑(日晒斑)。葡萄籽是天...

ZHXIA
2016/07/30
9
0
神经网络诊断皮肤癌超越人类专家?来自医疗界的这篇论文给出了证明

  选自MedicalXpress   作者:European Society for Medical Oncology   机器之心编译      今日,一篇关于皮肤癌诊断的文章发表在医疗期刊《肿瘤学年鉴》(Annals of Oncology)上...

机器之心
05/29
0
0
化妆品效能检测设备中的机器视觉技术

经过短短的十几年时间,我国的美容行业取得了很大的进步,随着我国的经济不断地发展,人们的生活水平越来越高。近几年来中南亚美容市场在逐渐增大,并且特别是中国的美容市场增长迅速。 机器...

gunser
04/09
0
0
无需采血就能监测化疗副作用,预防致命感染还能这么做

  白细胞数量的急剧下降是化疗最主要的副作用之一,将导致患者承受感染风险。近日,麻省理工学院的研究人员发明了一种用来监测患者白血胞水平的便携式设备,能够做到无需采血,在家使用。 ...

DeepTech深科技
04/09
0
0
腾讯 AI Lab 主任张潼博士:机器学习里的优化问题

雷锋网 AI 科技评论按,日前,在由上海财经大学交叉科学研究院(RIIS)主办,杉数科技有限公司协办的「现代运筹学发展讨论会」上,腾讯 AI Lab(腾讯人工智能实验室)主任张潼博士发表了精彩...

思颖
01/10
0
0
人造皮肤有了“感觉”,人造神经系统了解一下

     设想一下,有一天你的家庭机器人不小心被重物砸了一下脚,然后跟真人一样可怜巴巴地对着你撒娇喊痛,你可能还会耐心地安慰它……放心,不是闹鬼了,而是你的机器人有“感觉”了。 ...

深度学习
06/22
0
0
美图影像实验室发布 AI 测肤,可用照片诊断皮肤问题

雷锋网按,北京时间12月21日,美图公司 AI 技术研究中枢——美图影像实验室 MTlab 发布其人工智能最新技术成果:AI测肤技术MTskin——即通过一张面部照片诊断皮肤问题。 MTlab 成立于2010年,...

思颖
2017/12/22
0
0
皮肤细菌能产生抗癌分子!人体微生物又现“必杀技”,而且只杀癌细胞

  你知道吗?在你我身体住着一群群我们肉眼看不到的微生物,而它们不单单只是寄住,它们也为我们的身体健康贡献良多。   目前许多研究显示,这些居住在人体的共生微生物群对于健康的重要...

DeepTech深科技
03/20
0
0
GIS算法的一点理解

在GIS这个专业也混了好几年了,但是始终没有对GIS算法有过真正的研究,可以说大部分不懂。 目前关于GIS算法的书籍不是特别多,数来数去也就那么几本,南师大几个老师编写的地理信息系统算法基...

长平狐
2013/12/25
135
1
余存江:不只让机器人知冷热丨“35岁以下科技创新35人”中国榜单

  自 1999 年起,《麻省理工科技评论》每年都会推出“35岁以下创新35人”(Innovators Under 35 China)榜单,旨在于全球范围内评选出被认为最有才华、最具创新精神,以及最有可能改变世界...

DeepTech深科技
04/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

线程安全,底层实现原理和JMM

让多线程下的类安全起来:无状态、加锁、让类不可变、栈封闭(方法封装) 、安全的发布对象(不暴露成员) 死锁 一定发生在多个线程争夺多个资源里的情况下,发生的原因是每个线程拿到了某个(某...

这很耳东先生
8分钟前
0
0
MyBatis源码解读之延迟加载

1. 目的 本文主要解读MyBatis 延迟加载实现原理 2. 延迟加载如何使用 Setting 参数配置 设置参数 描述 有效值 默认值 lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延...

无忌
14分钟前
0
0
javascript 类变量的实现

代码如下: function echo(){ for(let i=0;i<arguments.length;i++) console.log(arguments[i]);}function extend(o, p){for (prop in p) {o[prop] = p[prop]}retur......

backbye
18分钟前
0
2
编程语言对比分析:Python与Java和JavaScript(图)

编程语言对比分析:Python与Java和JavaScript(图): 凭什么说“Python 太慢,Java 太笨拙,我讨厌 JavaScript”?[图] 编程语言生而为何? 我们人类从原始社会就是用语言表达自己,互相沟通...

原创小博客
26分钟前
0
0
Akka构建Reactive应用《one》

看到这Akka的官网,描述使用java或者scala构建响应式,并发和分布式应用更加简单,听着很高级的样子,下面的小字写着消息驱动,但是在quickstart里面又写容错事件驱动,就是这么钻牛角尖。 ...

woshixin
38分钟前
0
0
ffmpeg源码分析 (四)

io_open 承接上一篇,对于avformat_open_input的分析还差其中非常重要的一步,就是io_open,该函数用于打开FFmpeg的输入输出文件。 在init_input中有这么一句 if ((ret = s->io_open(s, &s-...

街角的小丑
39分钟前
0
0
String,StringBuffer ,StringBuilder的区别

不同点 一、基类不同 StringBuffer、StringBuilder 都继承自AbStractStringBuilder,String 直接继承自 Object 2、底层容器“不同” 虽然底层都是字符数组,但是String的是final修饰的不可变...

不开心的时候不要学习
55分钟前
0
0
nodejs 文件操作

写文件code // 加载文件模块var fs = require("fs");var content = 'Hello World, 你好世界!';//params 文件名,内容,编码,回调fs.writeFile('./hello.txt',content,'utf8',function (er......

yanhl
57分钟前
0
0
SpringBoot mybits 查询为0条数据 但是在Navicat 中可以查询到数据

1.页面请求: 数据库查询: 2018-07-16 17:56:25.054 DEBUG 17312 --- [nio-9010-exec-3] c.s.h.m.C.selectSelective : ==> Preparing: select id, card_number, customer_id, customer_nam......

kuchawyz
今天
0
0
译:Self-Modifying cod 和cacheflush

date: 2014-11-26 09:53 翻译自: http://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code Cache处在CPU核心与内存存储器之间,它给我们的感觉是,它具......

我叫半桶水
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部