2. 英国哈德斯菲尔德大学 计算与工程学院,西约克郡 哈德斯菲尔德 HD1 3DH
2. School of Computing and Engineering, University of Huddersfield, Huddersfield HD1 3DH, UK
近年来,随着计算机的发展和普及,人机交互(human-computer interface,HCI)应用正逐渐以更加多样化的形式全面融入到人们的学习、工作和生活中。其中,由于手势是一种出现较早,使用广泛且较为统一的人类日常交流手段,所以基于手势的HCI技术得到了越来越多的关注,特别是在难以基于统一的语言进行交流的相关应用场景。手势交互包括静态手势和动态手势两种类型[1],其中静态手势是指在某一时间点手势的形态所表达的意义,而动态手势是指在时间序列中一段手势的运动轨迹所表示的含义。传统的手势识别需要借助于特殊的硬件设备(如数据手套),通过各种传感器来获取用户关节的位置信息,进而进行手势识别。这样的方式虽然较为准确但同时增加了手势识别的成本,也大大降低了用户的应用体验,限制了手势识别的应用场景。另一方面,近几年来,基于机器视觉的手势识别解决方案因其低廉的硬件成本、方便性和易获取性等优点得到了快速的发展,成为了当前的研究热点。它的研究涉及到模式识别、计算机图形学、计算机视觉和人工智能等多个领域,在人机交互方面有着更广阔的应用前景,主要包括:1)手语识别,例如,普通人与聋哑人之间的交流存在障碍,而自动手势识别可以提供良好的手语智能交流平台,使得双方可以进行无障碍交流;2)在线教育,通过精准的手势识别,可以操控图像显示,使得教学课程更具吸引力;3)机器控制,在复杂的背景环境下,可以通过手势实现对智能机器人或智能家电的便捷控制。因此,此课题的研究目标是设计并开发一套高效、准确的静态手势智能识别系统并将其应用于机器人智能控制领域。
依据前期相关研究工作的总结,当前智能静态手势识别的核心研究点包括手势定位、手势分割、特征提取和分类识别[2-4]。其中,手势分割是自动地将定位后的手势从背景中提取出来的图像分割方法,手势分割的效果(完整度和准确率)对后续处理过程的识别率和计算效率起到至关重要的影响。因此,手势分割是整个智能手势识别过程中的关键处理步骤。Tara等[5]学者提出了一种基于深度图像的手势分割方法,利用阈值分析技术求得手势在图像中的位置,但深度图像设备价格过于昂贵无法普及使用。王先军等[6]学者运用Hu特征矩描述手势的轮廓特征,进而用BP(back propagation)神经网络进行手势分类。但是,仅基于Hu特征矩的特征描述包含大量的冗余信息,所以其后续识别的实时性无法保证。同一时期,Patel等学者利用SIFT(scale invariant feature transform)特征点匹配算法对美国手语(ASL)的26个英文字母A-Z和10个数字0-9对应的静态手势进行了匹配识别[7]。
综上所述,当前手势分割与识别的主要技术难点为:1)类肤色背景下难以准确进行手势分割;2)手臂部分的冗余信息难以去除;3)难以降低手势识别的计算复杂度[8-11]。针对以上问题,本文提出了一种能够在相对低廉的单目视觉硬件平台上,基于ICWA算法和集成PCA降维与凸性检测方法的静态手势分割算法模型。本文首先讨论如何利用图像梯度信息和ICWA算法进行类肤色背景环境下的手势图像分割与提取,再结合PCA降维算法提取的手势斜率特征和凸性检测获得的手势凸点信息,说明如何将手掌和手臂部分进行分割,进而有效地减少手势识别的冗余信息。本文通过展示与文献[7]中的SIFT算法的对比实验结果验证了该模型能够高效、准确地从类肤色背景环境中分割、提取出手势图像并准确地将手掌和手臂的图像区域区分开来。最后,本文还展示了一个初步的基于卷积神经网络(convolutional neural network,CNN)的手势智能识别框架并获得了良好的识别率,从而进一步验证了此模型的正确性和实用性。
1 基于ICWA的手势分割与识别研发基于ICWA的手势智能识别系统的主要步骤为手势定位、手势分割和手势识别,其总体工作流程(如图1所示)为:1)在单目视觉条件下采集图像数据并进行手势定位;2)利用ICWA对定位后的图像进行肤色区域与类肤色背景的分离;3)保留肤色区域并删除冗余的手臂区域;4)利用深度学习网络进行手势识别。
Download:
|
|
肤色信息通常被用于人脸识别和手势识别等研究中[2, 4]。对于手势识别应用,只要在合适的色彩空间中(例如:HSV、HSI、RGB、YUV和YCrCb)对肤色图像数据进行采样并计算合适的阈值就可以实现肤色区域和非肤色区域的分割。由于肤色检测对亮度十分敏感,因而将RGB空间下的图片转化到YCrCb空间以减少亮度对肤色检测的影响。经过理论分析与实践可知,YCrCb空间是最适合肤色图像区域分割的颜色空间。RGB空间与YCrCb空间的转换公式为
$\left\{ \begin{gathered} Y = 0.257R + 0.564G + 0.098B + 16 \\ {\rm Cr} = - 0.148R - 0.291G + 0.439B + 128 \\ {\rm Cb} = 0.439R - 0.368G - 0.071B + 128 \\ \end{gathered} \right.$ | (1) |
为了进一步降低光线对目标分割的影响,需要将亮度分量单独保存到一个颜色空间[12-13],经过大量实验证明,YCrCb空间最适合肤色分割且黄种人的肤色区域阈值为:Y>80,133<Cr<173,77<Cb<127[14-15]。因此,将图像从RGB空间转换到YCrCb空间后,根据此阈值即可以将肤色和非肤色区域分割开。其结果如图2和图3所示。
Download:
|
|
Download:
|
|
简单的基于YCrCb空间的肤色分割方法并不能达到准确地分割出手势的目的,因此需要进行进一步的算法处理,其中首要的任务就是要分离肤色和类肤色区域,从而实现手势区域的准确提取。首先,图3所示的结果依然包含了很多粗糙点、空洞点和毛边等,所以在准确分割、提取前,利用形态学中的开运算(先进行腐蚀操作后进行膨胀操作)和闭运算(先进行膨胀操作后进行腐蚀操作)对原始静态手势图片进行预处理以去除图像数据噪声。腐蚀与膨胀操作的公式为
$A \odot B{\rm{ }} = {\rm{ }}\{ z|{\left( B \right)_z} \subseteq A\} $ | (2) |
$A \oplus B{\rm{ }} = {\rm{ }}\{ z|{(\hat B)_z} \cap A \ne \text{Ø} \} $ | (3) |
腐蚀之后图像会向内收缩,而膨胀之后图像会向外扩展。如图4所示,手势图片经形态学的开和闭运算之后消除了毛边和空洞点,图片中的手势边界和类肤色区域边界均较为圆滑,适合进行下一步的肤色与类肤色区域的精确分割与提取。
Download:
|
|
分水岭算法(watershed algorithm, WA)是一种基于计算机形态学的图像分割算法,它能够高效、准确地连通目标区域的边界,因而被广泛地应用于数字图像处理领域[16]。传统的WA是一种基于拓扑理论的数学形态学分割方法,它将一张图像看成一幅地形图,每个像素点坐标(x,y)即成为地形图中的平面坐标,而该像素点的灰度值即是地形图中的海拔高度值。每一个局部极小值都被称为积水盆地且会对其附近的区域产生影响。由于传统的WA是一种基于图像梯度的图像分割方法,所以当图像中拥有的局部极小值太多时就会形成过多的初始化点,导致图像的过度分割问题,从而得不到理想的分割结果。因此,需要在传统的WA上进行改进,以求解决过度分割问题,所以改进的算法必须能够减少原图像像素的梯度差,同时减少初始分割点。本文提出的ICWA的总体算法流程如图5所示。
Download:
|
|
1)对开闭操作后的灰度图像进行高斯滤波,以去除噪声数据。例如,经过高斯滤波后的灰度图像可以消除大量无效的局部最小值点,以防止过度分割。
2)计算开、闭操作后灰度图的Hu矩,再由Hu矩特征得到质心坐标。几何矩和质心坐标的计算式为
${M_{pq}} = \int_{ - \infty }^{ + \infty } {\int_{ - \infty }^{ + \infty } {{x^p}{y^q}f(x,y){\rm d}x{\rm d}y} } $ | (4) |
$\overline x = \frac{{{m_{10}}}}{{{m_{00}}}}\;\;{\rm{ }},\overline y = \frac{{{m_{01}}}}{{{m_{00}}}} $ | (5) |
式(4)表示图像f(x,y)的p+q阶几何矩,而式(5)表示图像f(x,y)的质心坐标。
3)将质心和经过高斯滤波过滤后的图像梯度的局部极小值作为积水盆地(经过大量实验验证,这里选择梯度值低于22),并开始一点点填充寻找分水岭。经过ICWA处理结果的对比实验证明,该算法可以完整地分割、提取出浅蓝色的手势区域,并准确地排除其他类肤色区域,如图6所示。与之相比,传统WA会造成严重的过分割现象,如图7所示。此外,如图8所示,经过ICWA分割、处理得到的图片周边会存在很多毛刺,因此还需要对图8进行中值滤波处理,处理后的结果如图9所示。
Download:
|
|
Download:
|
|
Download:
|
|
Download:
|
|
在手势识别中手掌部分的信息是最重要的,其影响着手势识别的正确率,而手臂部分则是冗余信息完全可以删除,所以实现手掌与手臂之间的分割是手势智能识别之前的关键处理步骤,它可以有效地提高手势识别的计算效率以及手势识别的准确率。因此,本文提出一种基于凸性检测[17]和PCA降维算法[18]相结合的手臂分割方法。
3.1 凸性检测凸性检测是理解物体轮廓的一种有效方法,就是求一组点集的凸包集合。它是计算机几何学的一个基本问题,其本质就是利用Graham Scan算法来维护一个凸壳(凸包轮廓),通过不断地对凸壳中加入新点或者删除影响凸性的点,来不断地改变凸壳的形状,最终形成一个稳定的凸包,其算法流程总结如下:
1)对点集的排序,其目的是为了梳理杂乱的点集以提高算法的效率。这里采用极坐标系,找到y坐标最小的点(若y坐标相同则取x小的点)记为p0,将p0与{p1,p2,...,pn}中每个点相连,再以p0为极点,进而计算每条连线的极角并按从小到大排列(若极角相等则计算距离由小到大排列)。
2)把p0、p1依次入栈,遍历剩下的点集PLeft={p2,p3,p4,...,pn}把属于凸包的点集入栈,其他无关点集出栈。其中,可以根据叉积来判断入栈和出栈,若依次遍历PLeft中的每一个点,若当前点为凸包凸点时,则向左旋转,而没有向左旋转的点则是非凸点。
Download:
|
|
3)根据已有的凸包轮廓和凸点坐标,可以进一步求得凸点坐标和凸包轮廓之间的距离,将点集分为距离凸包轮廓近的“近点”和距离凸包轮廓远的“远点”,一般人的手腕都是凹陷处即远点,所以寻找手臂分割线可以先从“远点”入手,若“远点”集合中没有再寻找“近点”集合。
3.2 基于PCA降维的手臂分割线提取方法PCA即主成分分析,用于图像和数据的降维,其本质就是将高维数据降维到低维空间。这里探索将PCA降维方法应用于手臂分割线的提取,主要目的是要研究一种方法来便捷地得到手势的主要方向。基于手臂分割线与手势方向基本呈现垂直状态的客观事实,求得了手势的方向也就得到了手臂的分割线。基于PCA降维的手臂分割线提取算法的具体步骤如下:
1)求得原始静态手势图片的均值图片,并以原始图片减去均值图片得到均差图片。
2)求得步骤1)中均差图片的协方差矩阵,再由协方差矩阵得到静态手势图片的特征值和特征向量,将特征值和特征向量一一对应并按从大到小进行排列。
3)取前k个特征向量,对均差图片进行降维。基于只想从该方法中得到手势的方向,只要取值meaneigval=1(meaneigval为选取前meaneigval个特征值与其所对应的特征向量,因为一副静态手势图片中,手势斜率为其主要特征且特征值最大,因此meaneigval取值为1)即可得到原始静态手势的斜率k。
4)为了有效降低计算量,此算法先遍历“远点”集合中的每两个点,求得它们之间的斜率k′和距离d,进而根据k×k′=−1,取得与−1最接近的前3条连线和点集,再从中取d最大的作为手臂的分割点,因为手臂间的宽度总是大于手指间的宽度。若在“远点”集合中没有寻找到分割线就再在“近点”集合中进行查找。最后,还要以手势质心方向判断分割线是否查找正确,若质心点在分割线之上则正确,反之错误继续查找。根据以上步骤进行了基于PCA降维的手臂分割线提取方法的手腕分割实验,结果如图11和图12所示。
Download:
|
|
Download:
|
|
本文的实验采用Python3.5和OpenCV3.3实现,测试平台的硬件环境如表2所示。本文使用的手势图片数据集包括Marcel标准手势数据集和网络上收集的手势数据图片,一共包含了9种手势,共16 898张图片。
本文首先使用传统的SIFT算法对无类肤色背景的静态手势图片进行了基于特征点匹配的自动识别,其识别结果如图13所示。其中,手势图片为数据集中表示“平铺”意义的手势,图13(a)检测出了47个特征点,而图13(b)检测出了41个特征,连线表示匹配成功的特征点。可以看出,在此SIFT特征点匹配算法中,由于手势的旋转或者阴影的干扰,都会造成特征点提取和匹配的误差,从而导致识别的准确率降低,同时由于手臂的冗余信息无法去除会造成匹配算法的效率大大降低。
Download:
|
|
此外,本文将传统WA、主动标记的分水岭算法AMWA(active marker watershed algorithm)和ICWA进行了对比实验。图14在展示了在类肤色背景下WA、AMWA和ICWA之间的静态手势分割结果对比。其存在的主要问题在于WA算法虽然能够分割出肤色和类肤色区域,但会出现严重的过分割现象,将手势分割的较为零散,影响后续识别的准确率。而改进的AMWA算法,虽然不会出现过分割现象,但无法区分肤色和类肤色区域,所以同样影响识别准确率。而本文提出的ICWA算法可以较为准确地分割出手势区域,原因在于其集成的高斯滤波可以有效地减少图像的梯度差,并且ICWA算法只由一个质心点作为初始点,有效地减少了传统静态手势分割算法中的过分割和无法完全分割的问题。本实验将ICWA处理后的图片(像素为48×48)作为输入数据,放入LeNet CNN中达到了较好的识别效果。为了验证该实验的实用性和正确性,本实验初步采用了CNN中最经典的LeNet-5模型:首先由6个卷积核为5×5、步长为1的卷积层提取图像特征,由核为3×3、步长为2的池化层聚合特征,然后由16个卷积核为5×5、步长为1的卷积层提取特征和核为3×3、步长为2的池化层聚合特征,再由2层全连接层平铺特征进行分类,最后输出分类信息,具体结构如图15所示。
Download:
|
|
Download:
|
|
如表3所示,使用传统SIFT算法识别9种手势的平均识别率为83.04%,而本文所提出的ICWA+LeNet CNN方法的识别率都高于SIFT算法,且其平均识别率达到了97.85%。其主要原因在于:1) SIFT方法会受到手势的旋转和阴影的干扰而导致特征点提取的不一致和相应的匹配错误,最终无法正确进行手势识别; 2) SIFT算法需要进行特征点匹配,若匹配不成功就会出现误据,而ICWA利用CNN进行分类则不会出现误据的情况。因此,ICWA算法可以完整地分割出静态手势的有效区域,进而能够准确地提取出静态手势的特征。
利用Marcel标准手势数据集,在表2所列的硬件平台上对本文所提出的ICWA和传统分水岭算法进行对比实验。图16分别展示了ICWA+LeNet CNN方法和传统的分水岭算法+LeNet CNN方法对Marcel数据集中的每张图片进行分类识别的结果对比(按手势种类取平均值)。从实验结果可以看出,ICWA+LeNet CNN方法识别率明显高于传统分水岭算法+LeNet CNN方法。
Download:
|
|
本文发现基于低成本单目视觉的静态手势分割算法依然难以在复杂类肤色背景下进行准确、完整的手势图像分割与提取:1)传统分水岭算法很容易在类肤色背景和手势前景中造成严重的过分割现象;2)传统方法没有考虑将手臂和手掌部分进行高效地分割,以减少冗余信息。为了解决这个难题,本文提出了针对有大量类肤色背景的静态手势分割算法模型。其设计并集成了ICWA算法、PCA降维与凸性检测融合算法。该模型首先由ICWA算法进行肤色区域与类肤色区域的区分,保留肤色区域,然后由PCA降维与凸性检测相结合的算法求得手臂分割线,排除手臂冗余区域。最后,经过大量实验验证了该算法模型的准确性、有效性和实用性。其精确、高效的手掌部分图像的分割与提取为后续静态手势的快速、智能识别打下了坚实基础。
未来的研究重点是探索一种特征描述算子来描述、记录动态手势的轨迹,特别是三维深度信息。此外,需要深入研究并设计出满足实用要求的深度学习网络来高效、智能地识别有缺陷的静态手势分割图片和使用动态的手势轨迹特征进行学习。
[1] |
易靖国, 程江华, 库锡树. 视觉手势识别综述[J]. 计算机科学, 2016, 43(S1): 103-108. YI Jingguo, CHENG Jianghua, KU Xishu. Review of gestures recognition based on vision[J]. Computer science, 2016, 43(S1): 103-108. (0) |
[2] |
曹昕燕, 赵继印, 李敏. 基于肤色和运动检测技术的单目视觉手势分割[J]. 湖南大学学报 (自然科学版), 2011, 38(1): 78-83. CAO Xinyan, ZHAO Jiyin, LI Min. Monocular vision gesture segmentation based on skin color and motion detection[J]. Journal of Hunan university (natural sciences), 2011, 38(1): 78-83. (0) |
[3] |
张国亮, 王展妮, 王田. 应用计算机视觉的动态手势识别综述[J]. 华侨大学学报 (自然科学版), 2014, 35(6): 653-658. ZHANG Guoliang, WANG Zhanni, WANG Tian. Survey on dynamic hand gesture recognition with computer vision[J]. Journal of Huaqiao university (natural science), 2014, 35(6): 653-658. (0) |
[4] | WU Ying, HUANG T S. Vision-based gesture recognition: a review[C]//International Gesture Workshop on Gesture-Based Communication in Human-Computer Interaction. Berlin, Heidelberg, Germany: Springer-Verlag, 1999: 103–115. (0) |
[5] | TARA R Y, PAULUS T, SANTOSA I, et al. Hand segmentation from depth image using anthropometric approach in natural interface development[J]. International journal of scientific & engineering research, 2012, 3(5): 208-215. (0) |
[6] |
王先军, 白国振, 杨勇明. 复杂背景下BP神经网络的手势识别方法[J]. 计算机应用与软件, 2013, 30(3): 247-249. WANG Xianjun, BAI Guozheng, YANG Yongming. Hand gesture recognition based on BP neural network in complex background[J]. Computer applications and software, 2013, 30(3): 247-249. DOI:10.3969/j.issn.1000-386x.2013.03.065 (0) |
[7] | PATEL D G. Point pattern matching algorithm for recognition of 36 ASL gestures[J]. International journal of science and modern engineering, 2013, 7(1): 24-28. (0) |
[8] | LEE J Y, RHEE G W, DONG W S. Hand gesture-based tangible interactions for manipulating virtual objects in a mixed reality environment[J]. International journal of advanced manufacturing technology, 2010, 51(9/10/11/12): 1069-1082. (0) |
[9] | ZENG Jianchao, WANG Yue, TURNER R, et al. Vision-based finger tracking of breast palpation for improving breast self-examination[C]//Proceedings of 18th Annual International Conference of the IEEE Engineering in Medicine and Biology Society. Bridging Disciplines for Biomedicine. Amsterdam, Netherlands: IEEE, 1996: 148–149. (0) |
[10] | DAVIS J, SHAH M. Visual gesture recognition[J]. IEE proceedings-vision, image and signal processing, 1994, 141(2): 101-106. DOI:10.1049/ip-vis:19941058 (0) |
[11] | DORFMULLER-ULHAAS K, SCHMALSTIEG D. Finger tracking for interaction in augmented environments[C]//Proceedings. IEEE and ACM International Symposium on Augmented Reality. New York, NY, USA: IEEE, 2001: 55–64. (0) |
[12] |
张国家, 左敦稳, 黎向锋, 等. 基于圆形梯度的手势分割算法的设计与实现[J]. 机械设计与制造工程, 2013, 42(9): 1-6. ZHANG Guojia, ZUO Dunwen, LI Xiangfeng, et al. Design and development of a new gesture segmentation algorithm based on circular gradient[J]. Machine design and manufacturing engineering, 2013, 42(9): 1-6. DOI:10.3969/j.issn.2095-509X.2013.09.001 (0) |
[13] |
杨磊, 隋云衡, 姚立虎. 结合肤色分割与手形匹配算法的静态手势检测[J]. 信息通信, 2013(4): 4-6. YANG Lei, SUI Yunheng, YAO Lihu. The static gesture detection with combining skin color segmentation and hand-shape matching algorithm[J]. Information and communication, 2013(4): 4-6. DOI:10.3969/j.issn.1673-1131.2013.04.002 (0) |
[14] |
张羽, 徐端全. OpenCV分水岭算法的改进及其在细胞分割中的应用[J]. 计算机应用, 2012, 32(S1): 134-136. ZHANG Yu, XU Duanquan. Improvement on watershed algorithm of OpenCV and its application in cell image segmentation[J]. Journal of computer applications, 2012, 32(S1): 134-136. (0) |
[15] |
胡学敏, 沈朝晓, 王司雨, 等. 基于多边形凹凸点检测的远距离手势识别[J]. 信息通信, 2015(9): 57-58. HU Xueming, SHEN Chaoxiao, WANG Siyu, et al. Remote gesture recognition based on polygon bump pointdetection[J]. Information and communication, 2015(9): 57-58. DOI:10.3969/j.issn.1673-1131.2015.09.032 (0) |
[16] |
邱瑞, 祝日星, 许宏科. 基于改进分水岭算法的图像分割算法[J]. 吉林大学学报 (理学版), 2017, 55(3): 629-634. QIU Rui, ZHU Rixing, XU Hongke. Image segmentation algorithm based on improved watershed algorithm[J]. Journal of Jilin university (science edition), 2017, 55(3): 629-634. (0) |
[17] |
王晓, 踪琳. 基于OpenCV视觉库的嵌入式视频处理系统[J]. 电子质量, 2017(3): 54-59. WANG Xiao, ZONG Lin. Embedded video monitoring system based on OpenCV visual library[J]. Electronics quality, 2017(3): 54-59. DOI:10.3969/j.issn.1003-0107.2017.03.014 (0) |
[18] | PRIYAL S P, BORA P K. A robust static hand gesture recognition system using geometry based normalizations and Krawtchouk moments[J]. Pattern recognition, 2013, 46(8): 2202-2219. DOI:10.1016/j.patcog.2013.01.033 (0) |