一、概述
本文提出了一种新方法在具有复杂背景的彩色图像中检测人脸区域。使用 YCrCb 和 HSV 两种彩色空间进行肤色粗检测,对检测到的肤色像素在 CrCb 空间内进行聚类分析,然后使用形态学算子对属于同一聚类中心的像素进行开运算以除去一些小的背景。应用一些规则合并肤色区域以形成候选的人脸;通过多阈值分割确定双眼的候选位置,并应用BP网络验证是否是真实的人眼。
二、方法
在大多数情况下,图像信息是以 RGB 的颜色空间保存。但是在肤色分析中,由于 RGB 三个颜色分量都包含亮度信息,存在较强的相关性,不适合进行色度处理。研究表明人类肤色的变化主要是由皮肤颜色的亮度引起的。目前常用的肤色检测的颜色空间有归一化的 RGB, HSV (或HSI),YIQ及YCrCb等。
2.1、肤色粗分割
YCrCb 颜色空间是一种有效的肤色表示空间。在 YCrCb 颜色空间中,Y分量表示颜色的亮度信息,Cr 和Cb 分量不包含亮度信息。而 HSV 颜色空间较之 RGB 颜色空间更适于人对颜色的感知,因此,本文采用上述两种颜色空间进行肤色的粗检测。通过对30幅不同光照的彩色人脸图像进行统计, 得到能广泛包括肤色的 YCrCb 和 HSV 颜色空间的范围: RCr =[134, 183], RCb=[86, 137], RH= [0, 0.873], RS= [0.15, 0.75] 及 RV= [0.35, 1.0]。图1是对一幅 RGB彩色图像进行肤色分割的结果, 在图2-B 中白色区域表示检测到的肤色。
2.2、直方图聚类分析
对前面检测到的肤色点在 CrCb 空间内得到它们的直方图。在我们的应用中,Cr和Cb被均匀地分成64段,每一段的长度为4个基本颜色单位,即 CrCb 空间被分成 64×64 个小区域。图2-A是图1-B中检测到的肤色点的直方图分布。
在 CrCb 空间中,肤色的分布通常呈狭长型,并且从上至下有多个峰值较大的中心,因此我们可以对 CrCb 直方图进行聚类。为了处理方便,我们首先对直方图进行平滑,以消除一些毛刺的影响。我们采用形态学膨胀算子来完成这个任务。研究表明:肤色在 Cr 和 Cb 上分布的标准差分别为3.9和4.3,因此我们在 CrCb 空间内选用 3×3 的结构元进行形态学处理。
对直方图平滑后,直方图中的聚内中心的分布特点是:中心点主要是从上到下排列的,如图2-B所示;因此, 直方图聚类分析的关键就是确定聚类中心点之间的上下边界,这个过程可由图3所示。假使C1和C2是两个聚类中心点,以它们为顶点可以构造一个矩形,然后累加矩形每一行元素的值,找出值为最小的行作为边界B。通过聚类分析,直方图产生了两个新的聚类中心,对属于每个聚类中心的像素点用不同深浅的灰度值表示,结果如图4-A所示。
2.3、形态学滤波
对被检测为肤色的像素进行聚类分析后,我们发现:属于肤色的区域通常是连续的整块,属于背景的区域通常是连续的整块或是孤立的小块。我们应用形态学开算子来除去这些孤立的背景区域。在我们的应用中,分别对属于不同聚类中心的像素进行开算子操作,相对于对整个检测到的肤色进行开算子操作,这样操作能更有效地除去孤立的小区域。图4-B是图4-A经过开算子操作后的结果,可以看出大部分孤立的小区域被有效地除去了。
2.4、区域合并
经过前面阶段的处理,人脸可能被分割成几个不相连的区域,如图5所示;因此有必要对这些区域进行合并。在这个处理之前, 首先除去一些面积小于一给定门限的区域。在我们的应用中,这个门限设定为整个图像大小的0.1%。考虑到脸部区域肤色的分布具有一致性,因此只对属于同一聚类中心的区域进行合并操作。我们给出两个规则来进行区域合并。
a. 位置规则:假设区域A 和区域B 的外接矩形分别是RA 和RB, 并且它们的宽和高分别是wA,wB, hA 和hB;另假使两矩形的中心在水平和垂直方向上的距离分别是dx 和dy,那么区域A和区域B 要被合并的话,必须有以下条件成立:(这里T1 和T2 是常数)。
b. 密度规则:假设区域A 和区域B 的面积分别是aA 和aB,区域C是区域A 和区域B 的合并,那么区域C的主轴和副轴长度由下式计算得到:
其中ui, j 是中心矩,则有主轴的长度a和副轴的长度b:
下面的步骤是计算区域C的密度s:区域C的面积比区域C的最小外接矩形的周长, 即:
如果s大于一门限, 那么区域A 和区域B 就进行合并。
当给定任意两个区域, 只要同时满足上述两个规则, 那么这两个区域就被合并。在应用中, 对属于同一聚类中心的区域反复进行合并操作, 直到合并规则不能满足为止。图6所示为图4-B和图5-B经过区域合并后的结果。