一种基于STDW的连续字符手势轨迹识别方法与流程

文档序号:12747547阅读:662来源:国知局
一种基于STDW的连续字符手势轨迹识别方法与流程

本发明属于计算机视觉和人机交互技术领域,更为具体地讲,涉及一种基于STDW(Structured Dynamic Time Warping,结构化动态时域规整算法)的连续字符手势轨迹识别方法。



背景技术:

人机交互技术实现计算机与人之间的信息输入与输出,人向计算机输入指令,计算机向人输出计算结果。在信息科技快速发展的今天,各种智能设备的出现,正在改变着人们的日常生活。随着新型智能设备的涌现,新型的人机交互方式也在颠覆传统的人机交互模式。

深度摄像机的商业化推进(例如Kinect、Leap Motion),使得手势识别在3D人机交互领域获得了越来越多的关注。

手势识别分为静态手势识别与动态手势识别,静态手势利用手部的不同姿态、形状来进行识别,而动态手势则多用手部的轨迹来进行识别、交互。使用手势轨迹识别的交互方式具有自然、易使用等特点,这种方式无需用户携带其它外设即可进行便利的人机交互,无论是在会议、课堂以及任何需要文字、字符输入的地方都可以使用轨迹识别的方式来进行替代。

轨迹识别的应用还可轻松移植到其它设备上,例如通过对激光笔的轨迹进行分析,可以解析出用户的书写内容从而打印在屏幕上,通过对手机轨迹的识别可以控制其它设备(例如飞行器等),因此轨迹识别具有重要的研究意义。

轨迹识别可分为连续轨迹识别与非连续轨迹识别,传统的轨迹识别方式中多数是使用的非连续轨迹识别,例如手机与平板上的手写识别,都能通过用户的起笔、抬笔等动作而获得开始、结束点,然后再利用此轨迹段进行识别。连续轨迹识别则能够自动的分割出轨迹段,对用户的书写要求更少。对于非连续轨迹识别,他一定程度上降低了人机交互的效率,基于视觉的一些复杂规则使得用户体验下降。对于目前的连续轨迹识别算法,多采用的是基于速率阈值来自动判断轨迹的起止点,基于这种方式的连续轨迹手势识别对于用户的体验也有一定的影响。

现有技术中,2015年06月24日授权公告的、公告号为CN102854982B的中国发明专利公布了“一种识别自定义手势轨迹的方法”。该发明首先对输入轨迹进行优化获得优化后的轨迹,再对其提出相应的特征,包括起止点之间的距离、总的旋转角度和,起止点距离与手势总距离的比值等,然后将这些特征信息与手势库中的预设手势特诊进行直接匹配,从而进行识别,虽然这种方式解析速度较快、实时性较好,但是直接匹配这种方式对手势轨迹的尺度性变化鲁棒性不强,这样就会增加同一类别的模板数量使得存储量增加以及运算速度下降。并且此发明是用于平板、手机的输入轨迹识别,能够根据点击事件获取起止点,因此与连续轨迹识别不相同。

现有技术中,2012年09月12日公布的、公布号为CN102662465A的中国发明专利申请公布了一种“基于动态轨迹的视觉字符输入方法及系统”。该发明首先从字符模板库中选定所要输入字符所述的类,调整视觉字符输入的状态,进入字符输入状态后即开始获取字符输入的动态轨迹,然后对获取的字符的动态轨迹数据进行调整,与所述分类模板库中的字符样式进行匹配,识别所输入的字符,得到识别结果。虽然所提出的方法及系统有很好的实时性,但是此系统需要求用户按照其模板进行书写,而对于常用的字符来说,不同用户的书写习惯是不一样的,强行要求用户按照模板所规定的单一写法会使人机交互体验大打折扣。除此之外,此方法设定了一个时间阈值,在时间段之内用户需要一笔写完相应的字符,使用这种方式来分割出轨迹段也降低了人机交互的便利性,带给用户更多的约束。

现有技术中,2014年01月15日公布的、公布号为CN103513759A的中国发明专利申请公布了一种“手势轨迹识别方法和装置”,该发明使用链码的方式来进行手势轨迹识别,照不同的方向把手势轨迹模板分成16种,然后对每种进行标号,后期使用编号来进行识别。首先它把这16种手势轨迹模板分为三类,并且根据输入手势轨迹包括的关键点的数目来判断输入手势轨迹属于三类中的哪一类轨迹模板以及利用不同的方法来识别输入手势轨迹。此方法最终以上、下、左、右等轨迹以及10个阿拉伯数字等简单字符作为识别结果,并且假设轨迹的起止点是已知的,并未涉及自动的轨迹分割算法设计。



技术实现要素:

本发明的目的在于克服现有技术的不足,提出一种基于STDW(Structured Dynamic Time Warping,结构化动态时域规整算法)的连续字符手势轨迹识别方法,以自然、实时、准确对连续字符手势轨迹的识别。

为实现上述发明目的,本发明基于结构化动态时域规整算法的连续字符手势轨迹识别方法,其特征在于,包括以下步骤:

(1)、连续字符手势轨迹自动提取(分割)

1.1)、对原始的输入连续字符手势轨迹进行间隔归一化采样

设定距离阈值,使用累积策略累积间隔较小的原始轨迹点,得到一个累积点作为采样后的点,并使之与前一个采样后的点间距等于距离阈值,使用插值策略对间隔较大的原始轨迹点进行插值,得到一个插值点作为采样后的点,并使之与前一个采样后的点间距等于距离阈值;采样后的点即为归一化采样后的连续字符手势轨迹的轨迹点;

1.2)、相似度度量特征提取

对于归一化采样后的连续字符手势轨迹,计算相邻轨迹点之间的归一化方向向量并作为相似度度量特征;

1.3)、DTW阈值匹配与轨迹段提取

对于一个字符模板,事先按照步骤1.2)进行处理,得到一个相似度度量特征序列,并作为字符模板特征列向量,其中,字符模板中,轨迹点距离等于距离阈值的,字符模板特征列向量的第一个元素为该字符模板的起点轨迹点获取的相似度度量特征,字符模板特征列向量的最后一个元素为该字符模板的终点轨迹点获取的相似度度量特征;

对于原始的输入连续字符手势轨迹,获得原始轨迹点后,首先按照步骤1.1)、1.2)进行处理,依次获得相似度度量特征,然后对于获得的每一个相似度度量特征,计算出其与字符模板特征列向量每个元素的距离,得到一个相同顺序关系的特征距离列向量,并插入到前一个特征距离列向量的右侧,从而构建出一个新的相似度矩阵;相似度矩阵的列数大于等于连续字符手势轨迹间隔归一化采样后的点的数量,当新插入的特征距离列向量使得列数大于相似度矩阵的列数时,最左侧的特征距离列向量将会被丢弃;

在相似度矩阵构建过程中,使用贪心策略得出相似度矩阵中到当前输入最右下角的最优路径,并累加最优路径上元素的代价值,得到代价累加值;其中,元素ω(i,j)的代价值为:

ω(i,j)=d(i,j)+min{ω(i-1,j-1),ω(i-1,j),ω(i,j-1)} (1)

其中,d(i,j)表示相似度矩阵中坐标为(i,j)处的元素值,ω(i-1,j-1)表示相似度矩阵中坐标为(i-1,j-1)处的代价累加值,ω(i-1,j)表示相似度矩阵中坐标为(i-1,j)处的代价累加值,ω(i,j-1)表示相似度矩阵中坐标为(i,j-1)处的代价累加值;

当代价累加值小于阈值时,则认为字符模板与连续字符手势轨迹匹配上了,此时,再根据求最优路径时保存的信息回溯,在归一化采样后的连续字符手势轨迹中找出这条路径即可提取出对应的轨迹段;

连续字符手势轨迹与每个字符模板都进行DTW阈值匹配,如果匹配上了,就提取出对应的轨迹段;

(2)、STDW(结构化动态时域规整算法)识别

2.1)、轨迹段尺度归一化

对提取的轨迹段,使用PCA(主成分分析)算法求出轨迹段的主方向,求出主方向后,对轨迹段中的每一个轨迹点使用下面的方式进行尺度上的归一化:

Ratio=lin/lset (2)

pjs′=pjs*Ratio (3)

Tras=bpj(pjs′) (4)

其中lin为轨迹段的主方向长度,lset为设置的归一化主方向长度,pjs为轨迹段轨迹点s经过PCA变化之后投影到主方向上的点,bpj为反投影至2维空间,即PCA反变换还原之前的点,Tras为二维空间的轨迹点,并构成尺度归一化后的轨迹段;

对尺度归一化后的轨迹段进行步骤1.1)的间隔归一化采样,采样后的点为Tra′s,然后,根据以下式子把整体坐标平移成以(0,0)为中心的采样点Tra″s

<mrow> <mo>(</mo> <msub> <mi>pt</mi> <mi>x</mi> </msub> <mo>,</mo> <msub> <mi>pt</mi> <mi>y</mi> </msub> <mo>)</mo> <mo>=</mo> <mo>(</mo> <msubsup> <mo>&Sigma;</mo> <mrow> <mi>s</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </msubsup> <msubsup> <mi>Tra</mi> <mi>s</mi> <mo>&prime;</mo> </msubsup> <mo>)</mo> <mo>/</mo> <mi>N</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>

Tra″s=Tra′s-(ptx,pty) (6)

其中ptx,pty代表轨迹段的质心,x,y为坐标轴,N为采样后的点的数量;所有的采样点Tra″s构成轨迹段采样点序列;

2.2)、提取新特征

对轨迹段采样点序列进行角点的检测:

<mrow> <msub> <mi>&theta;</mi> <mi>k</mi> </msub> <mo>=</mo> <msup> <mi>cos</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mfrac> <mrow> <msubsup> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>,</mo> <mi>s</mi> <mo>-</mo> <mi>k</mi> <mo>)</mo> </mrow> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>,</mo> <mi>s</mi> <mo>+</mo> <mi>k</mi> <mo>)</mo> </mrow> <mn>2</mn> </msubsup> <mo>-</mo> <msubsup> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mi>s</mi> <mo>-</mo> <mi>k</mi> <mo>)</mo> </mrow> <mn>2</mn> </msubsup> </mrow> <mrow> <mn>2</mn> <msub> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>,</mo> <mi>s</mi> <mo>+</mo> <mi>k</mi> <mo>)</mo> </mrow> </msub> <msub> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>,</mo> <mi>s</mi> <mo>-</mo> <mi>k</mi> <mo>)</mo> </mrow> </msub> </mrow> </mfrac> <mo>,</mo> <mi>k</mi> <mo>&Element;</mo> <mo>{</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mn>3</mn> <mo>}</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

其中,θk表示第s个采样点与第s±k个采样点之间的角度,d(s,s±k)表示第s个采样点与第s±k个采样点之间的距离。

对于第s个采样点,s=1,2,﹍,N,当k=1,2,3中任意一个数,角度θk<τ时即检测到角点,其中,τ为角度阈值,可以根据具体情况设置;

生成一个长度为N的序列,序列中的元素数值为0,然后在角点位置按照以下拟合函数进行赋值:

<mrow> <mi>f</mi> <mrow> <mo>(</mo> <mi>Z</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>3</mn> <msqrt> <mrow> <mn>2</mn> <mi>&pi;</mi> </mrow> </msqrt> </mfrac> <msup> <mi>e</mi> <mrow> <mo>-</mo> <mfrac> <msup> <mi>Z</mi> <mn>2</mn> </msup> <mn>2</mn> </mfrac> </mrow> </msup> <mo>,</mo> <mi>Z</mi> <mo>&Element;</mo> <mo>{</mo> <mo>-</mo> <mn>2</mn> <mo>,</mo> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>}</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

Z=0时,f(0)的值赋值给序列中角点位置的元素,Z=1时,f(1)的值赋值给序列中角点位置后面第一个元素,Z=2时,f(2)的值赋值给序列中角点位置后面第二个元素,Z=-1时,f(-1)的值赋值给序列中角点位置前面第一个元素,Z=-2时,f(-2)的值赋值给序列中角点位置前面第一个元素,从而得到一个权重分布序列;

2.3)、SDTW识别

2.3.1)、构建权重分布矩阵

字符模板事先按照步骤2.1)、2.2)进行相同的处理,得到字符模板采样点序列、一个权重分别序列;

将轨迹段的权重分布序列作为一个行向量,与轨迹段对应的字符模板的权重分布序列作为一个列向量,构建一个权重分布矩阵(fij),其中,元素fij为行向量中的第i个元素与列向量中的第j个元素之和;

2.3.2)、构建像素距离相似度矩阵

将字符模板采样点序列作为一个列向量,其中,第一个元素对应该字符模板的起点轨迹点,最后一个元素对应该字符模板的终点轨迹点,然后计算轨迹段采样点序列第一个采样点与列向量中每个元素的像素距离,得到一个像素距离列向量,同样,将第二个采样点也进行同样的计算,得到的像素距离列向量放到前一个像素列向量的右侧,轨迹段采样点序列中的采样点依次采用同样的计算和处理,得到一个像素距离相似度矩阵;

2.3.3)、计算代价累加值

使用贪心策略搜索出像素距离相似度矩阵到右下角的最优路径,并累加最优路径上元素的代价值,得到代价累加值ω′(i,j):

ω′(i,j)=(1+fij)d′(i,j)+min{ω′(i-1,j-1),ω′(i-1,j),ω′(i,j-1)} (8)

其中,d′(i,j)表示像素距离相似度矩阵中坐标为(i,j)处的元素值,ω′(i-1,j-1)表示像素距离相似度矩阵中坐标为(i-1,j-1)处的代价累加值,ω′(i-1,j)表示像素距离相似度矩阵中坐标为(i-1,j)处的代价累加值,ω′(i,j-1)表示像素距离似度矩阵中坐标为(i,j-1)处的代价累加值;

2.3.4)、识别

如果步骤(1)中,同时有两个或两个以上字符模板匹配上,则选择相像素距离似度矩阵中代价累加值最小的字符模板对应的字符作为识别字符输出,如果只有一个匹配上,则直接将匹配上的字符模板对应的字符作为识别字符输出;

(3)、轨迹自包含的处理

识别字符存储到输出队列中,如果当前输出识别字符对应的轨迹段坐标序列与输出队列中存储的识别字符的轨迹段坐标序列具有包含关系,即在某一部分轨迹上它们的坐标完全一样,则保留最长的轨迹段对应的识别字符,而去除掉较短的轨迹段对应的识别字符,然后存储到输出队列中;如果不具有包含关系,则保存识别字符到输出队列中;当输出队列中的识别字符数量大于输出队列长度时,先存入的识别字符作为最终识别字符输出,同时,结束输入后,输出队列里的内容也作为最终识别字符输出。

本发明的目的是这样实现的。

针对现有技术存在的问题,本发明提出了一种基于结构化动态时域规整算法的连续字符手势轨迹识别方法,通过连续手势轨迹的自动分割问题、角点新特征的提取与STDW识别以及字符手势轨迹之间的包含的处理,实现自然、实时、准确对连续字符手势轨迹的识别。与现有技术相比,本发明的交互方式更加自然、对用户的约束更小符合人机交互的要求。相对于传统的数个手势动作类别更加多样,在兼顾准确性与实时性的条件下,本发明把字符手势轨迹的结构与动态时间规整算法相结合而形成结构化的动态时间规整算法来提高原始算法的识别效果,增加识别率,同时,具有较高的准确率、较好的人机交互体验并能满足实时性要求。

附图说明

图1是本发明基于结构化动态时域规整算法的连续字符手势轨迹识别方法一种具体实施方式流程图;

图2是图1所示间隔归一化采样的原理示意图;

图3是图1所示相似度度量特征提取中的归一化方向向量的提取示意图;

图4是图1所示DTW阈值匹配与轨迹段提取中构建的相似度矩阵示意图;

图5是图1所示轨迹段尺度归一化示意图;

图6是图1所示提取新特征中的角度以及高斯权重分布示意图。

具体实施方式

下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。

图1是本发明基于结构化动态时域规整算法的连续字符手势轨迹识别方法一种具体实施方式流程图。

在本实施例中,如图1所示,本发明基于结构化动态时域规整算法的连续字符手势轨迹识别方法包括以下步骤:

步骤1、连续字符手势轨迹自动提取(分割)

步骤101、对原始的输入连续字符手势轨迹进行间隔归一化采样

由于程序运行的差异性以及用户书写速度的差异性,得到的连续字符手势轨迹的轨迹点之间在空间距离间隔上是不均匀的。为了方便后续的相似度度量特征提取,需要对原始的输入连续字符手势轨迹进行间隔归一化采样:设定距离阈值,使用累积策略累积间隔较小的原始轨迹点,得到一个累积点作为采样后的点,并使之与前一个采样后的点间距等于距离阈值,使用插值策略对间隔较大的原始轨迹点进行插值,得到一个差值点作为采样后的点,并使之与前一个采样后的点间距等于距离阈值。采样后的点即为归一化采样后的连续字符手势轨迹的轨迹点。

图2是图1所示间隔归一化采样的原理示意,其中X代表采样后的点,○代表原始轨迹点。

如图2所示,前几个(三个)原始轨迹点的间隔较小即前一个采样后的点到距离阈值之间有两个以及以上的原始轨迹点,因此,使用累积策略对这三个原始轨迹点进行累积,得到一个累积点作为采样后的点,并使之与前一个采样后的点间距等于距离阈值;而后几个点间隔较大即前一个采样后的点到距离阈值之间没有或者只有一个原始轨迹点,则采用使用插值策略进行插值,得到一个差值点作为采样后的点,并使之与前一个采样后的点间距等于距离阈值。

步骤102、相似度度量特征提取

对于归一化采样后的连续字符手势轨迹,计算相邻轨迹点之间的归一化方向向量并作为相似度度量特征。

在间隔归一化采样之后,为了后续的DTW相似度计算需要提取特征,特征需要对尺度变化有一定的鲁棒性,因此,在本发明中,使用的连续字符手势轨迹的特征即为每两个相邻轨迹点之间的归一化的方向向量,提取方式如图3所示。

在后续的连续字符手势轨迹与字符模板的比较中,采用的是2个相邻的方向向量相对角度作为相似度度量特征。

步骤103、DTW阈值匹配与轨迹段提取

DTW算法是一种匹配算法,在本发明中,它从字符模板以及输入连续字符手势轨迹的相似度度量特征出发,构建相似度矩阵。

对于一个字符模板,事先按照步骤102)进行处理,得到一个相似度度量特征序列,并作为字符模板特征列向量,其中,字符模板中,轨迹点距离等于距离阈值的,字符模板特征列向量的第一个元素为该字符模板的起点轨迹点获取的相似度度量特征,字符模板特征列向量的最后一个元素为该字符模板的终点轨迹点获取的相似度度量特征;

对于原始的输入连续字符手势轨迹,获得原始轨迹点后,首先按照步骤101、102进行处理,依次获得相似度度量特征,然后对于获得的每一个相似度度量特征,计算出其与字符模板特征列向量每个元素的距离,得到一个相同顺序关系的特征距离列向量,并插入到前一个特征距离列向量的右侧,从而构建出一个新的相似度矩阵,如图4所示。在本实施例中,采用方向向量之间的夹角角度作为相似度度量特征的相似度,角度越小,相似度越大。

此外,当相似度矩阵的列数大于等于连续字符手势轨迹间隔归一化采样后的点的数量,当新插入的特征距离列向量使得列数大于相似度矩阵的列数时,最左侧的特征距离列向量将会被丢弃。

在相似度矩阵构建过程中,使用贪心策略得出相似度矩阵中到当前输入最右下角的最优路径并累加最优路径上元素的代价值,得到代价累加值;其中,元素ω(i,j)的代价值为:

ω(i,j)=d(i,j)+min{ω(i-1,j-1),ω(i-1,j),ω(i,j-1)} (1)

其中,d(i,j)表示相似度矩阵中坐标为(i,j)处的元素值,ω(i-1,j-1)表示相似度矩阵中坐标为(i-1,j-1)处的代价累加值,ω(i-1,j)表示相似度矩阵中坐标为(i-1,j)处的代价累加值,ω(i,j-1)表示相似度矩阵中坐标为(i,j-1)处的代价累加值。

当相似度矩阵右下角处代价累加值小于阈值时,则认为字符模板与连续字符手势轨迹匹配上了,此时,再根据求最优路径时保存的信息回溯,在归一化采样后的连续字符手势轨迹中找出这条路径即可提取出对应的轨迹段。

连续字符手势轨迹与每个字符模板都进行DTW阈值匹配,如果匹配上了,就提取出对应的轨迹段。

步骤104、速度特征校验

在找出对应的轨迹段之后,此轨迹段是根据字符模板与连续字符手势轨迹中某一段的相似性进行提取出来的,提取出的轨迹段与真正想要提取的部分具有一定差异,例如字符e中的c这部分轨迹,因此需要结合速度特征进行校验。所使用的具体的校验方式为:检测轨迹段是否有连续5个轨迹点的坐标移动距离小于阈值τ′,如果有则认为分割成功,否则继续等待下一轨迹点输入(也可以构建分类器来判别速度是否有停顿趋势)。因此附加一个速度特征校验部分可以改善分割效果。

因此总的说来,本步骤使用DTW算法构建各个字符模板与输入连续字符手势轨迹的相似度(距离)矩阵后,采用阈值策略进行匹配,然后选出代价累加值小于阈值的轨迹信息,通过回溯的方式在相似度矩阵中寻找到起点,从而自动的找出相应的轨迹段。同时,为了提高自动轨迹提取的准确度,最后加入了一个速度校验部分。

步骤2、STDW(结构化动态时域规整算法)识别

步骤201、轨迹段尺度归一化

由于所使用的方向、角度特征对采样点之间的距离进行了归一化,因此这种特征不能描述采样点(轨迹点)之间的全局位置关系。如果不包含这种全局位置关系而仅从采样点之间归一化的方向向量来看,一些字符轨迹就显得非常相似了,即出现了在特征空间具有混淆的情况,例如字符b与字符p,字符d与字符q,他们的归一化之后的向量特征序列是非常相似的,因此我们需要提取新的特征,即各个采样点(轨迹点)之间的坐标特征。

为了克服轨迹的尺度变化以及旋转等因素,需要把字符模板、提取轨迹段归一化到同一尺度下,而简单的把轨迹轮廓的长、宽归一化到同样的数值下并不能解决旋转所带来的差异,因此我们使用PCA(主成分分析)算法来求出轨迹的主方向。

在本实施例中,如图5所示,对e、l的轨迹段的主方向进行长度归一化,使得字符模板(字符模板也进行相同的长度归一化)与提取的轨迹段主方向长度一致。PCA是一种常用的数据分析方法,主要用来作为数据的降维,轨迹的坐标序列是一个2维序列,使用PCA降成一维数据的同时即可求出它的主方向,数据在主方向上丢失的信息最少。

对提取的轨迹段,使用PCA(主成分分析)算法求出轨迹段的主方向,求出主方向后,对轨迹段中的每一个轨迹点使用下面的方式进行尺度上的归一化:

Ratio=lin/lset (2)

pjs′=pjs*Ratio (3)

Tras=bpj(pjs′) (4)

其中lin为轨迹段的主方向长度,lset为设置的归一化主方向长度,pjs为轨迹段轨迹点s经过PCA变化之后投影到主方向上的点,bpj为反投影至2维空间,即PCA反变换还原之前的点,Tras为二维空间的轨迹点,并构成尺度归一化后的轨迹段;

对尺度归一化后的轨迹段进行步骤1.1)的间隔归一化采样,采样后的点为Tra′s,然后,根据以下式子把整体坐标平移成以(0,0)为中心的采样点Tra″s

<mrow> <mo>(</mo> <msub> <mi>pt</mi> <mi>x</mi> </msub> <mo>,</mo> <msub> <mi>pt</mi> <mi>y</mi> </msub> <mo>)</mo> <mo>=</mo> <mo>(</mo> <msubsup> <mo>&Sigma;</mo> <mrow> <mi>s</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </msubsup> <msubsup> <mi>Tra</mi> <mi>s</mi> <mo>&prime;</mo> </msubsup> <mo>)</mo> <mo>/</mo> <mi>N</mi> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo> </mrow> </mrow>

Tra″s=Tra′s-(ptx,pty) (6)

其中ptx,pty代表轨迹段的质心,x,y为坐标轴,N为采样后的点的数量;所有的采样点Tra″s构成轨迹段采样点序列。

如图5所示,由于进行了尺度归一化,此时所采用的新的位置特征即可使用轨迹段上对应点的坐标,即在图6所示的像素距离相似度矩阵中的轨迹段采样点序列与字符模板采样点序列都为轨迹中的采样点坐标。

步骤202、提取新特征

提取出尺度归一化的轨迹段采样点序列之后,可以利用其包含的位置信息进行更准确的分类。为了更准确的进行分类,我们需要利用字符轨迹本身所具有的结构化信息。对于字符轨迹来说,各个组成部分的重要性是不一样的,字符的角点处所包含更加丰富、重要的信息,可以采用加权的方式来对重要轨迹部分进行体现。所谓的角点即采样点中转折角度较大的点。

对轨迹段采样点序列进行角点的检测:

<mrow> <msub> <mi>&theta;</mi> <mi>k</mi> </msub> <mo>=</mo> <msup> <mi>cos</mi> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mfrac> <mrow> <msubsup> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>,</mo> <mi>s</mi> <mo>-</mo> <mi>k</mi> <mo>)</mo> </mrow> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>,</mo> <mi>s</mi> <mo>+</mo> <mi>k</mi> <mo>)</mo> </mrow> <mn>2</mn> </msubsup> <mo>-</mo> <msubsup> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mi>s</mi> <mo>-</mo> <mi>k</mi> <mo>)</mo> </mrow> <mn>2</mn> </msubsup> </mrow> <mrow> <mn>2</mn> <msub> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>,</mo> <mi>s</mi> <mo>+</mo> <mi>k</mi> <mo>)</mo> </mrow> </msub> <msub> <mi>d</mi> <mrow> <mo>(</mo> <mi>s</mi> <mo>,</mo> <mi>s</mi> <mo>-</mo> <mi>k</mi> <mo>)</mo> </mrow> </msub> </mrow> </mfrac> <mo>,</mo> <mi>k</mi> <mo>&Element;</mo> <mo>{</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mn>3</mn> <mo>}</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

其中,θk表示第s个采样点与第s±k个采样点之间的角度,d(s,s±k)表示第s个采样点与第s±k个采样点之间的距离。

对于第s个采样点,s=1,2,﹍,N,当k=1,2,3中任意一个数,角度θk<τ时即检测到角点,其中,θk<τ为角度阈值,可以根据具体情况设置。

在本发明中,因此整体使用的是余弦定理,为了更加准确的检测角点,对当前采样点与距离k个采样点都计算出夹角,当任意θk<τ时即检测到角点,再本实施例中,角度阈值τ设为60°。对于权值在角点处的分配,我们采用高斯分布进行拟合,在角点处的权值等于高斯的最大值,两边则依次减小,具体为:

生成一个长度为N的序列,序列中的元素素值为0,然后在角点位置按照以下拟合函数进行赋值:

<mrow> <mi>f</mi> <mrow> <mo>(</mo> <mi>Z</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mn>3</mn> <msqrt> <mrow> <mn>2</mn> <mi>&pi;</mi> </mrow> </msqrt> </mfrac> <msup> <mi>e</mi> <mrow> <mo>-</mo> <mfrac> <msup> <mi>Z</mi> <mn>2</mn> </msup> <mn>2</mn> </mfrac> </mrow> </msup> <mo>,</mo> <mi>Z</mi> <mo>&Element;</mo> <mo>{</mo> <mo>-</mo> <mn>2</mn> <mo>,</mo> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mn>0</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>}</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>

Z=0时,f(0)的值赋值给序列中角点位置的元素,Z=1时,f(1)的值赋值给序列中角点位置后面第一个元素,Z=2时,f(2)的值赋值给序列中角点位置后面第二个元素,Z=-1时,f(-1)的值赋值给序列中角点位置前面第一个元素,Z=-2时,f(-2)的值赋值给序列中角点位置前面第一个元素,从而得到一个权重分布序列。

对于轨迹段采样点序列以及字符模板采样点序列都检测出他们的角点,然后根据角点与高斯分布赋予相应的权重,如图6所示,黑色实心点即是角点,虚线为高斯分布。

步骤203、SDTW识别

步骤2031、构建权重分布矩阵

字符模板事先按照步骤201、202进行相同的处理,得到字符模板采样点序列、一个权重分别序列。

将轨迹段的权重分布序列作为一个行向量,与轨迹段对应的字符模板的权重分布序列作为一个列向量,构建一个权重分布矩阵(fij),其中,元素fij为行向量中的第i个元素与列向量中的第j个元素之和;

步骤2032、构建像素距离相似度矩阵

将字符模板采样点序列作为一个列向量,其中,第一个元素对应该字符模板的起点轨迹点,最后一个元素对应该字符模板的终点轨迹点,然后计算轨迹段采样点序列第一个采样点与列向量中每个元素的像素距离,得到一个像素距离列向量,同样,将第二个采样点也进行同样的计算,得到的像素距离列向量放到前一个像素列向量的右侧,轨迹段采样点序列中的采样点依次采用同样的计算和处理,得到一个像素距离相似度矩阵。

步骤2033、计算代价累加值

使用贪心策略搜索出像素距离相似度矩阵到右下角的最优路径,并累加最优路径上元素的代价值,得到代价累加值ω′(i,j):

ω′(i,j)=(1+fij)d′(i,j)+min{ω′(i-1,j-1),ω′(i-1,j),ω′(i,j-1)} (8)

其中,d′(i,j)表示相像素距离相似度矩阵中坐标为(i,j)处的元素值,ω′(i-1,j-1)表示相像素距离相似度矩阵中坐标为(i-1,j-1)处的代价累加值,ω′(i-1,j)表示相像素距离相似度矩阵中坐标为(i-1,j)处的代价累加值,ω′(i,j-1)表示相像素距离似度矩阵中坐标为(i,j-1)处的代价累加值。

步骤2034、识别

如果步骤1中,同时有两个或两个以上字符模板匹配上,则选择相像素距离似度矩阵中右下角处代价累加值最小的字符模板对应的字符作为识别字符输出,如果只有一个匹配上,则直接将匹配上的字符模板对应的字符作为识别字符输出。

由于最初的输入连续字符手势轨迹分类是由轨迹自动提取(分割)步骤通过阈值策略所决定,而SDTW(结构化动态时域规整算法)识别则会对其输出结果进行更进一步的分类,例如输入字符b的连续字符手势轨迹,通过轨迹自动提取(分割)的阈值策略可能会匹配上字符b的字符模块和字符p的字符模块两种结果,这时SDTW识别会把提取的轨迹段分别与识别出结果即字符的对应字符模板利用位置特征进行结构化的相似度计算,选择相似度最大的一个结果即识别字符作为输出,输出给步骤3。

步骤3、轨迹自包含的处理

为了提高人机交互的体验,本发明并没有使用传统让用户在起止点停止、等待从而检测起止点的方式,而是使用回溯的方式在DTW距离矩阵中进行轨迹段提取以及使用速率进行检测,用户往往会在书写完一个字符处进行减速。但是连续字符手势轨迹的书写过程中也可能会产生减速区域,比如在角点附近轨迹的速率也会产生明显下降因此就会产生把字符的局部字符进行输出,例如书写字符q的时候会输出字符o,而字符q从轨迹上来说是包含了字符o的,从字符的形状上来看他们也是有相应的包含关系,因此本发明还要自动处理这种自包含问题,具体为:

步骤301、识别字符存储到输出队列中,如果当前输出识别字符对应的轨迹段坐标序列与输出队列中存储的识别字符的轨迹段坐标序列具有包含关系,即在某一部分轨迹上它们的坐标完全一样,则转到步骤302;如果不具有包含关系,则保存识别字符到输出队列中;

步骤302、保留最长的轨迹段对应的识别字符,而去除掉较短的轨迹段对应的识别字符,然后存储到输出队列中;

步骤303、当输出队列中的识别字符数量大于输出队列长度时,先存入的识别字符作为最终识别字符输出,同时,结束输入后,输出队列里的内容也作为最终识别字符输出。

在本实施例中,输出队列的长度设置为10即存储10个识别字符,包含关系的重叠率判断阈值为0.7,即对于相比较的两段轨迹段,若坐标完全一样的采样点数量超过某一段轨迹段总轨迹点数的0.7倍即认为两段轨迹段有重叠关系。

尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

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