几种皮肤检测算法的仿真∗

2021-06-29 08:42邹奉天
计算机与数字工程 2021年6期
关键词:纹理肤色像素

邹奉天

(南京理工大学 南京 210000)

1 引言

皮肤检测是计算机视觉领域的重要研究内容之一,有着广泛的应用前景。长期以来,它在诸如人体识别、色情图片识别、人脸识别、皮肤病诊断等领域有着广泛的应用。皮肤检测过程是基于像素的颜色分类器,在不同的颜色空间下,通过图形分割,前景提取,颜色判断等方式,提取出皮肤区域。为了找出分类器的最佳组成和颜色空间对皮肤检测的影响,Vezhnevets等做了广泛的研究和测试。Zarit等在CIE Lab,Fleck hs,HSV,归一化RGB,Ycrcb五种颜色空间上,使用査表法与Baves决策法来检测,并比较了检测结果。

人体检测、定位和跟踪过程中肤色是一种有特点和区别的图像特征。就像其他计算机视觉研究领域一样,成像条件如光照变化、阴影和高光都使皮肤检测过程更加复杂化。此外不同种族的肤色可能有所不同。此外对于同一个人,肤色在身体不同部位如脸和手和日照时间如长时日照后会出现显著差异。

细胞学习自动机(CLA)是由简单元素组成的系统模型。这些简单的元素基于它们的邻近元素行为和先前的经验来提高他们的性能。它们可以根据它们之间的相互作用来识别复杂的行为。像素间的邻域特性使得细胞学习自动机成为不错的图像处理选择。

2 几种皮肤检测算法介绍

2.1 基于RGB颜色空间的皮肤检测

RGB空间由红,绿,蓝三种颜色为原色在三维直角坐标系中构成颜色空间,是当前最为广泛运用的颜色空间[1]。由peeretal的研究表明,人体的肤色在RGB空间中符合下列的规律。

在室内白光下:

(R>95)AND(G>40)AND(B>20)AND(max(R,G,B)-max(R,G,B)>15)AND(|R-G|>15)AND(R>G)AND(R>B)

在通常日光下:

(R>220)AND(G>210)AND(B>170)AND(|R-G|≤15)AND(R>G)AND(R>B)

通过上述对RGB分量的阈值分割,我们可以得到皮肤检测的区域。

2.2 基于YCr Cb空间的椭圆皮肤模型检测

YCbCr颜色空间是一种常用的肤色检测的色彩模型,其中Y代表亮度,Cr代表光源中的红色分量,Cb代表光源中的蓝色分量[2]。人的肤色在外观上的差异是由色度引起的,不同人的肤色分布集中在较小的区域内。肤色的YCbCr颜色空间CbCr平面分布在近似的椭圆区域内,通过判断当前像素点的CbCr是否落在肤色分布的椭圆区域内,就可以很容易地确认当前像素点是否属于肤色。图1为椭圆区域。

图1 椭圆区域

根据经验某点的CrCb值满足:133≤Cr≤173,77≤Cb≤127那么该点被认为是肤色点,其他的就为非肤色点。

YCrCb和RGB互相转换的公式如下:

通过将图像转化到YCbCr空间并且在CbCr平面进行投影,采集肤色的样本点并且投影后,再进行相应的非线性K-L变换,遍历转换后的像素点,可得到皮肤区域。

2.3 基于机器学习的皮肤检测算法

元胞自动机(CA)被广泛应用于空间扩展物理系统的动力学建模[3]。元胞自动机是细胞的集合,每个细胞都适用于多种状态的一种。单个细胞的变化依赖于细胞环境的规则状态。一个细胞的环境是由一小部分邻细胞构成。图2显示了两种邻里关系。

学习自动机(LA)是用于执行简单任务的简单机器[4]。它们有一组有限的动作,并且在每个阶段根据自动机的状态选择一个动作的,自动机的状态通常由动作概率向量表示。对于自动机选择的每一个动作,环境都会给出一个强化。环境给出一个固定的未知概率分布的强化信号,该信号指定了应用动作的为“增益”。然后,当接收到增益信号时,学习自动机用学习算法更新其动作概率向量。学习自动机与其环境的相互作用如图3所示。

图2 邻里关系

图3 学习自动机

具体的学习算法是一种递推关系,如下,其中α为动作选择,β为环境对动作的回应,ρ为选择概率,如式(1)、(2)所示:

基于机器学习的皮肤检测算法将皮肤的颜色和纹理信息与细胞学习自动机相结合,在彩色图像中分割皮肤区域[5]。首先,检测图像中的皮肤颜色,从若干明确的边界皮肤模型选定区域[6]。然后将检测到的肤色区域发送到颜色纹理提取器,它通过肤色统计属性提取皮肤区域的纹理特征,并将它们映射到皮肤概率图[7]。细胞学习自动机使用这张概率图来选定皮肤区域。

具体检测的步骤如图4所示。

图4 基于CLA的皮肤检测流程

皮肤区域的纹理是比较光滑,通过它的颜色先选定皮肤区域,再结合肤色和纹理信息根据其不同的纹理特性,通过CLA分析进行进一步识别[8]。如图5其中显示了具有不同纹理的两个皮肤候选区域的示例,其颜色相似但纹理是完全不同的。

图5 皮肤检测候选区示例

我们可以根据相邻像素的颜色信息及其欧几里德距离,提取区域的纹理。首先,对于图上的每个像素(r,g,b)先使用式(3)计算该像素的颜色与块中的所有邻域之间的欧几里德距离[9]。然后,通过(4)计算“粗糙度图”,最后,使用计算的粗糙度值来计算“概率图”式(5)。

通过概率图的计算,学习机(CLA)可以对整张图的皮肤纹理进行分析,我们根据中心自动机及其邻域的选定动作来奖励或惩罚每个学习自动机[10]。如果选择与皮肤相关行为的学习自动机数量更多(超过7个),对中心学习自动机进行奖励。如果选择与非皮肤相关的学习自动机的数目少(少于4个),我们就用它的学习算法来惩罚中心学习自动机[11]。具体如图6。

图6 学习自动机的奖惩机制

经过几次迭代后,CLA中的每个现有自动机都会聚在一起,选择皮肤或非皮肤状态[12]。学习自动机收敛到0或1,流程就会停止。至此可以将每个像素划分为皮肤像素或非皮肤像素。

3 仿真结果

仿真环境使用了Win10系统下的Visual Stu⁃dio2013加OpenCV包完成RGB颜色空间和YCrCb椭圆空间模型的皮肤检测,Matlab2016加Image Processing Toolbox完成了基于机器学习(CLA)的皮肤检测[13]。

图片选自网络中随机的三张街景,分别包含一人两人和三人下面为具体的仿真结果,其中每组第一张为原图,第二张为RGB颜色空间下的皮肤检测结果,第三张为YCrCb椭圆空间模型下皮肤检测结果,第四张为基于机器学习(CLA)的皮肤检测结果。

图7 单人、双人、三人皮肤检测算法结果

由上面对比明显见在街拍自然光背景存在干扰的情况下,使用RGB颜色空间的皮肤检测存在很高的误检率,YCrCb椭圆空间模型下相对较好但还是存在部分环境影响导致的误检测[14],基于机器学习(CLA)的皮肤检测获得了相对满意的检测效果,最大程度地减少了皮肤误检测[15]。

表1为三种不同皮肤检测方式的皮肤正检率与误检率统计。

表1 各种皮肤检测算法正误检率

从数据上看基于机器学习(CLA)的皮肤检测可以在基本保持正检率的情况下极大地减少皮肤误检率。

4 结语

通过对几种皮肤检测算法的仿真与比较,我们不难发现基于RGB的皮肤检测算法虽然算法简单,但在复杂环境光,复杂背景的情况下存在比较大的误检率,基于YCrCb椭圆空间模型下的皮肤检测则主要减少偏蓝色背景的误检,但还是存在比较大的皮肤误检率,特别是背景也存在偏黄色的场景时。基于机器学习(CLA)的皮肤检测因为引入了背景纹理可得分析,所以对于偏黄色的草地这类粗糙背景,可以有效过滤,但部分飞粗糙类肤色的背景如金色光滑的栏杆,衣服上白条等,还是存在部分的误检情况,不过相对来说误检已经极大地减少了。

在单一光源,教单一背景下很多算法都能比较准确地检测肤色,但遇到室外复杂自然光复杂背景的情况,对肤色检测的算法也提出了更高的要求,基于机器学习通过引入纹理检测肤色能部分解决误检的问题,但还是存在一定程度的误检情况,如果我们引入更多维度的特征,比如形态学特征,背景分析前景提取等,应该可以进一步提高检测率减少误检率,这也是我们可以进一步考虑改进算法的方向。

猜你喜欢
纹理肤色像素
像素前线之“幻影”2000
肤色(外一首)
人的肤色为什么不同
为什么人有不同的肤色?
“像素”仙人掌
肺纹理增多是病吗?
童梦
TEXTURE ON TEXTURE质地上的纹理
消除凹凸纹理有妙招!
高像素不是全部