随着计算机技术的发展,基于机器视觉的手势识别作为一种很有前途的人机交互技术,一直是一个值得研究的课题[1]。在手势识别中,手势分割与定位为手势轨迹提取和手势识别奠定了基础。基于深度信息的肤色分割较新[2],首先获取Kinect深度信息,运用深度阈值分割手势[3-4],但肤色检测遍历每帧整幅图像,消耗时间长,实时性差,不同肤色人群差异、光照环境变化以及类肤色物体都对手势检测造成小部分手腕的干扰[5-6]。文献[7-9]等融合深度信息和彩色图像分割出手势,但不能避免光照影响,降低了手势分割的鲁棒性。文献[10-11]再次深度分割手势与手腕,对两部分距离变换运算求各自的距离灰度图像中心点,连接两中心点取垂直平分线,此方法较准确地将手势和手腕分开,但计算量大。
因此,本文提出一种改进深度信息的手势分割与定位算法,融合深度信息与可变阈值算法分割出准确手势,消除类肤色以及光照环境变化的干扰,并在黑暗环境下得到良好的手势检测结果,鲁棒性好,减少了计算量;并联合手势重心坐标和最大内切圆圆心坐标准确定位出手势位置,提高了轮椅控制的稳定安全性。
1 改进深度信息的手势分割算法 1.1 基于深度信息阈值限定的手势检测在手势识别中,准确检测手势是关键。本文规定手势正对Kinect摄像头,并将其马达限定在向上约10°角度。根据华南理工大学麦健桦[3]的深度阈值手势分割法,将深度信息获取范围限定在距离Kinect摄像头d1和d2之间,但不能满足轮椅精确安全的控制。为了更稳定精确,进一步缩小(d2-d1)的值,本文设定d1=250 mm,d2=450 mm,最大限度消除实验空间之外复杂环境的干扰,当类似深度有干扰物体时,对深度图像进行直方图分析,计算区分手势与干扰物体的阈值,通过该阈值对深度图像进行处理得到手势图像,获得较优分割效果,手势实验空间设定如图 1所示,坐标系{V}为手势空间基坐标系。
根据已有的基于深度阈值手势检测的文献[3-4, 12],RGB图、深度灰度图(将深度值在d1和d2之间的像素点线性化到灰度区间[1, 254],小于d1和大于d2的令灰度值为0和255) 和手势二值图(对深度灰度图二值化,手势灰度值为255,其余为0) 容易获得,结果如图 2所示。用矩阵G(i,j)表示图 2(b)深度灰度图对应位置的像素灰度值,二值矩阵H1表示图 2(c)手势二值图,目标手势的值为1,否则为0。G和H1均为m×n矩阵,m和n是图像的像素高和像素宽。
如图 2(c)所示,基于深度信息阈值限定检测的手势不准确,有手腕区域,干扰后面的手势轨迹提取和手势识别,而文献[10-11]通过距离变换计算手势与手腕两部分,计算量大。通过研究普通手势特征,本文提出比文献[10-11]更为简便稳定的基于可变阈值算法分割出准确手势,计算量较小。
在手势实验空间中,研究了普通手势特性,手指基本上向上或左右倾斜向上。图 2(c)手势二值图中很快找到最高点M和最低点N,如图 3所示,其中a是MN线段的任意垂线,P是交点,设:
$MP=\lambda MN$ | (1) |
式(1) 中,若能找到恰当的可变阈值参数λ,就能将手势和手腕准确分开。
图 3中点M和N的获取易受孤立点、孔洞等噪声干扰,分割图像边界不够光滑,导致准确获取点M和N存在偏差,因此采用形态学处理方法消除干扰,即在手势二值图中提取连通区域,统计出各连通区域大小,通过阈值门限去除较小的孤立点,采用形态学中的闭运算消除手势图像内部的孔洞,得到准确手势二值图,记作矩阵H2。
手势随机运动使得手腕区域大小和手势倾斜度不断改变,只有恰当的可变阈值λ才能保证分割准确度。通过大量实验研究,图 1实验空间设定在d1与d2之间,λ主要由手势在实验空间中的深度值决定,实验证明可用式(2) 表示λ和H2的分段二次函数关系:
$\begin{align} & \lambda =f({{{\bar{g}}}_{{{\mathbf{H}}_{2}}}})= \\ & \left\{ \begin{array}{*{35}{l}} {{c}_{1}}, \\ [{{{\bar{g}}}_{{{\mathbf{H}}_{2}}}}^{2},{{{\bar{g}}}_{{{\mathbf{H}}_{2}}}},1]{{[a,b,c]}^{T }}, \\ {{c}_{2}}, \\ \end{array} \right.\begin{array}{*{35}{l}} 1\le {{{\bar{g}}}_{{{\mathbf{H}}_{2}}}}\le {{{\bar{g}}}_{1}} \\ {{{\bar{g}}}_{1}}<{{{\bar{g}}}_{{{\mathbf{H}}_{2}}}}<{{{\bar{g}}}_{2}} \\ {{{\bar{g}}}_{2}}\le {{{\bar{g}}}_{{{\mathbf{H}}_{2}}}}\le 254 \\ \end{array} \\ \end{align}$ | (2) |
根据实验测试,式(2) 中各常量取
${{\bar{g}}_{{{\mathbf{H}}_{2}}}}=\left[ \sum\limits_{i=1}^{m}{\sum\limits_{j=1}^{n}{\mathbf{G}(i,j){{\mathbf{H}}_{\text{2}}}(i,j)}} \right]/\left[ \sum\limits_{i=1}^{m}{\sum\limits_{j=1}^{n}{{{\mathbf{H}}_{\text{2}}}(i,j)}} \right]$ | (3) |
其中:m和n表示深度图像高和宽,单位为像素。
手势定位是控制轮椅安全稳定的基础,对实验空间中手势实时准确定位,实际是对手势轨迹的提取[13],手势轨迹是动态手势的重要特征。在实验空间中,建立基坐标系{V},设手势重心坐标为(xg,yg,zg),zg为手势深度平均灰度值,手势定位公式为:
$\begin{align} & ({{x}_{g}},{{y}_{g}},{{z}_{g}})=(\frac{\sum\limits_{i=1}^{m}{\sum\limits_{j=1}^{n}{j{{\mathbf{H}}_{3}}(i,j)}}}{{{S}_{{{\mathbf{H}}_{3}}}}}, \\ & m-1-\frac{\sum\limits_{i=1}^{m}{\sum\limits_{j=1}^{n}{i{{\mathbf{H}}_{3}}(i,j)}}}{{{S}_{{{\mathbf{H}}_{3}}}}},\frac{\sum\limits_{i=1}^{m}{\sum\limits_{j=1}^{n}{\mathbf{G}(i,j){{\mathbf{H}}_{3}}(i,j)}}}{{{S}_{{{\mathbf{H}}_{3}}}}}) \\ & {{S}_{{{\mathbf{H}}_{3}}}}=\sum\limits_{i=1}^{m}{\sum\limits_{j=1}^{n}{{{\mathbf{H}}_{3}}(i,j)}} \\ \end{align}$ | (4) |
其中:G(i,j)H3(i,j)表示两同型矩阵相同位置元素相乘;xg,yg单位为像素;zg的值在区间[0, 255]内,表示灰度值。SH3表示手势大小,单位为像素数,(xg,yg,zg)即为手势定位坐标点。
2.2 最大内切圆定位算法基于手势形状特征,采用最大内切圆法定位手势。设手势像素点集为T,手势边缘像素点集为E,E⊂T。点t∈T是手势内的像素点,点e∈E是手势边缘像素点,对任意ti∈T,有:
${{d}_{i}}=\underset{j}{\mathop{\min }}\,(\sqrt{{{({{x}_{{{t}_{i}}}}-{{x}_{{{e}_{j}}}})}^{2}}+{{({{y}_{{{t}_{i}}}}-{{y}_{{{e}_{j}}}})}^{2}}})$ | (5) |
其中:xti,yti和xej,yej表示点ti和ej的横纵坐标,故di表示点ti到手势边缘的最小距离。对所有di,为了尽量减少浮点运算和冗余计算,结合手掌特征,定义掌心坐标及手掌半径为:
$R=\underset{i}{\mathop{\max }}\,({{d}_{i}})$ | (6) |
取得R的ti为最大内切圆圆心,相应的xti和yti为圆心坐标。式(5) 和(6) 用画内切圆确定半径R,计算流程如图 4。
图 4中定义了一个初始半径,这是容许的最小半径,若以此半径不能画圆,则表示此目标找不到足够宽大的部分,所以不是目标手势。图 5直观地展示了最大内切圆法获取手势圆心和半径的原理,在目标手势内,以点A为圆心画的圆最大,故点A是最大内切圆圆心,该圆半径是手势半径。
图 6是实际采用最大内切圆法获取的手势圆心和半径。其中,四个候选目标被标记成不同颜色,A和B目标满足面积的条件,经过内部点消除处理,而C和D目标面积较小,分辨率较低,无法识别,为节省开支,不再对它们作后续处理。由于目标B以初始半径不能画圆而无法定位,所以也不是手势。目标A满足全部条件,通过本文方法处理后,定位到手势,并找到手势半径。
Nikhil等[14]采用放射线法比较准确地定位手势,但放射线法并不简便,会产生大量冗余数据,于是本文首先采用手势重心定位手势。重心定位法对图形边缘平滑度要求不高,在手势二值化过程中速度较快,在定位中易出现奇异点。由于可变阈值分割是基于一定实验空间条件下分割手势的,若手势异常运动会超出实验空间,出现手臂干扰,手势重心定位准确度降低。而最大内切圆定位法是基于手势形状特征并采用定点运算定位手势,在实验环境中实时计算运动手势最大内切圆圆心的轨迹运动,避免了手腕的干扰,扩大了算法的应用范围;但最大内切圆定位法只获取了圆心二维坐标,缺少手势区域的平均深度灰度值zg,即竖坐标。为了弥补两种定位法的不足,本文联合手势重心和最大内切圆圆心的定位算法,将重心与圆心的二维坐标中点作为手势定位的二维位置,zg作为手势竖坐标,从而得到联合定位结果,提高了手势定位准确度,同时获取手掌半径R,为后续手势轨迹提取、手势跟踪与识别也起着非常重要的作用。联合手势定位流程如图 7所示。
为验证本文算法的有效性,通过实验进行研究。Microsoft Kinect (XBOX 360) 深度摄像头是在软件Kinect for Windows Software Development Kit-v1.7及Kinect驱动软件下进行视觉信息采集,使用Microsoft Visual Studio 2010开发环境及Matlab2012a软件在CPU为3.30 GHz、内存容量为3.19 GB计算机上进行编译与仿真。在手势分割中,由于手势在Kinect视景范围内目标小,选取Kinect高分辨率的深度数据格式为深度图像高480像素,宽640像素。考虑到Kinect性能最优,设定实验空间d1=250 mm,d2=450 mm,实验结果如图 8所示。
在复杂背景条件下进行实验比较与分析,手势分割效果对比如图 8所示。图中每行选取不同手势离摄像头的平均距离H2,不同手势角度和不同光照条件(向左倾斜、向右倾斜、竖直和暗光环境竖直)。由图 8可知,文献[2]和文献[5]分割不准确,都存在手腕部分,而且文献[5]存在过度分割问题,其采用的两次距离变换分割法计算量大;通过对比分割效果,本文手势分割方法能在复杂多变条件下获取准确的手势分割效果,计算量约为文献[5]的15%,为后文手势轨迹提取、手势跟踪与识别奠定了基础。
3.2 手势定位实验在Kinect自身坐标系下,Kinect能够提供人体骨骼数据格式[13](包括手势的人体主要20个骨骼点三维坐标),这是微软通过特殊算法对整个人体在视觉场景中的深度信息估算得到的。因此,可以直接读取手势骨骼点获取手势轨迹信息,骨骼数据和深度数据帧频率都为30 Hz,手势在Kinect场景内做螺旋运动,骨骼数据定位到手势轨迹点;但在出现手势与身体自遮挡时易跳变[15],如图 9中点gm,而且骨骼数据定位轨迹易重叠,如图 10(a)所示。
手势重心定位轨迹有奇异点干扰,如图 10(b)所示,因此本文提出联合手势重心和最大内切圆圆心的定位算法,选取手势重心和最大内切圆圆心的中点作为手势捕捉,对于可能出现异常手势动作轨迹,可采用球面阈值限定算法处理,将1 s分成3个时间片计算平均轨迹点,取异常手势球面限定阈值τr=100,得到手势初始轨迹和处理后的轨迹效果,如图 10(c)所示,使手势更稳定且降低了轨迹冗余度。图 10中x、y轴单位pixel表示像素,z轴(grey value)表示灰度值,由图 10(a)、图 10(b)和图 10(c)对比效果,骨骼数据手势定位易跳变、重叠,手势重心定位存在异常轨迹点,本文算法的手势定位效果更稳定,对异常手势轨迹点有一定的抵制能力。
4 结语本文提出了一种改进深度信息的手势分割与定位算法,通过引入可变阈值去除手腕对手势进行分割并形态学处理,使得手势分割效果更准确;针对手势定位的不稳定问题,提出联合手势重心坐标和最大内切圆圆心坐标的手势定位法准确可靠地定位出手势,并采用球面阈值限定法处理异常手势动作轨迹,为后续高精度手势轨迹提取、手势跟踪与识别提供了有力保证,实验结果证明了该改进算法的可行性与有效性。然而本文只在Matlab上仿真手势轨迹点,实用性不足,因此下一步的研究目标是把手势定位轨迹应用到智能轮椅平台上。
[1] | LIU X, FUJIMURA K. Hand gesture recognition using depth data[C]//Proceedings of the Sixth IEEE International Conference on Automatic Face and Gesture Recognition. Piscataway, NJ:IEEE, 2004:529-534. |
[2] | 罗元, 何超, 王艳, 等. 基于深度预分割结合Camshift跟踪算法的动态手势识别方法[J]. 半导体光电, 2015, 36 (1) : 155-159. ( LUO Y, HE C, WANG Y, et al. A novel dynamic hand gesture recognition method based on depth pre-segmentation combining with Camshift tracking algorithm[J]. Semiconductor Optoelectronics, 2015, 36 (1) : 155-159. ) |
[3] | 麦健桦.基于自然手势的机器人控制[D].广州:华南理工大学,2013:12-14. ( MAI J H. Robotic control based on natural gesture[D]. Guangzhou:South China University of Technology, 2013:12-14. ) |
[4] | 李振.基于手势识别的远程控制机械手的设计[D].武汉:武汉理工大学,2014:22-29. ( LI Z. Design of remote control of manipulator based on gesture recognition[D]. Wuhan:Wuhan University of Technology, 2014:22-29. ) |
[5] | YANG W J, WANG C M. Depth information and motion context feature based dynamic hand gesture detection and recognition[J]. Journal of Information and Computational Science, 2015, 12 (10) : 3775-3782. doi: 10.12733/issn.1548-7741 |
[6] | LEE T, HOLLERER T. Handy AR:markerless inspection of augmented reality objects using fingertip tracking[C]//Proceedings of the 2007 IEEE International Symposium on Wearable Computers. Washington, DC:IEEE Computer Society, 2007:83-90. |
[7] | REN Z, YUAN J, MENG J, et al. Robust part-based hand gesture recognition using Kinect sensor[J]. IEEE Transactions on Multimedia, 2013, 15 (5) : 1110-1120. doi: 10.1109/TMM.2013.2246148 |
[8] | ELSAADANY O S, ABDELWAHAB M M. Real-time 2DHoG-2DPCA algorithm for hand gesture recognition[C]//ICIAP 2013:Proceedings of the 17th International Conference on Image Analysis and Processing, LNCS 8157. Berlin:Springer, 2013:601-610. |
[9] | YAO Y, ZHANG F, FU Y. Real-time hand gesture recognition using RGB-D sensor[M]. New York: Springer International Publishing, 2014 : 289 -313. |
[10] | QIN S, ZHU X, YANG Y, et al. Real-time hand gesture recognition from depth images using convex shape decomposition method[J]. Journal of Signal Processing Systems, 2014, 74 (1) : 47-58. doi: 10.1007/s11265-013-0778-7 |
[11] | QIN S, ZHU X, YU H, et al. Real-time markerless hand gesture recognition with depth camera[M]. Berlin: Springer, 2012 : 186 -197. |
[12] | 陈子毫.基于深度信息的手势检测与跟踪[D].广州:华南理工大学,2012:20-29. ( CHEN Z H. Gesture detection and tracking based on depth information[D]. Guangzhou:South China University of Technology, 2012:20-29. ) |
[13] | SUAREZ J, MURPHY R R. Hand gesture recognition with depth images:A review[C]//2012 IEEE RO-MAN:Proceedings of the 21st IEEE International Symposium on Robot and Human Interactive Communication. Piscataway, NJ:IEEE, 2012:411-417. |
[14] | NIKHIL S, MOHAN S, RAMYA B, et al. Design and development of a DSP processor based reconfigurable hand gesture recognition system for real time applications[C]//Proceedings of the 2010 International Conference on Signal and Image Processing. Piscataway, NJ:IEEE, 2010:39-44. |
[15] | 张世辉, 张煜婕, 孔令富. 一种基于深度图像的自遮挡检测方法[J]. 小型微型计算机系统, 2010, 31 (5) : 964-968. ( ZHANG S H, ZHANG Y J, KONG L F. Self-occlusion detection approach based on depth image[J]. Journal of Chinese Computer Systems, 2010, 31 (5) : 964-968. ) |