一、概述
拍照作为手机中的一大功能,正日益受到人们和厂商的关注。对于用户来说,拍照已经成为生活中不可或缺的活动,特别是自拍,已经成为了这个时代的潮流。
因此,许多互联网企业针对普通拍照和自拍,都精心打造了各种美化照片的软件让用户能够拍出高质量的照片,有更好的留影体验。
本文研究的美容算法,也是出于美化图片的目的,通过对人脸皮肤区域的美化,实现人脸美容的功能,让照片中的人更美。本文所使用的算法的核心是YCrCb高斯肤色模型、Logarithmic curve变换,双边滤波、双指数边缘保留算法
二、算法实现及效果展示
1 皮肤检测
1.1 YCrCb高斯肤色模型
肤色识别的本质是聚类,在指定的色彩空间利用大量样本训练出肤色在该空间的分布情况,从而实现分类。目前,主流的算法区别在于色彩空间选择的不同,例如:
- RGB色彩空间
- YCrCb色彩空间
- YUV色彩空间
- HSV色彩空间
其中由于RGB色彩空间色度信息耦合,所以识别准确率最低;其余三个色彩空间亮度和色度被编码在不同维度,基于特定肤色模型,均有识别率较高的算法。下面主要介绍基于YCrcb色彩空间的高斯肤色模型。
YCrCb色彩空间
- Y亮度分量
- Cb蓝色色度
- Cr红色色度
RGB2YCbCr公式
高斯肤色模型
对大量人种肤色样本的研究后发现,肤色在YCrCb色彩空间呈现二位高斯分布特性,称为混合高斯模型。
下图分别为肤色肤色统计特性与高斯肤色模型:
相似度计算公式
说明:
1.x=为像素点在CrCb空间中的向量,为均值 为方差。
2.依照公式训练参数和:
1.2 算法评测
如图所示,像素点越亮表示该点被判断为皮肤的概率越大。从中可以看出基于YcrCb色彩空间的高斯肤色模型能很好检测图像中的皮肤区域。
1.3 性能优化
由于色彩在YCbCr空间中是离散分布,所以可以用一个映射表存储相应点的概率,利用查表来识别肤色,从而避免的大量的浮点计算。
2 皮肤美白
2.1 概述
皮肤美白作为市场上任何美容软件的必备功能之一,深受爱美女性的喜爱,所谓“一白遮百丑”,可见该功能需求之大。美白的本质就是把皮肤区域变白变亮,而白亮在图像处理中意味着像素点的值增大,但这种增大要在合理的范围内,否则将导致图像失真,所以必须满足对原图的色阶有所增强,且亮度两端增强比例稍弱,中间稍强。
2.2 Logarithmic curve变换
对数曲线公式
其中,表示输入图像,表示输出图像,为可调节参数,此参数越大,美白程度越强。
对数曲线图像
2.3 算法评测
当、时:
3 磨皮祛斑
3.1 引言
磨皮处理本质上是一个滤波的过程,但是滤波算法的设计上必须满足对面部的斑点,即噪声有很好的滤除作用;同时还要保证边缘不被滤除,即保边;甚至优秀的磨皮算法还要保证处理后皮肤的质感。本文介绍两种算法:基于双指数边缘保留算法和双边滤波算法。
3.2 双指数边缘保留算法
在《Bi-Exponential Edge-Preserving Smoother》一文中提出了一个算法流程:
主要是有三个过程组成:
- 前向迭代(1)
- 反向迭代(3)
- 加权合并两个结果(5)
然而上述是个一维的过程,对于二维的图像数据,论文中也给出了解决方式:
- 对原始图像进行一次水平迭代计算,然后再进行垂直迭代计算,该过程称之为BEEPSHorizontalVertical。
- 对原始图像进行一次垂直迭代计算,再对其进行垂直迭代计算,该过程称之为BEEPSVerticalHorizontal。
- 滤波后的图像结果为(BEEPSHorizontalVertical+BEEPSVerticalHorizontal)/2。
3.3 双指数边缘保留算法评测
取=0.995,=20,算法处理效果:
3.4 双边滤波器
参照《Bilateral Filtering for Gray and Color Images》(C. Tomasi)
双边滤波器是一种可以保边去噪的滤波器。该滤波器主要由两个函数组成,一个函数是几何空间距离决定的滤波系数,另一个函数是由像素差值决定的滤波系数。
基本原理
双边滤波公式
其中: 为输入图像在位置q处的像素,为处理后输出像素,为P处邻域内归一化值,用来计算滤波系数和像素差滤波系数的高斯函数。
3.5 算法评测
取领域 d=15,时:
4 整合效果
将高斯肤色模型、Logarithmic curve变换、双边滤波算法整合,得出效果图: