基于YCRCb色彩空间的手语图像分割

2019-03-15 13:31郑方梅魏延
电脑知识与技术 2019年2期

郑方梅 魏延

摘要:针对手语图像背景的复杂性,提出一种基于YCbCr色彩空间与K-means算法的改进肤色聚类方法。1、建立手语图像库;2、对待测试图像进行預处理,具体步骤为图片从RGB转换成YCbCr,减弱噪声,光照等带来的影响;3、计算肤色相似度,设计肤色模型;4、利用改进后的肤色聚类方法对肤色进行聚类;5、基于种子填充算法寻找完整的手型区域。

关键词:YCbCr颜色空间;手语图像分割;k-均值聚类;种子填充算法

中图分类号:TP311        文献标识码:A        文章编号:1009-3044(2019)02-0194-04

Sign Language Image Segmentation Based on YCRCb Color Space

ZHENG Fang-mei, WEI Yan

( College of Computer and Information Science, Chongqing Normal University, Chongqing 401331,China)

Abstract:Aiming at the complexity of the background of sign language image, an improved skin color clustering method based on YCbCr color space and K-means algorithm is proposed.1. Establish the sign language image database;2. Pre-process the image to be tested, transform the color space, eliminate the influence of noise and illumination.3. Compute the skin color similarity, design the skin color model; 4. Cluster the skin color using the improved skin color clustering method; 5. Find the complete hand region based on the seed filling algorithm.

Key words: YCbCr color space; sign language image segmentation; K-means clustering; seed filling algorithm

1手语图像库的建立

手语图像库的图像参考图1中的手语标准库,由本人和实验室其他成员等10个人在10中不同背景,不同光照,一般视觉照相机下采集不同方向,不同大小的手语图像组成。手语库共有26组静态手语,每组手语图像100张,图片大小均为256×256,格式为jpg格式,RGB彩色图像。其中图2为手语图像库中部分手语示例。

2处理过程

2.1 YCbCr色彩空间

色彩空间也称为色彩模型,此领域的学者们使用一维、二维、三维或者四维等不同维度空间坐标构建了色彩模型,从而将这一色彩范围使用坐标系统进行定义。大量分析研究表明,在不同的颜色空间,肤色的分布是不一样的,在去除光照变化的条件下,肤色在某些颜色空间中,具有恒长性[6],即肤色区域在单独分量上其颜色值集中在某个固定范围内.因此,在手语分割识别问题中,找到一种合适的色彩空间极为重要。目前国际常用的比较正规的色彩空间有RGB、YCbCr、HSV、YUV、LAB等[1]。论文[2][3]中作者详细介绍了多种不同颜色空间的优缺点,由图3可知在YCbCr色彩空间中蓝色色度Cb和红色色度Cr随着亮度Y的改变始终呈稳定趋势,即Cr与Cb受光强影响不强且依赖性不大,因此肤色在YCbCr色彩空间更适合聚类,能够更好地提取肤色的分布区域。综合比较最终选用YCbCr色彩空间手语图像作为研究对象。

其中通过如下公式[5]将像素点从RGB值转换成所对应的YCbCr值:

Y   = 0.257*R+0.564*G+0.098*B+16

Cb = -0.148*R-0.291*G+0.439*B+128                          (1)

Cr  = 0.439*R-0.368*G-0.071*B+128

2.2肤色建模

由图3、图4分析研究可知,肤色的Cb分量和Cr分量比较集中,整体变化不大,基本满足正态分布,即满足高斯分布模型。因此利用Cb和Cr分量对肤色进行高斯建模[7],能得到更为合理肤色阈值。

其中通过计算模型的平均数和标准差为

[μ=μCb,μCr=98.33,120.01]                     (2)

[σ=σCb2σCb,CrσCr,CbσCr2=441.525.155.15289.76]               (3)

像素点为

[x=Cbi,Cri]                               (4)

由公式(1)、公式(2)、公式(3)和公式(4)得到最终的高斯分布模型为

[f(x)=12πσexp(-(x-μ)22σ2)]                (5)

3手語图像分割

图像分割的主要目的是从图像中除去不需要的信息,留下有用的信息,减少后续图像处理的数据量,提高计算时间和计算空间的利用率。

3.1 K-均值算法

K-means聚类算法容易实现;当簇接近高斯分布时,它的效果较好。所以接下来选定改进k-means算法对图像进行聚类分割,K-means算法其基本理论如下:

给定D维欧几里得空间的一组数据{x1,...,xN},我们的任务是将该组数据聚成K个簇(聚类和分类的区别在于分类是有监督的,聚类是无监督的,根据任务设定聚类依据,此处假设聚类个数K是已知的)。不考虑问题背景,单纯从欧几里得空间的角度讲,我们应当将距离较近的点聚为一个簇,不同簇的点之间的距离较远。Kmeans聚类方法就是寻找K个聚类中心μk(k=1,...,K),将所有的数据分配到距离最近的聚类中心,使得每个点与其相应的聚类中心距离的平方和最小。

引入二值变量rnk∈{0,1}来表示数据点xn对于聚类k的归属(其中n=1,...,N, k=1,...,K),如果数据点xn属于第k聚类,则rnk=1,否则为0。如此,便可定义如下损失函数:

[J=n=1Nk=1Krnkxn-μk2]                 (6)

该问题的目标就是寻找使得损失函数JJ最小的所有数据点的归属值{[rnk]}和聚类中心{[μk]}。Kmeans算法提供了一种迭代求解方法,在每次迭代中交替优化[rnk]和[μk]。

第一步,随机选择聚类中心[μk]的初始值,求取使损失函数J最小的数据点的归属值[rnk]。由(6)式容易看出,给定[xn]和[μk]的值,损失函数J是[rnk]的线性函数,而且,由于[xn]之间是相互独立的,所以对于每一个n,我们只需将该点分配到距离最近的聚类中心,即:

                          (7)

第二步,固定已求得的[rnk],再求取使损失函数J最小的聚类中心[μk]。给定[rnk]的值,损失函数J是[μk]的二次函数,令J对[μk]的导数为0,我们有:

[n=1Nrnk(xn-μk)]                     (8)

那么[μk]的取值为:

[μk=nrnkxnnrnk]                    (9)

对于第k个聚类,[rnk]取1的个数就是属于该聚类的点的个数,因此,[μk]等于属于该聚类的点均值。

如此迭代该两阶段优化问题直至收敛,K-means的实现过程大致表示如下:

(1)随机选取K个初始聚类中心;

(2)计算每个样本到各聚类中心的距离,将每个样本归到其距离最近的聚类中心;

(3)对每个簇,以所有样本的均值作为该簇新的聚类中心;

(4)重复第(2)~(3)步,直到聚类中心不再变化或达到设定的迭代次数。

3.2 K-means算法改进

K-means聚类算法受广大学者喜欢的原因在于它在聚类中经典并且有效,但是仍存在着很多可以改进的地方,本算法针对原算法在两方面的不足进行了改进,一是在 K-means 算法中非常难以估计的K个初始聚类中心值的确定进行改进。二是针对K-means算法迭代过程中存在的收敛到局部最小值,在庞大数据集上存在收敛较慢的问题进行改进。

针对初始聚类中心K值的改进:首先选择一个确定的点(满足肤色模型的点)作为第一个初始类簇的中心点,然后选择与该点相比较Cb,Cr分量相差最大(距离该点最远)的那个点作为第二个初始类簇的中心点,然后再选择距离前两个点的距离之和最大的点作为第三个初始类簇的中心点,……,直至所有的初始聚类中心选完。这样既解决了初始聚类中心的选择,利用距离最大有效地防止迭代过程中存在的局部收敛。

针对在大规模数据集上收敛较慢的问题进行改进:利用Mini Batch思想对K-means算法过程中的第(2)步进行改进,把其中计算到个聚类中心的样本点改成从所有样本数据集中随机抽取一些数据集形成小样本数据。

聚类的具体流程如下:

(1)将RGB彩色图像所有像素点从RGB值转换成所对应的YCbCr值,分离出Cb分量和Cr分量,组成一个(Cb,Cr)二维矩阵。

(2)基于Canopy[8]算法进行初始聚类,用这些类簇的中心点作为K-Means算法初始类簇中心点。

(3)基于Mini Batch[9]从所有样本数据集中随机抽取一些数据集形成小样本数据(即Batch),然后使用这个Batch对聚类中心进行更新。

(4)重复第(3)步,直到聚类中心不再变化,最终达到稳定状态或达到设定的迭代次数。算法停止计算。

3.3 种子填充算法改进

基于种子填充算法[10]进一步分割出完整的手型区域。种子填充算法基本原理是图像的某一像素点(称为种子)开始,由此出发找到区域内的其他所有像素。一般有两种连通区域:四连通区域和八连通区域。

算法流程如下:

1)从(x,y)开始,先检测该点的颜色,若它与边界色和填充色均不相同,执行第二步;若不是,执行第三步;直到检测完区域边界范围内的所有像素为止。

2)用填充色填充该点。

3)填充该相邻点。

改进:先对图像进行边缘检测,提取出手部轮廓,将待检测区域划分成多个子区域,再利用种子算法进行填充。

4实验结果与分析

所有实验均在Windows7系统,i5的处理器,4G的运行内存,Anaconda3(python-OpenCV)环境下实现。

图8和图9分别利用K-means算法和本文算法得到的结果。两种算法均能合理聚类手语手势的基本结构,但在某些细节方面存在错分现象.例如对于手背阴影部分,两种算法均错分为非手语手势。通过仿真实验对比结果发现,K-means算法和本文算法再对手语图像进行分类时,所用时间存在差异。分类进行从第一张手语图像到第2600张手语图像,两种算法虽然计算时间都有所增加,但K-means算法比本文算法多用了71秒。因此,对于大数据量的手语图像分类,本文算法比K-means算法更具优势。

图10和图12的对比,得出改进后的种子填充算法能得到更为完整的手型区域。

5 结论

本文对K-means算法进行了分析研究,针对其在手语图像分割中存在的不足提出了改进算法。利用Canopy算法优化K-means算法初始聚类中心的选择,并利用Mini Batch思想融合K-means算法减少时间复杂度,提高在大数据量手语识别的计算率,并通过仿真实验证明了本文算法相比K-means算法有效性得到提高。此外,本文算法在分类精度和计算时间上有待进一步研究。

参考文献:

[1] 李海朝.复杂背景下基于彩色图像的人脸检测[D].电子科技大学,2008.

[2] 武红娇.复杂背景下的静态手语识别技术研究[D].沈阳工业大学,2017.

[3] 吴要领.基于YCbCr色彩空间的人脸检测算法[D].电子科技大学,2013.

[4] Christopher M. Bishop. Pattern Recognition and Machine Learning[M].2006.

[5] 李杰,郝晓莉.一种基于椭圆肤色模型的人脸检测方法[J].计算机测量与控制,2006,14(2).

[6] 江凤兵.基于RGB-H-CbCr新颜色空间的肤色检测算法研究[J].科技广场,2011(9).

[7] https://blog.csdn.net/jia20003/article/details/72771737.

[8] 陈凯,陈秀宏,孙慧强.基于 Canopy 聚类的噪声自适应模糊C-均值算法[J].计算机应用研究,2018(4).

[9] 修瑛昌,楊文静.Mini Batch K-means算法在遥感影像分类中的应用[J].鲁东大学学报:自然科学版,2017,33(4):359-363

[10] 李盘荣,徐文波.整数阶滤波的分数阶Sobel算子的边缘检测算法[J].安庆师范学院学报,2006,12(4).

[11] 李忠海,金海洋,邢晓红.种子填充算法的改进[J].计算机工程与应用,2018,54(4):179-184.