李逸琳 陶 静 霍艺文 徐 武
(云南民族大学电气信息工程学院 云南 昆明 650500)
与动作和眼神相比,手势更可能形成统一的、易于区分的标准,并且能够让人们以最舒适的方式与计算机进行交流通信,在很大程度上降低了人机交互的障碍。手势检测是指计算机根据某些规则检测出各种手势,并转化为相应的控制命令语句,实现人与计算机之间的信息交换[1]。而且,基于视觉的手势识别对用户而言,无需佩戴设备也没有距离的限制,具备良好的用户体验度和舒适度。近年来,凭借其广泛的应用范围,成为虚拟现实领域的热点研究方向,而手势分割恰是手势识别的关键。
传统的图像分割方法主要是基于灰度、边缘、纹理等图像底层信息,这类方法在实际应用中普遍抗噪性差,不能适应光照、背景的变化[2]。在实际的人机交互过程中,需要实时更新肤色分割的阈值以应对光照条件改变、背景复杂程度带来的诸多干扰。本文使用YCBCR肤色识别模型及粒子滤波跟踪算法来实现肤色分割阈值的实时更新。该方法是基于手势的实时形状变化,不依赖于流式媒介,更新后的肤色分割阈值显著提升了手势识别的精确程度。
本文在手势分割之前增加轮廓识别的步骤,先行获取所要分割的手势类型,之后仅需要将一个先验手势形状添加到手势分割的模型中,从而避免多个手势形状引起的复杂干扰[3]。主要技术手段包括:基于先验手势形状的手势图像分割和基于分割后图像的参数更新。基于先验手势形状的手势图像分割主要是通过手势的形状和肤色信息来确定手势轮廓。有了手势轮廓之后就确定了手势区域和非手势区域,此时再使用粒子滤波算法来更新椭圆肤色模型的参数就可以更加准确地完成手势分割。
不同的手势在空间中具有不同的像素点分布。因此可以将空间中手势像素点的分布区域作为提取手势特征的关键依据[4]。本文根据形态学中的腐蚀原理,先除去图像中某些部位再求质心的方法,获取手势区域的质心e。之后以e为圆心,对每个环形区域内像素点的相对密度Dk进行统计,得到手势的第一条空间分布特征。其次,在这些图像分割区域的同心圆作用下,不同的弧段和弧长将呈现在不同手势的肤色区域和非肤色区域,对应的弧段作为手势的第二条空间分布特征,对应的弧长则作为第三条空间分布特征。手势的空间特征向量组HDF={D1,…,Dn;H1,…,Hn;HC1,…,HCnm}中的三类元素即为这三条空间分布特征。其中:Dk(0≤k≤n-1)表示第k环同心圆内目标像素点的相对密度;Hk(0≤k≤n-1)表示第k环同心圆非目标区域所占的圆弧段数;HCkj表示第k环同心圆上非目标区域圆弧j的弧长;n表示划分手势区域的同心圆的环数。图1为手势示例。
图1 手势示例
由力学可知,手掌的质心坐标e(xe,ye)为:
(1)
(2)
(3)
根据上述公式可以计算出从手掌质心到目标图像的最大距离Dmax。以手掌质心坐标为外接圆的圆心、以Dmax为外接圆的半径,绘出手势区域的外接圆。由人类手部的生理构造得知,不同手势的手掌区域的特征差异非常小,手指部分的差异则较为明显。故以最大半径0.4Dmax为半径作圆,其圆内包含的即为手掌区域。然后再从0.4Dmax到Dmax划分为n个同心圆。统计每个同心圆区域内的目标像素点数量Si(i=1,2,…,n)(n为采样区域的个数,当n=1时,采样区域为最远离圆心的同心圆区域;当n=n时,采样区域为最接近圆心的同心圆区域)以及整个手势图像区域中目标像素点的数量Smax。n个同心圆区域目标像素点的相对密度可由下式计算得出:
(4)
统计第k个圆上的手势特征HCkj:
(5)
式中:hckj表示第k环同心圆非目标区域圆弧j的弧长;hcj表示第k环同心圆上非目标区域圆弧的总长度。不同手势的空间分布特征如图2所示。
图2 不同手势分布特征
肤色作为人体体表信息较为显著的特征,在排除亮度和视觉环境的前提下,皮肤的色调不受人种差异的影响,因此可将肤色作为手势分割的理论依据。目前常用的肤色识别模型有HSV肤色识别模型、HIS肤色识别模型、YCBCR肤色识别模型和归一化RGB肤色识别模型[5]。在HSV与HIS肤色识别模型中,亮度、色调及鲜艳程度等能够得到非常直观的体现、比对,但无法与显示器进行直接的色彩数值传输,并且对系统资源等软硬件的消耗较大。再比较RGB色度空间和YCBCR色度空间,当视觉环境中的光线亮度发生改变时,RGB颜色空间中(R,G,B)将同时改变,而YCBCR颜色空间中的三个变量则相对独立,受光线亮度的影响较小,因此YCBCR颜色空间更适用于肤色识别。故本文采用YCBCR肤色模型来提取手部区域。然后以肤色模型为基础,同时为了强化分割效果,融合了粒子滤波算法。
在YCBCR颜色空间中,Y是明亮度即灰阶值,CB和CR是蓝色和红色的色调与饱和度部分。YCBCR颜色空间具有将色度与明亮度分离的特点,当光强不同时,同一肤色聚类范围在YCBCR空间内的变化最小,只有灰阶值Y随外环境的改变而改变,并且CB和CR之间是二维独立的,才能够将肤色分布圈定在可知区域内。本文算法直接考虑YCBCR空间中的蓝色和红色色度分量,忽略灰阶值,使用阈值分割法区分开肤色区域与非肤色区域。YCBCR空间采用ITU-RBT601YCBCR标准,定义灰阶值为(16,235)范围里的8位二进制数据,定义蓝色和红色色度分量为(16,240)范围内的8位二级制数据[6]。任一像素点的值在RGB与YCBCR色度空间之间的转换可以通过下式得到:
(6)
据此可得YCBCR色度模型中CB和CR的空间肤色分布,如图3所示。
(a) CB空间肤色分布
(b) CR空间肤色分布图3 CB和CR的空间肤色分布
这一聚类模型的典型公式为:
(7)
式中:θ表示相对标准椭圆方程旋转的角度;da表示投影到CR坐标轴上的偏移量;db为投影到CB坐标轴上的偏移量。拟合肤色聚类区域的椭圆长半轴为a、短半轴为b,如图4所示。
图4 拟合肤色聚类区域
设肤色聚类区域的集合为C,任一像素点的值为p(x,y),根据式(8)确定手势图像的拟合区域,提取手势图像拟合区域中的Y分量、CB分量及CR分量如图5所示。
(8)
图5 提取肤色分量
得到基于YCBCR色度空间的拟合肤色聚类区域的分割效果如图6所示。
图6 基于YCBCRYCBCR的肤色分割效果
在实际的应用场景中,由于背景的复杂性,单纯使用色度空间进行手势的肤色分割往往会存在一些小块的噪声,因此需要实时更新椭圆肤色模型的参数阈值才能够将其过滤掉。常用方法包括连续自适应的MeanShift算法、卡尔曼滤波算法和粒子滤波算法。连续自适应的MeanShift算法在线性系统中跟踪黑白背景下的纯色物体取得了良好的效果,若手势分割中出现类肤色物体,则会扩大该算法的跟踪窗口乃至整个视频框架,无法有效分割目标手势;卡尔曼滤波算法仅仅在处理高斯模型时效果较好;而粒子滤波算法在进行非线性函数和非高斯分布的系统处理时均游刃有余,尤其适用于复杂背景下的目标跟踪。由此,本文选取粒子滤波算法进行手势图像的去噪处理。算法流程如图7所示。
图7 算法流程图
粒子滤波算法是根据蒙特卡洛仿真原理递推实现贝叶斯估计,在目标跟踪过程中,用足够数量的、带有相关权值的粒子对应目标各种可能的状态,并通过粒子间的线性加权逐步靠近目标的真实状态[7]。图8为粒子滤波示意图。
图8 粒子滤波示意图
然而,粒子滤波过程中的权重退化是不可避免的。虽然重采样能够部分改善这一现象,但也会伴随一些诸如限制并行计算之类的弊端。而且在重采样过程中,算法将愈加偏向复制权重较大的粒子,经过数次迭代后,粒子重复性增加多样性减少,造成状态估计偏差显著[8]。
为避免这一问题,本文在选定粒子滤波去噪范围时,以手势的质心坐标为中心,将第1节中获得的前景图像扩大至1.5倍作为粒子传播的矩形区域。该区域在保证粒子在随机传播后保持较丰富的多样性及较大的权重值的前提下,既减少了计算量又包含了手势的全部动作区域,降低了状态估计的偏差。最终计算最优粒子的位置坐标:
(9)
式中:Xi(k)、Yi(k)为第k帧第i个粒子的横纵坐标;ωi(k)为第k帧的第i个粒子的权重;N为粒子总数,xc(k)和yc(k)为最优粒子的位置坐标。
实验所抽取的样本与真实后验分布产生的样本之间的偏差也是影响粒子滤波去噪的关键因素。模型精度越高或预测先验与似然函数之间重叠越少时,二者之间的偏差越大。如图9所示,通过引导粒子到高似然区域,由此产生的预测先验可较好地服从模型的后验概率分布,从而有效地减少了描述后验概率密度函数所需的粒子数目。
图9 移动粒子至高似然区域
据此将手势图像中颜色特征分布的相似度作为算法模型的后验概率,并统计灰度范围内像素值出现的频率次数,生成相应的图像直方图。通过计算图像直方图中的巴氏距离得到粒子权重的真实后验概率分布:
(10)
(11)
式中:D是巴氏距离;M是颜色区间数目bin;p(u)是参考颜色概率分布;q(u)是候选粒子所在区域的颜色分布。计算图像处理后的颜色概率分布及巴氏距离,获取所需的粒子权重。初始化阶段,每个粒子权重相同,随机传播后,粒子权重及坐标将会发生变化。本文采用随机的传播模型如下:
(12)
式中:X0为粒子的初始坐标;Xk-1为粒子上一位置坐标;Xk为粒子当前位置坐标;Xk+1为粒子下一位置坐标;A1、A2和B为传播系数;random为随机数。
本文基于Windows 10系统下的VC++平台,采取OpenCV 4.0图像处理库的随机数生成器产生随机数进行计算[9],关键代码如下:
W(i)=(1/sqrt(R)/sqrt(2*pi))*exp(-(dist)^2/2/R);
%求粒子权重
for i=1:N
%重采样
wmax=2*max(w)*random;
index=randomi(N,1);
while(wamx>w(index))
index=index+1;
if index>N
index=1;
end
由此可得更新后的椭圆模型参数阈值为:
(13)
我们在YCBCR肤色识别模型中从提取的颜色聚类区域来确定手势范围,通过粒子滤波跟踪算法来清晰化手掌和手指轮廓。图10为经过粒子滤波去噪后的分割效果。
图10 粒子滤波去噪效果
从图10可以看出,粒子滤波在复杂的非线性非高斯情况下,进一步消除了手势图像中的无关噪声,实现了精准的手势分割,实用性很高。
PC机配置为:Intel(R) Core(TM) i7-6700HQ CPU@ 2.6 GHz,内存32 GB,Windows 10,64位操作系统。通过MATLAB 2017a实现上述算法。
为验证本文的手势分割方法的准确性,选择HGR(Hand Gesture Recognition)数据库和NUS-II数据库进行对比实验。实验图像的来源和特征如图11所示,这些图像来自不同人种、不同手部动作,分割过程中的噪声主要由不同采集地点(室内采集/室外采集),不同背景(有无类肤色背景)等产生[10-11]。
(a) (b)图11 手势分割效果
图11中,(a)为在HGR数据库中的手势分割效果,(b)为在NUS-II数据库中的手势分割效果。实验结果如表1所示,简单背景下,正确检测出来的手势有875.7个,检测正确率为97.3%。复杂背景下正确检测出来的手势有 870.3个,检测正确率为96.4%。
表1 图像分割准确率
在保证分割准确率的前提下,为检测本文算法在不同背景中进行分割所需的时间,在不同光照和背景下进行实验,其结果如表2所示。
表2 图像分割所需时间
由实验结果可知本文方法在不同环境下平均分割时间均在1.88 ms 以下。在保证分割准确率的基础之上将所需分割时间降低至2 ms以内。并且本文方法能够准确地分割出手势图像,平均分割率由传统方法的86.1%提高到96.9%,因此对光照强度和不同背景均具有较强的鲁棒性。
本文针对手势分割存在的准确性较低、所需时间较长的问题,优化了传统的手势分割方法,改变了传统的手势分割顺序即先进行手势特征的提取,再进行手势图像的分割。先由YCBCR肤色识别模型得到目标手势的前景图像,再结合粒子滤波算法进行图像去噪,实现精准的手势分割。实验结果表明,在不同环境下本文方法的平均识别率达到了95%以上,平均识别时间达到了1.88 ms 以下,可以满足人们在现实生活中的应用。本文阐述的手势分割算法可以应用于人性化
的手势交互中诸如基于Internet远程机器人操控、手语识别等,代替传统的键盘、鼠标等HCI设备,显著提升人机交互的用户体验。