王东
(广东岭南职业技术学院,广东广州510663)
人脸识别技术是计算机信息处理中最热门的技术,它结合了图像技术、计算机图形学、模型识别等多个领域。人脸识别技术分4个方面:(1)皮肤检测,在图像中寻找出人脸区域,也可以说是将图像中的背景和人的肤色进行分离;(2)人脸规范化,即校正人脸在尺度、光照和旋转等方面的变化;(3)特征提取,从人脸图像中映射提取一组能反映人脸特征的数值表示样本;(4)特征匹配,将待识别人脸与数据库中的已知人脸比较,得出相关信息。由于背景的复杂性、光照条件多变以及人脸表情丰富等原因,所以在人脸识别过程中必须要寻求一些能够有效预防干扰的方法。
本文将自动化皮肤检测作为研究的主要课题,并作为人脸识别的第一步,该项研究在诸如安全监控、安检系统、智能人机接口等领域具有广泛的应用价值。
在基于皮肤颜色的面部检测中,有两种主要的方法:
第一种方法是基于像素的模型,它通过处理人类皮肤颜色的所有部分的像素进行检测。在这种方法中,每一个像素是被单独处理的,并且它的最终状态是判定是否为皮肤颜色,然后,基于面部结构或其它的选项进而确定出图像中的哪些像素点属于面部;
第二种方法是基于图像区域的状态,在这种方法中,面部图像是首先隔离一张图像中的某些区域,然后确定隔离区域是否属于面部区域。
通常识别人脸图像都是在计算机里完成的,所以这些图像都是属于二维RGB形式的图像。所谓的RGB图像是通过红色(R)、绿色(G)和蓝色(B)来实现彩色图像的。它本身是采用DIE三维色彩空间,RGB的色彩数值是0-255,一共256级。0为色彩最弱的部分,呈现的颜色是黑色;而255表示色彩最强的部分,呈现的颜色是白色。它常被使用在计算机显示设备中,所以它对光线的亮暗度是比较敏感的。在用RGB时最简单的方法是将彩色图像转换成灰色图像并取这三种颜色的分量的平均值。
JPEG图像压缩格式采用的是YUV空间,YUV空间是RGB空间的线性变换。转换公式如下:
以Y分量作为图像像素的灰度。将彩色像素转换为灰度像素的公式为:
遍历彩色图像的每一个像素矢量,设矢量的红、绿、蓝三色分量值为R、G、B,则输出的灰度图像的对应像素的值为0.299R+0.587G+0.114B。
现在有很多的颜色模型对图像处理都有着很重要的作用,而且种类很多。当今广泛使用的颜色定义和模型有:YUV,RGB,HIS,HSV,Normal RGB和YCrCb。在文中我们采用了HSV(Hue-Saturation-Value)颜色空间作为皮肤检测的主要方法。它就是改变色浓和色深来获得某种不同的颜色,也就是说,改变白色和黑色的比例,它是采用直观的方法来描述图像。
相对RGB,HSV更能表示出感知颜色的联系,并在计算中保持简单性。H(Hue)是色相,表示色彩的基本属性,比如红色、黄色等;S(Saturation)是饱和度,表示色彩的纯度,S越高色彩纯度越高;反之,S越小色彩纯度越低,图像灰度化更加明显,S的取值范围是1%-100%;V(Value)是明度(也叫做亮度),其取值范围是0%-100%。HSV色彩空间把颜色通过圆柱坐标系加以描述,如图2所示。图中所示圆柱中心轴的取值为底部黑色,而顶部为白色,中间为灰色。它常用于计算机图形应用中,在运用图3时必须选择一个颜色做为特定图形元素,在本文实验中选取的颜色是黑色。
图2 HSV的图形描述
它也可以用另一种可视方法的圆锥体来表示。红,蓝,绿三种颜色夹角120度,就是RGB模式下的3个颜色分量,在这里H表示圆锥中心的角度,S表示圆锥的横截面的圆心到这个点的距离,V表示圆锥横截面的圆心到顶点的距离,这种方法能更精确地描述H值。要注意的是H是一个角度,这三个向量相加同样可以得到这个六棱锥空间中的任意一点。所以RGB与HSV可以相互转换。
图3 HSV模型的圆锥表示适合于在一个单一物体中展示整个HSV色彩空间
因为人类的肤色种类有很多,而在RGB图像里不同的光线也使肤色的范围扩大了,比如在阴天里,画面出来的颜色是灰沉的,而在有阳光的图像,是鲜艳的,色彩是饱和的。所以,人的肤色也随之变换,如果用RGB图像作为皮肤颜色建模的话,将无法适应外界光线的变化来区别皮肤的区域,所以采用HSV来建模,即采用H分量作为人脸皮肤颜色统计参数,可以降低各种条件对建模的影响。在色相H分量中,皮肤颜色集中在某一小区域范围内。在HSV中,H分量表示了图像的色彩信息,对光线强弱的影响是缓慢的。正因为这一特点,使用HSV模型能使图像中的人的皮肤区域划分得更完美。
用HSV色彩空间来建立个人皮肤彩色模型,再通过模型的概率化得到颜色表中最大的数值,这样就可以直观地进行归一化处理。通过这样的方法就能从任意的彩色图像中进行肤色测试,将图像背景与肤色部分分离开来。图4说明了算法的步骤。它是用MATLAB工具去实现的。
图4 HSV皮肤检测流程
首先把RGB图像转换成HSV色彩空间,它是根据人对色彩的感知来实现的。HSV的算法是通过H的阈值进行肤色区域分割、相对重要性滤波、自适应区域归并等操作。这里皮肤的H色调可分布在0到50之间,S的取值为0.23到0.28(针对亚洲人的皮肤),下图5所示为实验原图像。
实验原图为355×550×24bit的jpg图像。
图5 原图
经过多个实验后,建议H的取值范围为6到38之间,由图像RGB转成HSV的MATLAB程序运算如下:
图6表示的是从RGB到HSV的转变,通过MATLAB运算看到一幅HSV三个通道颜色R(红),G(绿),B(蓝)。
图7表示的图像是已转换的二值图,并改变它的阈值得到所有有关皮肤颜色的像素值为255(这一范围通过H来建立),非皮肤的像素值使用0表示。图7中的人和背景还是没有被完全分离开来,可能背景的颜色不是属于暗色,所以分割出来的目标不那么精确,在此必须应用颜色一致性,以将真实的皮肤区域完全分离出来。所以H值的取值是很重要的。
图6 HSV图像
图7 中间的效果
在图7中有很多的不属于皮肤的地方(检测噪音),因为彩色图像中的V值通常是不会为0的,使得H值域部分无法分辨,所以要用H值来检测肤色区域。为了改变这个问题,需要采用5×5的皮肤区域滤波器,首先我们把皮肤的区域扩展到滤波器里面,使皮肤的范围更精确,然后把非皮肤部分通过H阈值划分范围并填充为黑色,最后皮肤部分变成白色,结果如图8所示。
使用了滤波器后进行区域的归一化处理后,H=25得到了比较准确的皮肤区域。
图8 成功的效果图
本文提出的基于色度值的颜色识别方法能够有效地提高颜色识别的精度,本文选取了一张带有人像的照片用于试验,将图像中人的肤色作为识别目标颜色。首先确定了目标颜色(人的肤色)在HSV色彩空间中色度值的取值范围,通过对色度值进行分割并过滤了肤色像素。用自适应的方式使算法的复杂性变小,提高检测效率。通过在HSV空间进行颜色识别,实验总结归纳了图像中识别目标颜色区域的方法。本研究在肤色分割中还有很大的改进余地,可进一步提高算法的正确率和速度。
[1] V.A.oliveira,A.conci.Skin Detection using HSV color space[BO/SL]:http://www.matmidia.mat.puc-rio.br/sibgrapi2009/media/posters/59928.pdf.
[2] Alberto Albiol http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=958968.
[3] A.Abadpour and S.Kasaei.Pixel-Based Skin Detection for Pornography Filtering[J].Iranian Journal of Electrical&Electronic Engineering,Vol.1,No.3,2005.
[4] 田巍,庄镇泉.基于HSV色彩空间的自适应皮肤检测[J].计算机工程与应用,2004.