张倩,郑明辉
(江苏科技大学电子与信息学院,江苏镇江212003)
手势是日常生活中一种直观形象、简单丰富的交流方式[1]。嵌入式手势识别技术让我们不再需要去理会繁琐复杂的按键和按钮,让设备使用起来更简单灵活,在机器人、智能家居及日常生活和娱乐等领域的作用日益卓越。
1991年,TAKAHASHI[2]开始研究手势符号,实现对46个手势符号的识别。美国研究人员Starner[3]等人在对手势的研究中完成了对40个词汇随机组成的句子进行比较精确的识别。Yi Li[4]依据轮廓和凸凹点检测确定5个手指位置并通过计算三点的夹角特征识别静态手势。哈尔滨工业大学的吴江琴[5]等人在中国手语研究中,将人工神经网络与HMM两种方法相互结合,增强识别方法的分类特性,最终实现了对孤立词和简单语句的较准确识别。上海海事大学的研究人员,利用几何特征及距离特征等对手势图像进行特征提取[6],经过多次实验研究,最终实现较稳定的静态手势识别。
本文采用HMM算法进行手势识别并创新地将识别结果应用到可改造的工作台上。
本文应用了Kinect这一设备,Kinect是微软公司2010年推出的一款XBOX360体感外部设备[7]。Kinect主要包括红外投影机、RGB摄像头、麦克风阵列、仰角控制马达[8]。用户只需使用语音、手势或者各种动作就能实现与计算机的交互。
Kinect通过红外接收装置记录下每个散斑,根据散斑图案可以推测出物体的实际深度[9]。通过OpenNI可以获得Kinect的RGB图像、红外图像以及深度图像等等。
本课题就是将手势识别技术应用于可移动工作台上,融合多领域的研究,包括手势识别、智能控制等技术。通过Kinect设备采集手势数据,控制工作台的移动,满足人们生产、生活、学习的需要,还可将工作台改造成物流分发小车或特殊人群用小车,可实现多种功能。使得该工作台在现实的基础上有更好的人机交互性、自主性,实时性好,方便快捷。
系统的总体结构设计如图1所示。
图1 设计方案系统框图
该工作台控制系统主要分为3个部分。
1)手势识别模块主要是先将用户的手势分割出来,再进行手势特征提取,将提取到的特征与手势库进行特征匹配,匹配率最高的手势即为手势识别的结果[10]。在这里手势特征提取是手势识别效果好坏的关键因素[11]。
2)ARM9处理器模块主要是将手势识别的结果转换成数字信号,以便能够控制驱动器。
3)驱动模块采用96560A V3型CNC驱动器驱动步进电机以实现工作台的左右转动,采用L298芯片设计出直流电机驱动模块以实现工作台的上下移动。ARM9处理器输出的信号控制驱动器,实现对工作台系统的控制。
手势识别算法有很多,常见的几种算法如下:
动态时间规整(DTW):用时间规整函数描述输入手势和模板的时间对应关系,求解模板匹配时累计距离最小所对应的规整函数。该算法在时间规整过程引入误差,识别精度不高。
神经网络模型:在某种学习准则下循环进行学习,使得犯错的概率达到最低。该算法容错能力强,受噪声干扰不大。但是该方法训练强度大。
隐性马尔科夫模型(HMM):每一种手势对应一个HMM模型,识别时取概率最大的一个模型。该算法识别精度比较高,修改手势库简单方便。本文选用HMM算法。
隐马尔可夫模型是关于时序的概率模型。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列;每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列[12]。其中,状态序列是隐藏不可见的,观测序列是可见的[13]。由观测序列可以推测出状态序列。
一个隐马尔可夫模型可以用μ=(S,K,A,B,π)来表示,其中S为状态的有限集合,K为观察值的有限集合,A为状态转移概率,B为输出概率,π为初始状态的概率分布。也可将其简记为μ=(A,B,π)。
HMM可以用来解决3个基本问题:
1)估计问题:给定一个观察序列O=O1,O2…OT和模型μ=(A,B,π),计算出该模型下观察序列O出现的概率P(O|μ)。前向后向算法可以解决这个问题;
2)序列问题:给定一个观察序列O=O1,O2…OT和模型μ=(A,B,π),寻找最可能的状态序列Q=q1,q2…qT。维特比(Viterbi)算法可以解决这个问题;
3)训练问题或参数估计问题:给定一个观察序列O=O1,O2…OT,调整模型μ=(A,B,π)参数,使得P(O|μ)最大。Baum-Welch算法或类似的最大期望值算法可以解决这个问题。
本文重点研究训练问题即给定一个观察序列,调节模型的参数使得P(O|μ)最大化:argmaxP(Otraining|μ)。模型的参数是指构成μ的πi,aij,bj(k)。选择最大似然估计法进行参数估计。如果产生观察序列O的状态序列Q=q1q2…qT已知,根据最大似然估计,HMM的参数可以通过以下公式计算:
其中,δ(x,y)为克罗奈克函数,当x=y时,δ(x,y)=1;否则,δ(x,y)=0。vk是HMM输出符号集中的第k个符号。
但实际上,由于HMM中的状态序列Q是观察不到的(隐变量),因此,这种最大似然估计的方法不行。不过,期望最大化(EM)算法可以得到参数最大似然估计。首先,给模型的参数赋值,得到模型μ0。然后,由μ0计算出模型中隐变量的期望值。最后,重新估计模型的参数。不断重复这个过程,直到参数收敛。
Baum-Welch算法用于具体实现这种EM方法。给定参数μ和观察序列O=O1O2…OT,在时间t位于状态si,那么,时间t+1位于状态sj的概率εt(i,j)=P(qt=si,qt+1=sj|O,μ)(1≤t≤T,1≤i,j≤N) 可 由下面的公式计算获得:
给定μ和观察序列O=O1O2…OT,在时间t位于状态si的概率,由此,μ的参数可以由下面的公式重新估计:
重复执行EM计算,直到πi,aij,bj(k)收敛。
动态手势轨迹可以看做一个点轨迹,取手势的中心为这个观察点,并对其进行特征提取。一个点的运动可由该点的初始位置、运动方向、运动的距离确定[14]。即可以用轨迹的方向矢量来简单的表示运动轨迹。如图2所示,将运动轨迹的方向夹角量化成8等份[15]并将方向矢量作为隐马尔可夫模型的观察值。轨迹特征值可由离散的运动方向值来表示,在一定时间段内,选取手势图像中两个相邻的点p1,p2,计算的方向角θ,根据对角度θ所属方向的划分,得到运动方向的离散值。
图2 角度的划分和运动轨迹的角度
动态手势识别可分为两部分:1)手势识别预处理;2)手势运动轨迹提取[16]。本文先用OpenNI的预备手势检测到人手,再通过记录手部重心的位置来跟踪运动的手势,进而实现对动态手势的识别。在运动方向上对轨迹点序列进行方向特性量化后得到离散方向特征序列,利用离散HMM模型来对离散方向特征序列进行评估。随后进行模糊化预处理、模糊推理与判决,最终得到手势的含义。
输入的手势图像经嵌入式处理器处理识别后,经过无线传输模块传输给工作台控制端控制板,输出信号驱动步进电机和直线电机工作,最终实现工作台的上下移动和水平方向正反向转动。
图3 工作台的机械模型
工作台的模型如图3所示。该模型是一种可以在水平方向旋转和在竖直方向上下移动的传动机构。根据实际需求,整个装置在水平方向的旋转和竖直方向的移动既能同时进行,又能分开进行。
如图4所示:通过3个GB M10*55的螺栓和M5的螺母将步进电机固定在底板上,同时通过两个GB M10*55的螺栓和螺母将轴承和底板固定在一起。2是带动3小圆柱正齿轮(下面简称为小齿轮)的步进电机,小齿轮的规格是齿数z=30,大径d=48,齿厚b=15,台阶厚度h=10。4为直径d=28长度h=180的光轴。5为与小齿轮啮合的大圆柱正齿轮(以下简称大齿轮),它的规格为齿数z=46,大径d=74,齿厚b=15。6为与光轴相连的直流线圈电机外壳。7为直流线圈电机。8为平台。9是GB M10*55的螺栓,10是GB M10*55的螺栓。11是GB M3*22的紧钉螺钉,12是GB M3*8的紧钉螺钉。13是GB M6*35的螺栓。14是GB M6*30的螺栓。16是在光轴上用转头转的一个直径d1=18深h=18的孔槽。18是一个长l=6,宽b=6,高h=15的键槽。最终工作台的实物如图5所示。
图4 结构示意图
图5 手势识别工作台
本实验采用 Kinect for Windows 1.6,Kinect 1.0,OpenNI。所需的硬件要求:PC一台,32位的处理器,OS为win7,以及ARM9处理器和自行设计的工作台一台。在Microsoft Visual Studio 2010的编译环境下,本文采用C++编程实现识别功能。
定义向左、向右、向上、向下这几个手势分别控制工作台的左移、右移、上移和下移。
邀请10个人来采集他们的动态手势轨迹,每人每种手势重复10次,那么可以得到相同手势的轨迹样本数为100。测试的时候每种手势测试50次,识别结果如表1所示,可以看出这4种动态手势识别率还是很高的。
表1 实验数据统计
还在不同环境下进行了测试。分别在白天和晚上每种手势测试50次,识别结果如表2所示。
表2 实验数据统计
从表2可以看出本文的手势识别方法在不同亮度的环境下识别结果几乎没什么太大的差别,实验证明该方法具有较好的鲁棒性。
本文结合运动检测、跟踪与识别,设计了一种Kinect工作台控制系统,完成了对手势的检测与识别,实现了对工作台的控制。通过实验证明,该控制系统能灵活的控制工作台的运动,同时可以满足实时性的要求,实用性强。当然还有许多不足之处,以后争取在此基础上进行改进以达到更好的实验效果。
参考文献:
[1]翁汉良,战荫伟.基于视觉的多特征手势识别[J].计算机工程与科学,2012(2):123-127.
[2]Takahashi T,Shino F K.Hand gesture coding based on experiments using a hand gesture interface deviee[J].SIGCHI Bul-letin,1991,23(2):67-73.
[3]Starner T,Pentland A.Real-time American Sign Language recognition from video using hidden Markov models[C]//Motion-Based Recognition.Springer Netherlands,1997:227-243.
[4]Li Y.Hand gesture recognition using Kinect[C]//Software Engineering and Service Science(ICSESS),2012 IEEE 3rd International Conference on.IEEE,2012:196-199.
[5]吴江琴,高文,宋益波.HMM方法在手语识别中的应用[J].计算机工程与科学,1999(3):42-46.
[6]何阳清.基于几何特征的手势识别算法研究[D].上海:上海海事大学信息工程学院,2004.
[7]钱鹤庆.应用Kinect与手势识别的增强现实教育辅助系统[D].上海:上海交通大学,2011.
[8]余涛.Kinect用开发实践[M].北京:机械工业出版社,2013.
[9]陈燕军,汪地,杨浩,等.基于Kinect的手术辅助系统研究[J].计算机技术与发展,2014,24(9):81-83.
[10]冯志全,蒋彦.手势识别研究综述[J].济南大学学报:自然科学,2013,27(4):336-341.
[11]王松林.基于Kinect的手势识别与机器人控制技术研究[D].北京:北京交通大学,2014.
[12]张毅,张烁,罗元,等.基于Kinect深度图像信息的手势轨迹识别及应用[J].计算机应用研究,2012(9):3547-3550.
[13]李航.统计学习方法[M].北京:清华大学出版社,2012.
[14]江超,艾矫燕.基于OpenCV的摄像头动态手势轨迹识别及其应用[J].计算机应用,2012(S1):128-133.
[15]郭晓利,杨婷婷,张雅超.基于Kinect深度信息的动态手势识别[J].东北电力大学学报,2016(2):90-94.
[16]陶丽君,李翠华,张希婧,等.基于Kinect传感器深度信息的动态手势识别[J].厦门大学学报:自然科学版,2013,52(4):493-497.