董嘉棋, 万卫兵, 朱特浩, 何 弢, 赵群飞
(上海交通大学 电子信息与电气工程学院,上海 200240)
随着生活水平的提高,阅读已经成为人们生活中一项重要的文化娱乐活动.虽然电子书籍已经相当普及,但是传统的纸质书籍还大量存在.对于行动不便的老年人与一些身患疾病的特殊人群来说,翻书阅读存在一定的困难.为了帮助这些特殊人群进行阅读,有必要设计一种可以自动翻页的翻书机器人,通过语音、触摸屏、按键以及手势来控制翻页及翻页方向以辅助阅读.
近年来,助老助残的服务型机器人有了长足的发展,也有多款帮助上述特殊人群阅读的翻书机器人相继问世.日本西泽电机公司开发了“Book Time”翻书机器人[1],其可以通过按键和用嘴吹气控制翻书,已经在西方许多国家作为福祉设备推广应用. 2011年北京林业大学学生在科博会展出了自制的翻书机器人[2],通过开关控制机械手捻搓翻页.2009年上海交通大学与早稻田大学联合开发了读书机器人“二宫君”[3],实现了自动翻页与语音合成机器朗读,曾在日本引起了很大的反响.自2008年以来,上海交通大学也相继开发了几代翻书机器人[4-5],除了按键[6]、鼠标等控制方法,还增加了声音控制的功能[7],通过声控完成翻书操作.然而在现实生活中仍有一部分人由于各种原因手不能动或发音不清楚,上述控制方式的使用就有很大的局限性.因此,很有必要探索其他全新的控制模式——基于机器视觉的手势控制指令识别.
手势交互是一种自然且直观的人机交互模式,在信息表达上比表情等模态更明确,信息量更为丰富.早期研究中用户通过戴上数据手套获取关节角度和位置信息进行手势识别[8],然则这种方法复杂昂贵,不适合构造自然的人机交互系统,因此,基于视觉的手势识别逐渐成为实现人机交互的关键技术.目前大部分基于视觉的手势识别是通过模板匹配来进行的.文献[9]提取手势的7个Hu矩并进行尺度归一化,通过计算马氏距离进行模板匹配.但该方法不足在于随着手势的增加所需要模板的数量也要增多,无法避免随着模板增多出现识别率和识别速度下降的状况.也有研究者使用神经网络技术进行手势识别,文献[10]采用卷积神经网络对手势特征进行学习分类.神经网络方法容错能力强,能很好克服噪声影响,但是还需要增强对时间序列的建模能力以及对动态手势的识别效果.为了提高对动态手势的识别率,概率统计的方法被大量应用到手势识别中.隐马尔科夫模型[11]能很好地描述手势信号的时空变化,但由于计算量过于庞大并且速度缓慢,不太适用于实时应用.条件随机场对时空上的手势特征变化具有很好的鲁棒性,但复杂度较高,需要大量的手势样本进行模型的训练.此外,文献[12]利用深度信息结合动态时间规整的方法,以掌心和指尖距离为特征,进行动态及静态手势的匹配.但该方法对手势的旋转和缩放有一定的局限,对方法的适用性造成了影响.
翻书机器人的控制需要具有适用性高、实时性高、对动态及静态手势识别率高等特点,上述方法虽然在部分情况下都有很好的效果,但是无法适用于翻书机器人的控制.因此本文将手势控制指令识别作为人机交互的一种手段来控制翻书机器人,为了实现助老助残的目的,提出利用深度信息结合手势几何表征特征的改进手势控制指令识别算法. 通常手势区域分割多依赖于肤色模型[13],但此方法对环境敏感,适用性不高.由于深度信息具有不易受环境干扰且能准确提取出感兴趣领域及特征的特点,因此本文通过Kinect(体感外设)获取手部深度图像进行处理来识别静态手势控制指令.首先从手部深度图像中利用最小深度点分割手势区域,排除复杂背景下对肤色分割的干扰.其次,运用轨迹圆提取手势表观特征并通过决策树进行快速分类,使手势特征具有旋转缩放不变性,有效提高识别的准确率和效率.最后,利用Kinect获取用户上肢的骨骼信息,同时识别用户发出的动态翻书方向和静态翻页数量的手势指令,对翻书机器人进行控制,达到准确翻页的效果.
由上海交通大学机器人与机器视觉实验室开发的翻书机器人如图1所示.翻书机器人由置书台、翻书杆和压书机构3个部分组成,分别由电机和舵机控制,可以根据不同模式的控制指令实现抬起或落下压书、左右翻页和记录翻书页数等功能.此翻书机器人结构简单,利用平行四边形原理实现了对不同厚度、不同尺寸书籍的自动调节,使翻书面始终保持在一个平面,可以方便翻书杆和压书机构工作,为无法亲自动手翻书的特殊人群提供方便.
图1 翻书机器人示意图
Fig.1Imageofthebookturningrobot
翻书机器人可以接受多种模式的控制指令来实现其翻书功能,如图2所示.用户通过串口数据线接入一个按键控制器,可以实现按键控制;同样,接入触摸板后可以实现触摸控制;接入话筒即可以通过语音对其进行控制;此外,还有手势控制以及面部表情的控制.本文的主要目的是提出基于机器视觉的手势控制指令识别算法.
图2 翻书机器人控制方式
Fig.2Controlmethodsofthebookturningrobot
面向翻书机器人的手势控制系统框架如图3所示.该系统通过Kinect捕捉用户的手势指令数据,根据对动态和静态手势的分析结果,选择相应的控制指令传给翻书机器人,实现翻书的目的.其中,动态指令控制翻书机器人翻页方向,静态指令控制翻书机器人翻页的数量.
图3 翻书机器人手势控制系统框图Fig.3 Framework of the gesture control system
为了满足人们翻书阅读的需求,翻书机器人手势控制系统必须具备以下主要功能:(1)左右翻页;(2)单次或连续翻页;(3)开始翻页;(4)停止翻页.
对应于上述功能的手势控制指令的定义如表1所示.其中,向左翻和向右翻是通过胳膊的运动轨迹来判断的,因此称之为动态手势指令;而其他指令,如翻一页、连续翻等,由于手势指令发出后要保持一段时间,因此称之为静态手势指令.
表1 手势控制指令
(续 表)
所有控制指令由Kinect接收,通过获取人体骨骼信息以及深度图像信息,同时获取动态及静态手势,来对机器人进行翻书控制,具体步骤如下:
(1) 设定OK的手势作为控制翻书开始信号.
(2) 检测10 s内是否有用户的手势控制指令,如果无控制指令,则算法结束;如果有,则转至步骤(3).
(3) 检测用户是否做出End的静态手势.如果做了,则算法结束;如果没做,则转至步骤(4).
(4) 用户挥动手臂给出翻书方向的指令后,判断是左手还是右手给出指令,并判断挥动方向,由此来确定翻书方向.
(5) 用户给出静态手势指令后,系统识别并控制翻页.
(6) 返回步骤(2).
翻书机器人的控制流程如图4所示,其中识别算法和设定参数将在第2节中详细给出.
图4 翻书机器人控制流程图Fig.4 Control flowchart of the book turning robot
翻书机器人系统的动态手势控制指令识别控制通过Kinect实时获取人体骨骼信息来实现.Kinect骨骼示意图及其空间坐标如图5所示.Kinect可以采集人体骨架20个关节点的三维空间坐标信息.
(a) Kinect骨骼示意图
(b) Kinect骨骼空间坐标
由于用户在进行动态手势的控制时,手的关节点的运动幅度和范围是最大的,并且动态手势控制结束,用户给出静态手势时,手的关节点几乎是不动的.因此,可以根据手的关节点在空间的运动就能很明显地区分出何时用户发出了动态手势指令,何时发出的是静态手势指令.
根据翻书机器人控制系统的特点,本文选定手的关节点的坐标作为动态手势控制指令识别的主要参数.
动态手势控制指令识别的步骤如图6所示.
图6 动态手势控制指令识别算法流程图Fig.6 Flowchart of the dynamic gesture recognition
(1) 当获取到OK手势的开始信号后,对于第i帧输入的手关节点的横坐标Xi,计算每帧之间左手(或右手)的关节点的横坐标之差,记为ΔXi=Xi-1-Xi,i=1, 2, ….
(2) 当手保持不动时,ΔXi一直为0.从某一帧i=t0时手开始动,获取到第一个不为0的横坐标之差,记为ΔXt0.其后每一帧获取的手关节点的横坐标与前一帧的横坐标之差记为ΔXt,t=t0+1,t0+2, ….
(3) 若ΔXt0为左手关节点之差,则判断左手在进行挥动;反之,判断右手在进行挥动.
(4) 根据Kinect的坐标系,当ΔXt0>0时,表示手向右挥动,即控制翻书机器人向右翻页.反之,当ΔXt0<0时,表示手向左挥动,即控制翻书机器人向左翻页.
(5) 对ΔXt0之后获取的关节点手的横坐标之差的绝对值进行比较,若|ΔXt|>2 cm,则表示手还在挥动;若|ΔXt|<2 cm,则表示手停止挥动,即动态手势控制结束,之后进入静态手势控制指令识别待令状态.
静态手势控制指令用集合GC来表示,根据表1中定义,即有
GC={OK, End, P1, P2, P3, P4, P5, P6, P7, P8, P9, Start, Stop}
(1)
用GI表示手势控制指令的图像输入集合,即
GI={gi|第i帧手势控制指令,i=1, 2,…}
对于每一帧手势指令图像输入gi∈GI,i=1, 2,…,从中提取的特征向量定义为
(2)
用GF表示所有gi∈GI的特征集合,那么有
(3)
算法主要目标是对于给定的手势指令输入,提取其3个表观特征,然后构建一个分类器CR,通过分类器进行静态手势指令识别.广义上把分类器可以看作为一种映射,其定义为
CR:GI×GF→GC
(4)
根据研究,决策树具有快速简单、无需训练样本等特点,故选择决策树作为分类器.静态手势指令识别过程将在2.2.4中详细介绍.
2.2.1手势区域分割
要准确地提取每一个输入手势控制指令的表观特征,必须通过深度图像把手势区域从背景中分割出来.选择合适的深度信息阈值在分割手势区域的过程中便于限定搜索空间,滤去手以外背景的干扰.
一般情况下,用户在做手势的时候,会很自然地把手伸向身体的前方,使手成为距离摄像机最近的物体.假设用户在使用中手是距离Kinect摄像头最近的物体,为了能追踪到手的区域和获取手的轮廓,首先检测距离Kinect的最小深度的像素点,如图7所示.然后根据用户手势的运动范围,设定了一个常值作为手部的检测区间的最大深度.经过多次试验测试,最后选择20 cm作为深度区间值.这种方法既简单又不会在使用上对用户强加限制,之后的试验也证明通过最小深度点来检测和分割手势区域是个简单高效的方法.
图7 手势区域检测示意图Fig.7 Image of the inspection interval of gestures
2.2.2掌心和指尖定位
(1) 掌心定位.在深度图中获取手势区域后,对其进行二值化处理.由于手掌在手势区域中较为集中而且占有最大的面积,所以本文采取连续腐蚀操作,消除手势区域的边界点,使手势的区域缩小,最后得到掌心C,如图8所示.
图8 通过腐蚀操作获取掌心Fig.8 Images of the palm center obtaining by the morphological erosion operation
(2) 指尖定位.对二值化处理后的手势区域图去噪并提取轮廓.文献[14]研究表明k曲率算法具有较高的识别率、较低的计算复杂度以及旋转不变性,故本文采用k曲率算法在提取的轮廓上定位指尖.
图9 k曲率算法找指尖示意图Fig.9 Image of k-curvature algorithm to locate finger tips
2.2.3手势特征提取
具体的手势表观特征提取步骤如下:
(1) 根据之前操作提取的掌心C和指尖Fi,找出掌心到指尖的最大距离L,以掌心为圆心,以L/10, 2L/10, …,L为半径做10个同心圆,记c为同心轨迹圆的编号.得到的轨迹圆如图10所示.若指尖个数为0,则不进行画轨迹圆操作.
图10 手势表观特征提取Fig.10 Images of feature extraction for gestures
(2) 以掌心所在的水平线为起点,顺时针方向记录每条轨迹圆上的像素值以0-1-0变化过程的个数,记为Nc.Nc表示每条轨迹圆上有多少个分支与掌心区域相连,故max(Nc)即为与手掌相连的分支总和.
图11 轨迹圆上分支的个数Fig.11 Number of the branches
(3)Nc既包含了手指也包含了手腕部分,所以手指个数Fi=max(Nc)-1.
该方法在手势旋转和缩放的情况下也能做到快速识别,保证识别的准确率,相比于其他手势特征提取方法,具有直观性高、适应强和运算快等特点.
2.2.4静态手势控制指令识别
根据式(4)的定义,为了用决策树对静态手势进行识别,必须确定和计算手势的表观特征.表1中定义的13种静态手势放大后如图12所示.
图12 几种常见手势Fig.12 Images of some normal gestures
(1) 手指个数Fi;
(2) 指尖个数Ti;
针对这几个表观特征,通过图12的观察分析发现:
(1) 根据手势OK的定义,在寻找指尖的时候识别出了3个指尖,并且在轨迹圆法中识别出了5根手指.
(2) 当识别出的手指个数和指尖个数相等时,不同的手势之间,指尖个数Ti的特征区分比较明显.由于手势P1、 P4、 P5和End的指尖个数特征具有唯一性,可以直接通过指尖个数Ti来分类.
根据上述条件,基于决策树的分类器可以确定为
(5)
式中:(*,*)表示指间夹角的取值范围;*表示取任意值;-表示无指间夹角.
手势控制指令识别的决策树结构如图13所示.
图13 手势分类决策树Fig.13 Decision tree of gesture classification
翻书机器人控制系统由Kinect通过USB接口与电脑连接,再通过串口将翻书机器人和电脑连接进行指令通信.采样的图片分辨率为640像素×480像素,识别速度为20帧/s,可保证控制系统的实时性.翻书机器人控制系统试验.如图14所示.
图14 翻书机器人控制系统示意图
Fig.14Imageofthebookturningrobotcontrolsystem
从复杂背景中分割出的手势掌心和指尖的检测图如图15所示.整体可以看出,文中提出的方法能够准确地检测出手势区域,并且能对掌心和指尖部分进行准确定位.
图15 手势区域检测及掌心和指尖定位
Fig.15Imageofthegestureareadetectionandlocalizationofthehandpalmandfingertips
首先,为验证提出的深度图像结合决策树的改进静态手势控制指令识别算法,针对13种常用静态手势进行识别,在复杂光线及复杂背景环境下,让10个用户对每个手势各做20次试验,每种手势共200次.试验结果如表2所示.由表2可以看出,手势P1到P5、 P8及End的识别率均为100%,而对于手势P6、 P7、 P9、 Start、 Stop以及OK,根据用户的手势表达时姿势的差异,导致了指尖夹角过大或过小,以及k曲率算法出现了手指误检测的情况,造成了测试过程中的识别错误.但从整体上来看,平均识别率达到了98.4%,表明本文提出的手势控制指令识别方法具有有效性.
表2 静态手势控制指令识别结果
其次,为验证本文算法的有效性,将其与其他识别算法进行了比较,识别准确率的对比结果如表3所示.从表3中可以看出,对比其他手势控制指令识别算法,本文算法总体都具有更高的识别率.本文的试验结果整体上较接近文献[12]和[18]的试验结果.相比于文献[12],本文提出的算法解决了利用动态时间规整无法匹配旋转缩放后手势,以及个别手势如手势OK识别率较低的问题.文献[18]同样使用了决策树的方法对手势进行识别,但是在手势区域提取上,本文采用最小深度法而文献[18]采用灰度直方图的分割方法,并且本文的方法在试验上定义了更多的手势控制指令.从试验结果上来看,最小深度点法在手势分割上具有更好的效果,识别率也更高.
表3 静态手势控制指令识别的准确率对比结果
(续 表)
最后,为验证控制系统的可靠性,对翻书机器人控制系统动态和静态手势控制指令组合实现翻页功能的识别率进行了验证,结果如表4所示.试验中,每个控制指令测试了100次,其中静态手势中,1~9为翻页手势,0和OK为起止手势.结果表明整个控制系统稳定有效,具有可靠性和实用价值.
表4 翻书机器人控制系统识别率
本文以助老助残为目标,面向翻书机器人设计了一套基于手势的人机交互控制算法.通过Kinect获取人体骨骼关节点信息以及手势部分的深度图像,同时对动态和静态手势进行识别.通过采用决策树的方法对静态手势进行识别,保证了手势的缩放和旋转不变性,同时也能做到手势的快速识别.试验结果证明,本文提出的翻书机器人控制系统具有实用性和稳定性,为多模态的人机交互提供快速有效的信息.今后将继续对面向翻书机器人的面部表情识别的控制方法进行深入的研究.
[1] Book Time shrugs off e-readers, turns paper pages for you [EB/OL]. http://www.engadget.com/2009/04/13/book-time-shrugs-off-e-readers-turns-paper-pages-for-you, 2004-09-13.
[2] 科博会亮出“智慧北京”机器人玩伴[EB/OL]. http://www.jx.xinhuanet.com/news/2011-05/19/content_22808385.htm, 2011-05-19.
[3] 情報生産システム研究科·鎌田研、New「二宮くん」を開発[EB/OL]. http://www.yomiuri.co.jp/adv/wol/news/news_110714.html, 2011-07-14.
[4] 上海交通大学.自动翻页机:CN200410017692.7[P].2004-04-15.
[5] 冶建科,赵群飞,周毅,等.一种自动翻页扫描机器人的研制[J].机器人技术与应用,2009(1):27-30.
[6] 唐矫燕,赵群飞,杨汝清,等.读书机器人机构设计[J].上海交通大学学报,2005,39(12):2025-2028.
[7] 邓杰,房宁,赵群飞.读书机器人变声系统的研制[J].微型电脑应用,2012,28(4):50-52.
[8] 冯志全,蒋彦.手势识别研究综述[J].济南大学学报(自然科学版),2013,27(4):336-341.
[9] 蒲兴成,王涛,张毅.基于改进Hu矩算法的Kinect手势控制指令识别[J].计算机工程,2016,42(7):166-172.
[10] 操小文,薄华.基于卷积神经网络的手势识别研究[J].微型机与应用,2016,35(9):55-57,61.
[11] ZHANG S L, ZHANG B. Using HMM to sign language vedio retrieval[C]//Processings of the 2nd Internation Conference on Computational Intelligence and Natural Computing.2010: 55-59.
[12] PLOUFFE G, CRETU A M. Static and dynamic hand gesture recognition in depth data using dynamic time warping[J]. Instrumentation and Measurement, 2016, 65(2): 305-316.
[13] 杨波,宋晓娜,冯志全,等.复杂背景下基于空间分布特征的手势识别算法[J].计算机辅助设计与图形学学报,2010,22(10):1841-1848.
[14] VANCO M, MINARIK I, ROZINAJ G. Evaluation of static hand gesture algorithms[C]//Proceedings of 2014 International Conference on Signals and Image Processing. Dubrovnik: IEEE, 2014: 83-86.
[15] LI Y. Multi-scenario gesture recognition using Kinect[C]//Proceedings of the 17th International Conference on Computer Games. Louisville, KY: IEEE, 2012: 126-130.
[16] REN Z, YUAN J, ZHANG Z. Robust hand gesture recognition based on finger-earth mover’s distance with a commodity depth camera[C]//Proceedings of the 19th ACM international conference on Multimedia. Arizona, USA: ACM, 2011: 1093-1096.
[17] REN Z, MENG J, YUAN J. Depth camera based hand gesture recognition and its applications in human-computer-interaction[C]//Proceedings of the 8th International Conference on Communications and Signal Processing. IEEE, 2011: 1-5.
[18] 曹雏清,李瑞峰,赵立军.基于深度图像技术的手势识别方法[J].计算机工程,2012,38(8):16-18.