您的当前位置:首页正文

一种基于HSV空间的人像高光区域自适应修正方法

来源:九壹网
一种基于HSV空间的人像高光区域自适应修正方法

郑利华;张亚红

【摘 要】基于HSV色彩空间模型,分析比较了彩色照片中人脸正常肤色特征和高光特征,采用自动设置相关参数的方法,提出了一种HSV三个分量同时矫正的高光修正方案,并对方案的修正效果进行实验验证.该方案首先根据人脸肤色特征对相片中人脸区域进行分割,得到正常皮肤区域HSV三分量的平均值,然后根据皮肤高光程度对高光区各分量进行恰当的处理,实现人脸彩色照片的高光修正.实验结果表明:该算法在消除了图像的高光后,极大改善了图像的视觉效果.

【期刊名称】《桂林航天工业学院学报》

【年(卷),期】2012(017)003

【总页数】4页(P243-246)

【关键词】照片;肤色检测;高光;修正

【作 者】郑利华;张亚红

【作者单位】桂林航天工业学院信息工程系,广西 桂林541004;桂林航天工业学院信息工程系,广西 桂林541004

【正文语种】中 文

【中图分类】TP391.41

人脸高光是使用单闪光灯摄影中常出现的问题,适量的高光可以体现脸部的凹凸从而使照片具有立体感。但在使用相机内置闪光灯或一般的闪光灯时,油腻的皮肤由于镜面反射,局部产生的高光严重影响相片的视觉效果。图像中的高光还经常是导致图像分割、识别以及匹配产生错误的重要原因。因此,高光修正是许多人脸相片,尤其是证件相片在后期处理上的一个重要环节。

在一般的摄影中,由于拍摄时使用的闪光灯距离镜头很近,当拍摄对象脸有油腻时,脸上一些区域会出现镜面反射造成的高光,对照片的视觉效果影响极大。由于这些高光区域已经完全丢失了色彩信息,所以一般的软件很难对这些高反光区域进行有效处理,达到去除高光并恢复色彩的目的。

文献[5]提出的修正方案需要用户设置最大的修改半径并且要由用户在图像中点击鼠标以确定修正中心,文献[1]将图像由RGB颜色空间转换到YUV颜色空间,在YUV颜色空间里,通过一个5次多项式只对亮度信息y进行转换,这个多项式对图像的不同亮度区域使用不同的转换率。在亮度值较强区域使用较大的转换变化率来反映原图像的纹理,在亮度值较低的区域使用较低的转换率,以保持原有图像的特征。

本文基于HSV色彩空间,分析正常人脸的肤色特征和皮肤高光特征,提出基于HSV彩色分量补偿的高光修正方案,对H、S、V三个分量分别矫正。实验表明,本文的方法

在去除了高光的同时,不仅可以得到漫反射光的明暗变化,而且图像整体色彩真实、自然。

1 HSV颜色空间

RGB色彩空间主要用于设备获得和表示色彩,但是R、G、B数值和色彩的属性没有直接的联系,不能揭示色彩之间的关系。并且R、G、B三个分量是高度相关的,当物体的亮度改变时,R、G、B三个分量会同时发生改变,所以RGB色彩空间很不适合色彩分析和处理。

本文采用的是HSV(色相hue,饱和度sat uration,明度value)色彩空间,它采用的是用户直观的色彩描述方法,直接使用色彩的三要素,即色相hue、饱和度saturation、明度value来描述色彩,与人眼的色彩感知特性吻合。更重要的是HSV颜色空间消除了R、G、B分量间的相关性,比较适合本文的算法。

HSV颜色空间的模型在概念上可以被认为是颜色的倒圆锥体。在这种表示中,色相H被表示为绕圆锥中心轴的角度,红色对应于角度0°,绿色对应于角度120°,蓝色对应于角度240°。饱和度S被表示为从圆锥的横截面的圆心到这个点的距离,取值范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。当S=0时,只有灰度。明度V被表示为从圆锥的横截面的圆心到顶点的距离,表示色彩的明亮程度,黑点在下顶点,白色在上底面圆心,范围从0到1。

RGB转化到HSV的算法:

将变换后的 H归一化,则 H,S,V∈[0,l]。HSV空间是RGB空间的非线性变换,它将原本相关性很强的R、G、B值转换为相关性较弱的 H、S、V值,H和S分量与人感受色彩的方式相一致。在HSV空间中彩色图像的每一个均匀性色彩区域都对应一个相对一致的色相(Hue),使得色相能够单独用来进行彩色区域的分割。

2 肤色特征分析

虽然人的皮肤颜色因人而异,但特定的一个人的皮肤颜色是单一的,而眼睛、头发等部位的色相和皮肤有明显的区别,这是本文确定肤色区域的算法基础。我们将图像由RGB色彩空间转化到HSV颜色空间,以下的分析和处理都在HSV颜色空间进行。

2.1 人脸皮肤区域的划分

图1是人像中正常皮肤部分某一行的H、S、V曲线图,上方照片中的暗线为被分析的行。

图1 正常皮肤一行的HSV曲线

通过对图像HSV曲线分析,我们可以得出正常皮肤在HSV色彩空间的特征:

1.色相H基本保持稳定,波动很小,与明暗变化无关;

2.皮肤的明暗变化使得明度V曲线在一定的范围内变化;

3.饱和度S也在一定的范围内变化。

2.2 高光肤色特征

图2是人像中高光区域某行的H、S、V曲线图,上部图片中的暗线为被分析的行。从图中可以看出,高光区域所呈现的明度值V明显要高于周围像素的明度值,因此对高光区域肤色的辨别可基于像素的明度。从图2中还可以看到高光区域的饱和度S分量也有明显的特征:饱和度低于正常皮肤区域,即高光区域的饱和度比较低,过低的饱和度意味着这些像素点已经失去了色彩信息,可称之为“死白”。

图2 高光皮肤一行的HSV曲线

通过对高光区域和正常区域的分析和比较,得出高光皮肤在HSV色彩空间的特征:

1.明度V很高;

2.饱和度S很低;

3.色度H有较大的波动。

3 高光修正方案

根据高光区域的特点,本文提出的修正方案是:对高光区域中超过阈值的亮度进行动态范围压缩,使其不致过高;对高光区域中低于阈值的饱和度进行动态范围压缩,使其不

致过低;对高光区域中的色相H进行调整,使其与正常区域的色相相近。

3.1 获得正常皮肤的平均值

首先要找出图像中的正常皮肤区域,以获得正常皮肤区域H、S、V分量的平均值作为下一步修正的基准。曝光准确的人像人脸肤色会集聚在色彩空间中某个特定的区域内,即皮肤色相H应该在一个较小的范围内波动。文献[4]分析比较了多个人脸肤色分布规律,将人脸图像变换到HSV空间 ,观察其H直方图,绝大部分直方图中H值均匀、集中地分布在0.015~0.09的范围内,也有一大部分的H值仅仅集中分布在0.055~0.09范围内,还有一部分的H分布在0.08~0.136的范围内,最后选取用作肤色分割的H阈值为0.03~0.128。也就是说,不同人的肤色H值其实是在一个大的范围内波动。实际上,不同的摄影设备,或由于白平衡不准确,或拍摄时受环境灯光的影响,或对于不同肤色的人种,皮肤的色相范围会很宽,所以不宜在一个事先固定的色相范围内找寻皮肤。本文采用的方法是:对每一幅人像在一定范围内寻找H直方图的最大峰,这个峰对应的色相值就是人脸皮肤的色相H中心值most_H。凡是色相H值落在此中心值上下一定范围内的像素点确定为皮肤,这样可以从图像中除去背景、嘴唇、眼睛、头发、鼻孔和高光部位,剩下的就是脸部正常的皮肤。之后算出脸部正常皮肤明度V的平均值Mean V和饱和度S的平均值MeanS,作为下一步自动修正的基准。

3.2 V分量的修正

通过一个多项式函数用新的亮度值V替换掉原来的亮度v,该多项式函数的设计目标是:只将高光部分对应的大V值压缩,中低亮度的V值不受影响。用Matlab的polyfit

函数进行曲线拟合,多项式函数拟合形式为:polyfit(xdata,ydata,n),其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入,输出参数为拟合多项式的系数。出于运算量和精度的折中考虑,通过反复试验和比较,最终设计出下面的3次多项式方程:

式中,v表示原亮度值,V表示转换后的亮度值。

图3 明度转换特性

图3 是该多项式的转换特性。可以看出,本文设计的转换方程只对超过一定范围的v进行了动态范围的压缩,对中、低明度几乎没有影响。这样可以做到在去除图像中高光的同时,保证中、低亮度正常像素的亮度基本不发生变化,从而保护图像正常部分的原始信息,使图像的总体不发生大的变化。

3.3 H分量的修正

由于高光区域的色度H有较大的波动,也就是说,高光区域的色度H严重偏离了正常皮肤的色度。所以需要将这一区域的色度值复原,方法是用前面得到的色相H的平均值Mean H代替高光区域的色度。为了使高光区域的色相更逼真,我们还加了一个随机量。Matlab程序如下:

式中的most_H是在整个图像的色相H的直方图中找寻最大峰,这个峰对应的色相值就是人脸皮肤的色相H中心值。

L(i,j)是先前标定出的高光区域,L(i,j)=1说明此像素点是高光像素,需要进行色相调整。高光区域的确定是依据像素点的亮度值V,当超过一个阈值就认定为高光,rand这个函数能产生[0,1]之间的随机数。

3.4 分量的修正

饱和度S的修正至关重要,如果用平均饱和度MeanS来替代高光区域各像素的饱和度,则在修正后图像的高光区域会明被一大块单一颜色的区域代替,照片很不自然。所以,本文采用的算法是将低于平均饱和度MeanS的像素的饱和度按照下面算法进行处理,既减缓降低的程度,又保留变化趋势,可以表明亮度的不同。

算法如下

实验表明,本文的方法可以保留漫反射光的明暗变化,并得到比直接应用补色方法更好的结果。

4 实验效果

为验证本方案对高光区的修正效果,选取了一些不同相机实际拍摄的照片,这些照片由于拍摄时使用了闪光灯,当拍摄对象的脸上油比较多时,出现了镜面反光造成的高光区域。通过本文算法的处理,直观上看,照片中脸上的高光完全消失,并且亮度、颜色过渡自然,看不出有修改过的痕迹,效果令人满意。结果如图4所示。

图4 处理前后的效果比较

表1 处理前后各分量标准差比较H S V 0.2752 0.1331 0.3217处理后处理前0.2736 0.0808 0.2952

表1是处理前后各分量标准差比较,可以看出,处理后饱和度S和明度V的标准差有明显的减少,表明高光部分得到了有效的改善;色相H没有明显的改变,说明本文算法对色相没有明显的改变,保持了源图像的色相。

5 结束语

本文采用的基于肤色补偿的修正方案计算简单,采用自动设置相关参数的方法,提出了一种HSV三个分量同时矫正的高光修正方案。因为皮肤的修正基色可根据实际人像的肤色来自动获取值,所以在实际应用中,该方案对大多数人脸彩色照片均能取得令人满意的高光修正效果。在一些实验中我们还发现,一些照片的高光区即使亮度不是很高,但仍然十分刺眼,原因是这些高光区的饱和度低,色彩上显得突兀。今后的工作是对这类图片也能自动处理。

参考文献

[1] 王超群,朱方文.一种去除单张图片中高光的方法[J].上海大学学报:自然科学版,2007,13(2):151-154.

[2] 陈锻生,刘政凯.彩色图像人脸高光区域的自动检测与校正方法[J].软件学报,2003,14(11):1900-1906.

[3] 林开颜,吴军辉,徐立鸿.彩色图像分割方法综述[J].中国图象图形学报,2005,10(1):1-8.

[4] 田巍,庄镇泉.基于 HSV色彩空间的自适应肤色检测[J].计算机工程与应用 ,2004,40(14):81-85.

[5] 江玉珍.基于肤色补偿的人脸彩色照片高光修正方案[J].广西科学院学报,2008,24(2):95-97.

因篇幅问题不能全部显示,请点此查看更多更全内容

Top