法律状态公告日
法律状态信息
法律状态
2018-08-14
授权
授权
2017-03-22
著录事项变更 IPC(主分类):G06K9/00 变更前: 变更后: 申请日:20150925
著录事项变更
2016-03-09
实质审查的生效 IPC(主分类):G06K9/00 申请日:20150925
实质审查的生效
2016-02-10
公开
公开
技术领域
本发明涉及一种手势识别技术,特别涉及一种基于Kinect的交通警察手势识别方法,属于虚拟仿真技术领域。
背景技术
目前针对交警指挥手势的识别技术的研究更多的还是停留在传统的图像识别方法阶段,根据手势采集方式的不同可以将其划分成两种,第一种便是通过在交警身上佩戴数据衣或者数据手套等动作捕捉设备来获取手势数据的方式。由于动作捕捉设备能获得精度很高的数据,因此采用这种方式的识别效果很好。然而,这类仪器往往价格也很昂贵,加上这种方式需要在使用者的身上佩戴一定数量的传感器,从而造成使用者的舒适性降低,甚至会影响动作完成的质量。第二种便是通过摄像头等机器视觉设备来获取交警指挥手势数据的方式,然后经过图像分割、特征提取、特征识别等操作完成手势动作的识别。这种方式可以大大减少对交通警察指挥手势的限制,自然性和便携性比更好,但是该方法也有其缺点,例如:手势数据量大,处理方法复杂,并且识别效率、准确率不够高。
发明内容
本发明的目的在于克服现有技术的上述缺陷,提供一种基于Kinect的高效交警手势识别方法。
本发明的目的是通过以下技术方案实现的:
一种基于Kinect的交警手势识别方法,包括以下步骤:
步骤一、使用Kinect采集数据并对数据进行预处理得到交警手势数据;
作为优选,所述预处理包括交警手势分割和数据归一化,具体如下:
(1)交警手势分割具体包括以下步骤:
步骤1:获取人体立正时两手的距离Dstandard,并设置距离阈值Dlimit以及用于标记手势开始结束状态的变量flag;
步骤2:循环处理送达的数据帧,计算每帧两手的距离di,如果di≥Dstandard+Dlimit,则flag设置为true并把该数据帧存入链表LinkedList中;如果di<Dstandard+Dlimit,则把flag设置为false,由此获得交警手势动作数据LinkedList;
(2)数据归一化是通过对交警手势动作数据采用下式对该动作的数据序列元素在x、y和z方向进行归一化处理:
>
其中,x*,y*,z*为骨骼节点在数据归一化后的坐标值;xmin,xmax分别为该动作中,x坐标的最大和最小值;ymin,ymax分别为该动作中,y坐标的最大和最小值;zmin,zmax分别为该动作中,z坐标的最大和最小值;
步骤二、对手势数据进行特征提取,得到各骨骼节点的运动轨迹T;
作为优选,所述骨骼节点的运动轨迹T采用下式表述:
>
其中,θi表示骨骼节点i的运动轨迹;t表示该动作的数据帧序号;
其中,
步骤三、根据各骨骼节点的运动轨迹通过下式计算该手势中每个骨骼节点的权重w:
>
其中,N表示骨骼节点的个数,
>
其中,T表示手势g的总帧数,
步骤四、提取预存的各标准手势中每个骨骼节点对应的运动轨迹S;
步骤五、通过下式采用基于DTW的轨迹比较算法分别计算待识别手势中骨骼节点的运动轨迹T=t1,t2,…,ti,…,tm与标准手势中对应骨骼节点的运动轨迹S=s1,s2,…,sj,…sn之间的相似度DTW,表示如下:
其中,
步骤六、根据步骤五得到的DTW值与步骤三得到的待识别手势中各关节点权重w通过下式计算待识别手势与各标准手势的近似度δ:
>
其中,N表示骨骼节点的数目,
步骤七、将对应于所有标准手势的δ进行比较,选出最小δ对应的标准手势作为最终的识别结果。
作为优选,所述Kinect采集数据的对象仅包括左手、左肘、右手、右肘4个骨骼节点。
作为优选,在进行步骤五所述DTW值之前,先通过下述加权偏转抽样方法缩小手势比较范围:
(1)根据下式计算待识别手势与各标准手势的加权偏移量aw(g),并用Taw(g)和Saw(g)分别表示待识别、标准手势的加权偏移量:
>
(2)将各标准手势的加权偏移量按从小到大的顺序进行排列,然后根据待识别手势的加权偏移量与各标准手势的加权偏移量的大小关系根据以下原则确定手势比较的范围:
√当待测手势的加权偏移量介于两个标准手势的加权偏移量之间时,即Saw(k-1)<Taw(g)<Saw(k)且2≤k≤K,则待识别手势只需要和第k-1个和第k个标准手势进行比较;其中K表示标准手势的数量;
√当待识别手势的加权偏移量和标准手势的加权偏移量相等时,即Taw(g)=Saw(k),则待识别手势只需要和第(k-1)、(k)、(k+1)三个标准手势进行比较;
√当待识别手势的加权偏移量大于最大的标准手势的加权偏移量时,即Saw(k)<Taw(g)且k=K,如果Taw(g)-Saw(k)≤Saw(k)-Saw(k-1),则待识别手势只需要和第k-1个和第k个标准手势进行比较;否则直接认定待识别手势为非法手势,不做进一步识别;
√当待识别手势的加权偏移量小于最小的标准手势的加权偏移量时,即Taw(g)<Saw(k)且k=1,如果Saw(k)-Taw(g)≤Saw(k+1)-Saw(k),则待识别手势只需要和第k个和第k+1个标准手势进行比较;否则直接认定待识别手势为非法手势,不做进一步识别。
本发明的原理如下:
整个方法流程分为数据预处理、测试轨迹生成、轨迹对比和手势识别四部分。
一、数据预处理
数据预处理包括基于距离截取的手势分割和数据归一化:
手势分割
通过对交警手势动作要领的分析可以发现所有的动作都存在一个共同的特点,即立正姿势是动作完成的信号,左手或者右手的运动是手势动作开始的信号。基于这样的一个特点,本发明通过测量左手与右手之间距离的变化情况来判断是否存在手势动作,以此作为手势分割的依据。图2是停止手势和左转弯待转手势在完成的过程中所采集到的左右手之间距离的变化曲线。
在图2所示的变化曲线中,振幅最小也是曲线最为平缓的地方出现在整个曲线的A、B、C三个位置,此时正好是人体的立正姿势,而在AB和BC之间是整个波形剧烈变动的地方,这时是动作幅度从最小上升到最大,再从最大恢复到最小的一个过程,也就是说,只有在出现类似波动情况的区域才是手势动作出现的地方。因此本发明提出了基于距离波动的分割法,通过该分割法可以将一个手势的序列帧从一系列连续的数据帧中剥离出来,从而进行手势的识别;具体步骤如下:
1)获取人体立正时两手间的距离Dstandard,并设定距离的阈值为Dlimit,以及用于标记手势开始结束的状态变量Flag。
2)循环处理送达的数据帧,计算每帧两手的距离di,如果di≥Dstandard+Dlimit,则把Flag的值设置为TRUE,并把该数据帧存入链表LinkedList空间中;如果di<Dstandard+Dlimit,则把Flag的值设置为FALSE。
数据归一化
经过对交警8种(停止、直行、左转弯、左转弯待转、右转弯、变道、减速慢行、靠边停车)指挥手势的分析总结,可以看出,所有的手势只涉及上半身骨骼节点,且下半身节点的位置变化对手势识别意义不大,考虑到系统计算量、识别效率等问题,本发明选取4个(左手LH、左肘LE、右手RH、右肘RE)骨骼节点作为数据采集的对象。
在进行特征提取前,需要把采集到的数据都映射到一个统一的范围,即数据归一化,以便消除因个人差异或者位置等因素带来的干扰。
交警指挥手势无论是动作的含义还是轨迹,都是相互分离、相互独立,彼此之间没有关联的个体,基于该特点,可在识别阶段以交警指挥手势动作作为识别对象。就一个具体的手势动作而言,它的所有样本数据中的最大最小值是可以确定的,因此可以采用min-max标准化的方法进行数据归一化操作,如公式1所示。
>
其中,x*,y*,z*为骨骼节点在数据归一化后的坐标值;xmin,xmax分别为该动作中,x坐标的最大和最小值;ymin,ymax分别为该动作中,y坐标的最大和最小值;zmin,zmax分别为该动作中,z坐标的最大和最小值。
二、测试轨迹生成
特征提取
交警手势都是一些较为规范的手势动作,并且严格规定了动作的幅度,因此本发明使用角度的余弦作为交警手势识别的特征。
三维空间中的角度需要由两个向量来确定,本发明中选用的向量一个是骨骼关节点到中肩节点的向量,另一个是竖直向下的单位向量,这两个向量的夹角余弦如公式2所示。
其中,
测试轨迹
由于交警指挥手势动作是一个动态的过程,因此骨骼节点在被捕获的每一帧中都会产生一个角度余弦,由此可以认为该节点全部角度余弦所形成的轨迹就是该节点的运动轨迹,定义公式3如下。
>
其中,θi表示节点i的运动轨迹;t表示该动作的数据帧序号。
三、轨迹对比
骨骼节点权值
在不同的手势中,每个骨骼节点的运动状态、运动幅度不同,例如,在停止手势中,只有LH、LE这2个骨骼节点在运动,而其他2个骨骼节点始终处于相对静止状态;而在减速慢行手势中只有RH、RE这2个骨骼节点在运动,剩下的2个骨骼节点始终处于相对静止状态;但在右转弯手势中,4个骨骼节点都在运动。由此可见,不同手势不同节点的运动情况是不一样的,每个骨骼节点对于手势轨迹的贡献度也是不同。因此,根据下面公式可以算出每个骨骼节点对于手势轨迹的贡献度,即骨骼节点权值。
>
其中,N表示骨骼节点的个数,
>
其中,T表示手势g的总帧数,
标准轨迹
本发明采集8种标准交警手势的运动轨迹Si(1≤i≤8)作为待测手势识别的基准,该轨迹取公式(3)定义的轨迹格式。
确定轨迹比较范围
1)待测、标准手势各个骨骼节点的偏移量
待测、标准手势的运动轨迹分别为Tg、Sg(1≤g≤8),其中>
>
2)加权偏转抽样算法
通过对手势动作的分析发现,有的手势之间存在较大的差异,例如:停止手势和左转弯手势,而它们之间的比较可以认为是无用、浪费资源、影响识别效率的做法。因此,本发明提出了加权偏转抽样的算法来进一步缩小手势比较的范围。依据下面公式可以计算出待测、标准8种手势的加权偏移量,用aw(g)表示,Taw(g)和Saw(g)分别表示待测、标准手势的加权偏移量。
>
其中,aw(g)表示手势g中N个骨骼节点的偏转角余弦值之和;
将标准手势的加权偏移量按从小到大的顺序进行排列,然后根据待识别手势的加权偏移量与标准手势的加权偏移量的大小关系来确定手势比较的范围。其大小关系主要分为以下几类:
√当待测手势的加权偏移量介于两个标准手势的加权偏移量之间时,即Saw(k-1)<Taw(g)<Saw(k)且2≤k≤K,则待识别手势只需要和第k-1个和第k个标准手势进行比较;其中K表示标准手势的数量;
√当待识别手势的加权偏移量和标准手势的加权偏移量相等时,即Taw(g)=Saw(k),则待识别手势只需要和第(k-1)、(k)、(k+1)三个标准手势进行比较;
√当待识别手势的加权偏移量大于最大的标准手势的加权偏移量时,即Saw(k)<Taw(g)且k=K,如果Taw(g)-Saw(k)≤Saw(k)-Saw(k-1),则待识别手势只需要和第k-1个和第k个标准手势进行比较;否则直接认定待识别手势为非法手势,不做进一步识别;
√当待识别手势的加权偏移量小于最小的标准手势的加权偏移量时,即Taw(g)<Saw(k)且k=1,如果Saw(k)-Taw(g)≤Saw(k+1)-Saw(k),则待识别手势只需要和第k个和第k+1个标准手势进行比较;否则直接认定待识别手势为非法手势,不做进一步识别。
基于DTW的轨迹比较
本发明是以骨骼节点的运动轨迹作为特征,因此在识别中的最小单位就是某个骨骼节点的运动轨迹。基于这样的前提,做如下假设。
假设待测手势W,其中左手(LH)的骨骼关节点的运动轨迹为T,由m维的向量构成,即T=t1,t2,…,tm,其中每个分量是LH骨骼节点到中肩节点的向量与竖直向下的单位向量之间的夹角余弦,m是该动作的帧数。另外,标准手势W,其LH的骨骼节点的运动轨迹为S,由n维的向量构成,即S=s1,s2,…,sn,其中每个分量是LH骨骼节点到中肩节点的向量与竖直向下的单位向量之间的夹角余弦,n是该动作的帧数。由于两者的分量性质相同,因此,可以采用距离来衡量两者之间的相似度。动态时间规整(DTW)[1]利用动态规划算法寻找两条序列的最优匹配,即从待测(T)和标准(S)的骨骼节点轨迹序列中找到一个最优匹配方案,使得对应元素的距离之和最小。
用T=t1,t2,…,tm表示待测的骨骼节点轨迹,用S=s1,s2,…,sn表示标准的骨骼节点轨迹,则两个轨迹之间的相似度可以通过下面的式子计算:
其中,
四、手势识别
根据步骤三得到的骨骼节点权值、轨迹比较的范围以及基于DTW的轨迹比较算法,从而可以通过下面式子计算出待测手势与标准手势之间的相似度δ:
>
其中,N表示骨骼节点的数目,
最后,将值最小的δ所对应的手势即作为最终的识别结果。
有益效果
在本发明中,首先针对Kinect在数据采集方面的局限提出了基于距离截取和min-max归一化的预处理方案。通过对交警指挥手势的分析,在手势分割上提出了距离波动分割的算法,做到了对手势序列的准确抽取;另外在手势特征提取上,提出了夹角余弦的方法,即骨骼节点到中肩节点的向量与竖直向下的向量的夹角余弦,从而解决了人体身高差异所造成的误差的问题。在手势识别上,采用了改进的DTW算法,并根据交警指挥手势的特点,提出了偏转加权的方法,从而客观的评价了骨骼节点对指挥手势的贡献度;另外,提出了偏转抽样过滤的方法,有效的缩小手势比较的范围。
综上所述,对比现有技术,本发明方法硬件资源投入少、数据量低、处理简单,具有成本低、准确率高、运算速度快等优点。
附图说明
图1为本发明方法基于Kinect的交警手势识别的流程示意图。
图2为停止和左转弯待转手势的两手间距离的变化曲线示意图。
图3为待测手势各骨骼节点的运动轨迹示意图。
具体实施方式
下面将结合附图和实施例对本发明加以详细说明,同时也叙述了本发明技术方案解决的技术问题及有益效果,需要指出的是,所描述的实施例仅旨在便于对本发明的理解,而对其不起任何限定作用。
本实施例实施的条件:
Kinect设备一台,并设定其彩色图像的分别率为640*480,深度图像的分辨率为320*240;
待识别人正对Kinect,距离Kinect2米到3米之间。
下面以8个交警手势样本,每个手势样本仅涉及4个关节点为例对本实施例进行详细说明。
下面以身高为174cm的测试者的停止手势为例介绍具体实施步骤如下:
步骤一、基于Kinect采集数据并对数据进行预处理得到待识别交警手势数据;
首先,通过kinect获取测试者立正姿势下两手间的距离Dstandard=0.4m,Dlimit=0.08m。根据8种手势的分析,左转弯待转与身体的角度最小(15°),因此Dlimit的计算方式如下:
然后,循环处理送达的数据帧,计算每帧两手的距离di,如果di≥Dstandard+Dlimit,则把Flag的值设置为TRUE,并把该数据帧存入链表LinkedList空间中;如果di<Dstandard+Dlimit,则把Flag的值设置为FALSE。
最后,根据LinkedList中的数据,分别求出得出X、Y、Z的最大值和最小值,然后利用下面的公式对分割后的数据进行归一化处理:
>
其中,x*,y*,z*为骨骼关节点在数据归一化后的坐标值;xmin,xmax分别为该动作中,x坐标的最大和最小值;ymin,ymax分别为该动作中,y坐标的最大和最小值;zmin,zmax分别为该动作中,z坐标的最大和最小值;
步骤二、对手势数据通过下式进行特征提取,将各帧数据连起来即可得到各骨骼节点的运动轨迹T,如图3所示;
其中,
步骤三、通过下式计算交警手势中每个关节点的权重w:
>
其中,N表示骨骼节点的个数,
>
其中,T表示手势g的总帧数,
本例中,待测手势各个骨骼节点的权值如表所示:
步骤四、提取预存的标准手势中各骨骼关节点对应的运动轨迹S;
对于标准手势中各骨骼关节点对应的运动轨迹S的获取同待测手势,即同样通过步骤一、二所述过程获取;
步骤五、通过下式分别计算待识别手势中骨骼节点的运动轨迹T=t1,t2,…,ti,…,tm与标准手势中对应骨骼节点的运动轨迹S=s1,s2,…,sj,…sn之间的DTW值;
其中,
在手势识别领域,常用的算法有隐马尔科夫模型(HMM)、动态时间规整(DTW),文献(JosepMariaCamona,JoanCliment.AperformanceEvaluationofHMMandDTWforGestureRecognition[J].ProgressinPatternRecognition,ImageAnalysis,ComputerVision,andApplicationsLectureNotesinComputerScience,2012,7441:236-243.)专门对这两种算法的识别效果进行了评估,指出了DTW相对于HMM的优点,并建议使用DTW代替HMM。因此,本文采用动态时间规整(DonaldJBerndt,JamesClifford.Usingdynamictimewarpingtofindpatternsintimeseries[C]//KDDworkshop,1994,10(16):359-370.)的方法来计算出T与S之间最优的匹配序列
根据本步骤需要计算待识别手势与所有标准手势对应骨骼节点的相似度,以8种标准手势为例,需要计算8*4=32个骨骼节点的相似度,计算量比较大,因此可以通过比较待识别手势与所有标准手势的加权偏移量来缩小手势的比较范围,具体如下:
通过下式计算待识别手势与所有标准手势的加权偏移量,用aw(g)表示;用Taw(g)和Saw(g)分别表示待识别手势、标准手势的加权偏移量。
>
其中,aw(g)表示手势g中N个骨骼节点的偏转角余弦值之和;
通过计算,待测手势的加权偏移量aw(g)=12000.38,而8种标准手势的加权偏移量如下表所示:
根据加权偏转抽样方法所述原则,由于待识别手势的aw(g)值12000.38介于[11876.43,21454.12]之间,所以待识别手势只需和标准的停止手势、左转弯待转手势进行相似度比较即可。
通过本步骤计算得到的待识别手势与标准停止手势、标准左转弯待转手势骨骼节点的相似度如下:
步骤六、根据步骤五得到的DTW值与步骤四得到的各标准手势中对应的关节点权重w通过下式计算待识别手势与各标准手势的近似度δ:
>
其中,N表示骨骼节点的数目,表示骨骼节点i在待识别手势g中的权重;δi表示骨骼节点i与标准手势的相似度,该值通过步骤五获得;
通过本步骤计算得到的待识别手势与两个标准手势之间的相似度如下表所示:
步骤七、将对应于各标准手势的δ进行比较,选出最小δ对应的标准手势作为最终的识别结果,即停止手势。
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 基于Kinect的运动游戏姿势识别方法及系统
机译: 基于手势定向的手势识别设备手势识别方法
机译: 基于清晰度值的手势识别系统和手势识别方法