一种基于递归模型的手势识别方法与流程

文档序号:12670664阅读:246来源:国知局
一种基于递归模型的手势识别方法与流程

本发明属于手势识别技术领域,涉及一种手势识别方法,具体涉及一种基于递归模型的手势识别方法。



背景技术:

近年来,基于手势识别的人机交互以其自然、简洁、丰富和直接的方式受到青睐,尤其是基于视觉的手势控制以其灵活性、丰富的语义特征和较强的环境描述能力得到广泛应用。

现有的手势识别技术,常用手势空间序列进行匹配识别,但其普遍存在的问题是实用性和鲁棒性并不高,制约着手势识别技术的应用。比如神经网络方法需要大量手势训练数据,隐马尔科夫(HMM)方法需要用户佩戴额外设备,DTW方法无法解决手势空间序列不等长的问题。



技术实现要素:

针对上述现有技术中存在的问题,本发明的目的在于,提供一种基于递归模型的手势识别方法,通过将手势空间序列转化为递归模型的形式,有效的解决了获取的手势空间序列长度不同和序列点数据值存在不可比所等引起的问题,从而提高手势识别算法的鲁棒性。

为了实现上述任务,本发明采用以下技术方案:

一种基于递归模型的手势识别方法,包括以下步骤:

步骤1,手势分割

对于静态手势:

获取静态手势图像并进行预处理,得到带有指尖点的手掌区域;

对于动态手势:

获取动态手势的深度图像序列,利用基于二维直方图的图像阈值分割法对深度图像序列进行处理,得到分割后的动态手势图像序列;

步骤2,提取手势空间序列

对于静态手势:

步骤2.1,获取手掌的外边缘信息,提取出手势边缘轮廓特征;

步骤2.2,确定手势的中心点,求出手势外边缘手腕位置处距离手势中心点的最远距离坐标,并将该坐标点记为起始点P;

步骤2.3,以P为原点,按照逆时针的方向,计算手势外边缘像素序列中的每一个点到手势中心点的距离,将计算得到的这些距离值构成序列A;

步骤2.4,将序列A进行归一化,归一化后的序列记为静态手势空间序列X={x(i1),x(i2),…,x(in)};

对于动态手势:

步骤2.1',从动态手势图像序列中取出一段作为处理序列,针对处理序列中的手势图像,将手势图像最小的外接矩形的中心点作为手心坐标点,其坐标记为ci(xi,yi);

步骤2.2',以手势图像所在的深度图像的左上角为初始点,计算手心坐标点与初始点间的相对角度并记为x(it);

步骤2.3',将处理序列中各帧的手心坐标按顺序组成一个动态手势轨迹序列C=(c1,c2,…,cn),将处理序列中各帧的手心坐标点相对于初始点的相对角度组成动态手势空间序列:X={x(i1),x(i2),…,x(in)};

步骤3,构建手势递归模型

将静态手势空间序列、动态手势空间序列X按照如下公式计算其递归模型:

R=ri,j=θ(ε-||x(ik)-x(im)||),ik,im=1…n

上式中,n表示动态或静态手势空间序列的维数,x(ik)和x(im)是在ik和im序列位置处观察到的动态或静态手势空间序列X上的值,||·||是指两个观察位置之间的距离,ε是一个阈值,ε<1;θ是一个赫维赛德阶跃函数,θ的定义如下:

步骤4,手势分类

按照下面的公式计算手势递归模型R与模板库中每一类手势的递归模型Ri之间的距离:

上式中,C(R|Ri)是按照MPEG-1压缩算法先压缩图像Ri之后再压缩图像R值的大小,从而求得R图像中去除和Ri图像共有的冗余信息后两者之间的最小近似值;

通过与模板库中每一类手势的递归模型之间进行计算,可得到当前待测手势的手势递归模型与模板库中每一类手势的递归模型之间的不同距离,将这些距离值进行排序,取最小的一个距离值对应的模板库中的手势作为识别出的手势。

进一步地,所述的步骤1中的预处理过程如下:

步骤1.1,获取静态手势图像,利用基于YcbCr空间的自适应肤色分割方法得到含有肤色区域的二值图像;

步骤1.2,通过计算肤色区域的连通域,得到手部区域;

步骤1.3,利用基于手腕厚度的手腕位置定位方法,获取带有指尖点的手掌区域。

进一步地,所述的步骤1中利用Kinect获取动态手势的深度图像序列。

进一步地,所述的步骤2.1中将手势图像的最小外接矩形的中心作为手势的中心点。

本发明与现有技术相比具有以下技术特点:

1.对于静态手势,本算法将带有指尖点的手掌边缘信息作为手势识别算法设计的重点,提高了手势识别的鲁棒性,并解决了手势在旋转、缩放、平移时手势识别实时性不足及对相近手形区分度不高的问题。其次,本算法提出将手掌的边缘序列转换为递归图模型,并使用一种基于信息压缩的递归图相似性检测算法完成手势识别任务,克服了边缘序列数据的不等长问题。

2.对于动态手势,本算法将动态手势轨迹序列作为研究手势分类的重点,提高了动态手势识别对空间和时间尺度的鲁棒性。其次,本算法提出将动态手势轨迹序列转化为基于时间序列的递归图模型,并使用一种基于信息压缩的递归图模型相似性检测算法完成手势识别,克服了不同用户操作同一手势快慢不同和不同手势的持续时间不同导致的手势轨迹序列不等长问题。

附图说明

图1是静态手势分割过程图;其中(a)为分割前的原图,(b)为肤色分割后的图像,(c)为提取出的手部区域的图像,(d)为手掌区域的图像;

图2是动态手势分割过程图;其中(a)为获取的手势深度图像,(b)为深度图像像素灰度分布直方图,(c)为手部区域图像;

图3是静态手势空间序列图;

图4是动态手势序列;

图5是动态手势轨迹序列;

图6是动态手势空间序列图;

图7是手势空间序列的递归模型;

图8为本发明方法的流程图;

具体实施方式

遵从上述技术方案,如图1至图8所示,本发明公开了一种基于递归模型的手势识别方法,包括以下步骤:

本方案提出的方法,适用于对静态手势、动态手势的识别,动态手势、静态手势的处理过程在步骤1、2时不相同,步骤3以后相同,在下面的步骤中,分别给出这两种手势的具体处理过程,需要说明的是,对于动态手势处理、静态手势处理是相对独立的过程,为了进行区分,在动态手势处理的分步骤后添加了上标“'”。

步骤1,手势分割

对于静态手势:

步骤1.1,利用摄像头采集静态手势图像,针对采集到的手势图像,利用基于YcbCr空间的自适应肤色分割方法得到含有肤色区域的二值图像;

步骤1.2,针对步骤1.1得到的二值图像,通过计算肤色区域的连通域,得到手部区域;二值图像的连通域标记和计算属于本领域常规的方法,在此不赘述;

步骤1.3,利用基于手腕厚度的手腕位置定位方法,针对步骤1.2得到的手部区域,获取带有指尖点的手掌区域,最终得到的处理结果如图1所示;这个步骤用到的“基于手腕厚度的手腕位置定位方法”,出自于论文:“Hand Gesture Recognition for Table-Top Interaction System”

对于动态手势:

步骤1.1',采用Kinect获取动态手势的深度图像序列;

步骤1.2',由于在手势交互任务中,用户的手掌始终处于Kinect的摄像头前方,根据这个特点,对步骤1.1'获取的手势深度图像序列,利用基于二维直方图的图像阈值分割法进行处理,得到分割后的动态手势图像序列;

图2给出的示例即为本步骤中针对动态手势深度图像序列中的一帧进行处理后得到的结果。

步骤2,提取手势空间序列

对于静态手势:

步骤2.1,对于步骤1.3得到的图像,使用Sobel算子获取手掌的外边缘信息,提取出手势边缘轮廓特征;这里提出的手势边缘轮廓特征主要是指手势外边缘像素序列,即构成外边缘轮廓的像素组成的序列;

步骤2.2,将手势图像的最小外接矩形的中心作为手势的中心点,求出手势外边缘手腕位置处距离手势中心点的最远距离坐标,并将该坐标点记为起始点P;

步骤2.3,以P为原点,按照逆时针的方向,计算手势外边缘像素序列中的每一个点到手势中心点的距离,将计算得到的这些距离值构成序列A;

步骤2.4,将序列A进行归一化,即把序列中所有的距离值映射到0~1的范围内,归一化后的序列记为静态手势空间序列X={x(i1),x(i2),…,x(in)},其中n表示序列空间的维数,x(in)表示某个距离值;如图3所示。

在图3中,横坐标为静态手势空间序列X中元素在序列X中的位置,纵坐标为序列X中的对应值。

对于动态手势:

步骤2.1',对于步骤1.2'得到的动态手势图像序列,指定序列的开始位置和结束位置,自开始位置到结束位置的序列记为处理序列,针对处理序列中的手势图像,将手势图像最小的外接矩形的中心点作为手心坐标点,其坐标记为ci(xi,yi);这里的序列开始位置和结束位置是由人为指定的,指定的这段序列中包含动态手势完成过程中的信息,后续的处理也是针对于这段序列进行的;

在图4中,为一个动态手势序列中的十帧,每一帧中手势图像外围的矩形就是其最小外接矩形,矩形的中心点记为手心坐标ci(xi,yi)。

步骤2.2',以手势图像所在的深度图像的左上角为初始点,计算手心坐标点与初始点间的相对角度并记为x(it);

步骤2.3',将处理序列中各帧的手心坐标按顺序组成一个动态手势轨迹序列C=(c1,c2,…,cn),如图5所示;将处理序列中各帧的手心坐标点相对于初始点的相对角度组成动态手势空间序列:X={x(i1),x(i2),…,x(in)},n表示序列空间的维数,x(in)表示某个距相对角度;如图6所示。

在本实施例中,图4为动态手势图像序列中,提取出的处理序列,图5为图4对应于步骤2.1'的轨迹序列,其中各点即为处理序列中每帧图像中的手心点;图6为对应于图4的动态手势空间序列,其中横坐标表示动态手势序列的帧号,纵坐标为手心坐标点对于初始点的相对角度。

步骤3,构建手势递归模型

将静态手势空间序列、动态手势空间序列X按照如下公式计算其递归模型:

R=ri,j=θ(ε-||x(ik)-x(im)||),ik,im=1…n

上式中,n表示(动态、静态)手势空间序列的维数,x(ik)和x(im)是在ik和im序列位置处观察到的(动态、静态)手势空间序列X上的值,||·||是指两个观察位置(ik和im序列位置)之间的距离(如:欧几里得距离),ε是一个阈值,ε<1;而θ是一个赫维赛德阶跃函数(Heaviside step function),θ的定义如下:

上式中,z即对应递归模型计算式中的(ε-||x(ik)-x(im)||)。

本步骤利用的是递归图原理,将手势空间序列转化成了递归模型,在计算过程中,如果一个n维手势空间序列i和j序列空间位置处的值非常接近,那么就在递归模型,即矩阵R坐标为(i,j)的地方ri,j标记一个值为1,否则,就在相应的位置标为0。

注:本方案中,对于静态手势、动态手势的步骤1、2处理过程不同,但在步骤2中最终得到的都是手势空间序列,即静态手势空间序列和动态手势空间序列,这两个序列的表达式X是一样的。步骤3之后的处理步骤是相同的,都是针对于手势空间序列进行处理的,为避免步骤上的重复,步骤3之后步骤不再分开写,即如果处理的是动态手势空间序列,步骤3及后续步骤中描述和参数部分涉及手势序列的,均指动态手势空间序列;如果处理的是静态手势空间序列,则描述和参数部分指的是静态手势空间序列。

步骤4,手势分类

按照下面的公式计算手势递归模型R与模板库中每一类手势的递归模型Ri之间的距离:

上式中,C(R|Ri)是按照MPEG-1压缩算法先压缩图像Ri之后再压缩图像R值的大小,从而求得R图像中去除和Ri图像共有的冗余信息后两者之间的最小近似值;其余的C(Ri|R)、C(R|R)和C(Ri|Ri)的含义解释同C(R|Ri),不再赘述。

通过与模板库中每一类手势的递归模型之间进行计算,可得到当前待测手势递归模型R与模板库中每一类手势的递归模型之间的不同距离,将这些距离值进行排序,取最小的一个距离值对应的模板库中的手势,作为待识别的手势进行识别后的手势。

该步骤提到的模板库,是指在进行手势识别之前,先采集各类标准的手势,按照步骤1至3的方法进行处理,得到标准手势的手势递归模型Ri,将这些手势的递归模型存储在一个模板库中;后续进行识别时,将待测手势的手势递归模型与模板库中的各个标准手势的手势递归模型进行对比,二者之间的距离越小,说明二者的相似度越高,就认为待测手势即为与之相似度最高的一个标准手势。模板库中存储有动态手势对应的标准手势的递归模型,也有静态手势对应的标准手势模型;这里的标准手势为在人机交互过程中,机器执行某个动作所需要给出的标准姿势,例如手部通过食指和中指摆出“V”字形姿势表示播放命令,那么就“V”字形姿势的手势对应的手势递归模型作为标准模型存储在手势库中;识别过程中,当待识别手势与该“V”字形姿势的手势递归模型之间的距离最小,则认为当前待识别手势即为“V”字形姿势。

为了验证本方法的有效性,本发明分别对静态手势和动态手势分别进行了实验验证:

对于静态手势,实验使用了帕多瓦大学提供的公共手势数据集,该方法比Marin等提出的基于手指方向和位置特征的多类SVM分类算法准确率高5.72%,比2014年Dominio等提出的基于几何特征的SVM算法准确率高4.2%。同时,实验还表明本文提出的算法对于不同角度放置的手势分类具有较高的鲁棒性。

对于动态手势,实验使用我们获取到的8种动态数据集上进行手势识别,实验结果表明,本发明提出的算法平均识别准确率高达97.48%,并且对于获取的手势轨迹序列长度不同和手势轨迹序列点数据值存在不可比等问题具有较高的鲁棒性。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1