图像处理----美白
皮肤美白是现在任何一款流行的美颜软件必备的功能之一,不过你如果在互联网上搜索关于美白算法,能直接拿到并使用的可能不多。一直觉得这个算法其实很简单的,并且实现的方式可以说是多种多样,本文分享自己研究过的三种实现方式。
第一:借用色彩平衡算法
色彩平衡是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
以上测试图像均来源于互联网。
图像处理----美白相关推荐
- Android视频编辑器(二)预览、录制视频加上水印和美白磨皮效果
前言 这是视频编辑器系列的第二篇文章,在上篇文章中,我们讲解了利用OpenGl和SurfaceView进行视频预览,MediaCodec和MeidaMuxer进行视频录制和断点续录.而这篇主 ...
- 数字图像处理(3) — 基于白平衡的人脸美白算法
前言 上篇文章介绍了基于VC++的人脸美颜软件的具体原理和编程细节,其中提到了美白效果由于难度和时间关系,借用了另一套图像增强-非锐化掩蔽算法.本篇将着重介绍白平衡人脸美白算法,并给出基于MATLAB ...
- 数字图像处理——皮肤美白(Skin whitening)算法实现
数字图像处理--皮肤美白(Skin whitening)算法实现 一 色调平衡(Color balance )算法 1.1 当选择色调平衡以保持亮度时 1.2 当取消色调平衡并保持亮度时 二 loga ...
- 数字图像处理-美图秀秀:美白算法
简介 本项目是以matlab为主语言并设计GUI界面的一款简易美图秀秀,包含基础的图像处理和一些常见美颜算法 对于一些matlab较难实现的算法采用C++或python来实现 ⭐️ github地址: ...
- python用opencv实现图片的美白磨皮_12 - OpenCV+TensorFlow 入门人工智能图像处理-磨皮美白-多智时代...
磨皮美白 上节课的+固定值,我们还可以变为乘以一个系数. foriinrange(0,height):forjinrange(0,width): (b,g,r)=img[i,j] bb=int(b*1 ...
- 【图像处理·实验三】matlab 去除人脸图像中的雀斑,人脸美白
以下内容均有参考, 非原作者允许,请勿用于商业用途!!! 仅供大家学习交流所用!! 一. 实验内容 1. 去除人脸图像中的雀斑 2. 去除图像中的背景和水印的去除. 二. 实验目的 1. 综合运用图像 ...
- 图像处理(七)导向滤波磨皮
导向滤波磨皮的对应文献为:Guided Image Filtering,这个算法速度极其之快,比其他的保边缘磨皮算法都快,甚至快上好几倍.这个算法最初来自于何明凯的图像去雾算法中,现在已然被应用封装与 ...
- matlab导向滤波磨皮,图像处理(七)导向滤波磨皮
导向滤波磨皮的对应文献为:Guided Image Filtering,这个算法速度极其之快,比其他的保边缘磨皮算法都快,甚至快上好几倍.这个算法最初来自于何明凯的图像去雾算法中,现在已然被应用封装与 ...
- JC-6、OpenCV+Tensorflow入门人工智能图像处理
目录 Beginner 1. Anaconda下载与环境搭建 2. 计算机视觉入门 hello world 2.1. OpenCV基础操作 2.1.1. 图片的读取与展示 2.1.2. OpenCV中 ...
最新文章
- linux libuv 交叉编译 高性能事件驱动库
- Linux(Ubuntu)常用命令(二)
- chartcontrol饼状图属性设置_温故而知新,ggplot2 饼图的几点笔记
- MySQL 之Navicat Premium 12安装使用、pymysql模块使用、sql注入问题的产生与解决
- 关于Linux和Windows的换行符
- CYQ.Data 轻量数据访问层(四) 构造数据单元列
- 2017.9.18 calc 失败总结
- 利用WPS 2013文字制作精美的信纸的方法
- 计算机应用与推广,计算机在中小学教学中的推广和应用
- 【2019秋招】OPPO无线通信协议工程师笔试
- 微软易升级服务器,通过“微软Windows10易升”升级Win10 1803全程图解
- 揭秘淘宝286亿海量图片存储与处理架构(转)
- 【Heydrones】飞手百科第一篇:一定要看的无人机原理总结
- 浏览器打开163邮箱提示“登录环境异常,暂时无法登录”?可能是电脑在念旧……(NET::ERR_CERT_DATE_INVALID)
- java实现登录注册界面
- OpenGL导入3DMax模型(.3DS)
- 仅需24小时,带你基于PaddleRec复现经典CTR预估算法
- postman接口自动化(三)变量设置与使用
- GHOST WIN8 32位软件自选安装专业优化版 201307 V4.0
- Shamir秘密共享算法
热门文章
- html5 meter,html5 meter标签是什么意思?html5 meter标签的用法及属性介绍
- CDH Oozie邮件配置
- Line披露母公司Naver详情:去年营收28.4亿美元
- mcafee 杀毒软件防火墙下载和病毒库升级及设置教程
- 面试常见几种排序算法 Java代码总结
- jQuery 如何得到 scrollHeight 的值
- matlab中求虚数的模,matlab计算带有复数的函数,最后求复数函数的模,结果里面却有...
- Web API Request Content多次读取
- 全志a10 Android,全志A10 android平台CVBS效果调试
- linux管理工具WDCP的安装教程