基于骨骼节点数据的动作识别方法

文档序号:6370415阅读:200来源:国知局
专利名称:基于骨骼节点数据的动作识别方法
技术领域
本发明涉及基于运动骨骼节点数据动作分析领域。
背景技术
随着以红外扫描方式为核心的人体骨骼与动作识别方式的兴起,以体感输入隔空操作计算机将日益走入人们的生活。这种方式在现有的技术条件下能够生成实时的人体骨骼节点数据,在依据一定算法取得正定且标准化骨骼节点数据后,可以做统一的动作识别处理。

发明内容
本发明所要解决的技术问题是提供一种能够在现有的技术条件下能够生成实时 的人体骨骼节点数据,在依据一定算法取得正定且标准化骨骼节点数据后,做统一的动作识别处理的基于骨骼节点数据的动作识别方法,
本发明为解决上述技术问题采用以下技术方案本发明设计了一种基于骨骼节点数据的动作识别方法,包括如下步骤
步骤(I):建立一个单独的骨骼节点数据收集和分析的线程;
步骤(2):在每一个线程中循环执行下列步骤,每一次循环称为一帧
步骤(201):提取每一个体的骨骼节点数据;
步骤(202):将个体的骨骼节点数据送入个体数据的容器,当该个体尚未在容器中建立,则产生个体被捕获的消息,并为之建立一个识别相关数据队列,若个体数据容器中某个个体在本帧结束时仍未得到其骨骼节点数据,则产生个体丢失的消息;
步骤(203):将个体的骨骼节点数据放入该个体的数据队列里,并根据队列已有的数据,分别进行骨骼节点数据平滑处理、正定转换处理和骨骼肢体节点数据标准化算法;
步骤(204)顺次执行定义的动作识别算法,得到该个体当前是否在执行该动作的判定,然后检查该个体的数据队列,看该个体是否在前一帧是否执行了该动作,若前帧未执行,当前未执行,则无信号;
若前帧未执行,当前已执行,则产生动作发生信号;
若前帧已执行,当前未执行,则动作结束信号;
若前帧已执行,当前已执行,则无信号或已发生信号。作为本发明的一种优化方法所述步骤(203)中的骨骼节点数据平滑处理、正定转换处理和骨骼肢体节点数据标准化算法,三者无先后顺序。作为本发明的一种优化方法所述骨骼节点数据平滑处理包括如下具体步骤骨骼数据平滑处理是依据于以前帧的数据做一定的平滑计算,在每一帧得到个体的原始骨骼数据PO后,针对每一个骨骼节点,取得每一个骨骼节点的前两帧数据Pl和p2,先计算出按照这两帧数据的变化的新位置P3=2*p2-pl,最后得到该骨骼节点平滑后的位置pn= (p0+p3)/2。
作为本发明的一种优化方法所述步骤(203)中的正定转换处理包括如下具体步骤
步骤(A).在标准坐标系中,选取一个标准站立姿势时所面向的方向为Df,头顶指向的方向为Dt,双手指向的方向Dl ;
步骤(B).分别定义原始骨骼数据节点的左肩I、右肩!■和左右肩之间的中心点c的位置为pl、pr和pc,从而得到左肩I到中心点c的向量为dl = pi - pc,右肩r到中心点c的向量dr = pr - pc ;
步骤(C).将步骤B中的向量dl和dr作向量归一化处理,取指向人体正前方的向量为df,即向量dl和dr的法向量为df = dl % dr,取指向人体正上方的方向向量为dt = (dl +dr)/2,取人体水平向左或水平向右的方向向量为dl,即df到dt的法向量dl = df % dt ;步骤(D).分别计算df到Df的转换矩阵mf、dt到Dt的转换矩阵mt、dl到Dl的转换矩阵ml ; 步骤(E).针对每一个骨骼节点,采用下列两种方式中的任意一种方式
(1)依次用所述步骤(D)中的三个转换矩阵mf、mt和ml做三次转换计算;
(2)先将这三个转换矩阵依次相乘,得到M,再针对每一个骨骼节点,都用M做一次转换计算。作为本发明的一种优化方法所述骨骼肢体节点数据标准化算法包括如下具体步骤
a.定义第i个骨骼节点Ni与相邻的下一个骨骼节点N(i+1)之间的标准距离为di,所述第i个骨骼节点Ni的位置是ni,其中,i是自然数;
b.计算标准坐标系上的骨骼肢体节点之间的距离,包括如下具体处理 bl.计算骨骼节点N (i+1)相对于Ni的相对位置pi= n (i+1) -ni ; b2.将步骤(A)中的相对位置pi归一化,得到相对方向Pi ;
b3.将前述相对方向Pi乘以标准距离di ;
b4.计算相对方向Pi与pi之间的位置差pd, pd=Pi- pi ;
b5.将第i个骨骼节点Ni的位置是ni减去pd。本发明采用以上技术方案与现有技术相比,具有以下技术效果。


图I为本发明所设计的基于骨骼节点数据的动作识别方法的流程图。
具体实施例方式下面结合附图对本发明的技术方案做进一步的详细说明
如图I所示,本发明设计了一种基于骨骼节点数据的动作识别方法,包括如下步骤 步骤(I):建立一个单独的骨骼节点数据收集和分析的线程;
步骤(2):在每一个线程中循环执行下列步骤,每一次循环称为一帧
步骤(201):提取每一个体的骨骼节点数据;
步骤(202):将个体的骨骼节点数据送入个体数据的容器,当该个体尚未在容器中建立,则产生个体被捕获的消息,并为之建立一个识别相关数据队列,若个体数据容器中某个个体在本帧结束时仍未得到其骨骼节点数据,则产生个体丢失的消息;
步骤(203):将个体的骨骼节点数据放入该个体的数据队列里,并根据队列已有的数据,分别进行骨骼节点数据平滑处理、正定转换处理和骨骼肢体节点数据标准化算法;
步骤(204)顺次执行定义的动作识别算法,得到该个体当前是否在执行该动作的判定,然后检查该个体的数据队列,看该个体是否在前一帧是否执行了该动作,若前帧未执行,当前未执行,则无信号;
若前帧未执行,当前已执行,则产生动作发生信号;
若前帧已执行,当前未执行,则动作结束信号;
若前帧已执行,当前已执行,则无信号或已发生信号。
作为本发明的一种优化方法所述步骤(203)中的骨骼节点数据平滑处理、正定转换处理和骨骼肢体节点数据标准化算法,三者无先后顺序。作为本发明的一种优化方法所述骨骼节点数据平滑处理包括如下具体步骤骨骼数据平滑处理是依据于以前帧的数据做一定的平滑计算,在每一帧得到个体的原始骨骼数据PO后,针对每一个骨骼节点,取得每一个骨骼节点的前两帧数据Pl和p2,先计算出按照这两帧数据的变化的新位置P3=2*p2-pl,最后得到该骨骼节点平滑后的位置pn= (p0+p3)/2。作为本发明的一种优化方法所述步骤(203)中的正定转换处理包括如下具体步骤
步骤(A).在标准坐标系中,选取一个标准站立姿势时所面向的方向为Df,头顶指向的方向为Dt,双手指向的方向Dl ;
步骤(B).分别定义原始骨骼数据节点的左肩I、右肩!■和左右肩之间的中心点c的位置为pl、pr和pc,从而得到左肩I到中心点c的向量为dl = pi - pc,右肩r到中心点c的向量dr = pr - pc ;
步骤(C).将步骤B中的向量dl和dr作向量归一化处理,取指向人体正前方的向量为df,即向量dl和dr的法向量为df = dl % dr,取指向人体正上方的方向向量为dt = (dl +dr)/2,取人体水平向左或水平向右的方向向量为dl,即df到dt的法向量dl = df % dt ;步骤(D).分别计算df到Df的转换矩阵mf、dt到Dt的转换矩阵mt、dl到Dl的转换矩阵ml ;
步骤(E).针对每一个骨骼节点,采用下列两种方式中的任意一种方式
(1)依次用所述步骤(D)中的三个转换矩阵mf、mt和ml做三次转换计算;
(2)先将这三个转换矩阵依次相乘,得到M,再针对每一个骨骼节点,都用M做一次转换计算。作为本发明的一种优化方法所述骨骼肢体节点数据标准化算法包括如下具体步骤
a.定义第i个骨骼节点Ni与相邻的下一个骨骼节点N(i+1)之间的标准距离为di,所述第i个骨骼节点Ni的位置是ni,其中,i是自然数;
b.计算标准坐标系上的骨骼肢体节点之间的距离,包括如下具体处理 bl.计算骨骼节点N (i+1)相对于Ni的相对位置pi= n (i+1) -ni ; b2.将步骤(A)中的相对位置pi归一化,得到相对方向Pi ;b3.将前述相对方向Pi乘以标准距离di ;
b4.计算相对方向Pi与pi之间的位置差pd, pd=Pi- pi ;
b5.将第i个骨骼节点Ni的位置是ni减去pd。在具体实施例中,包括下面几种动作的识别
(1)骨骼相对位置判定
取某一帧两个骨骼节点的相对位置与指定的相对位置范围比较,如只指定一个骨骼,则是相对于坐标原点;
(2)骨骼相对角度判定
取某一帧三个骨骼节点的相对角度与指定的角度范围比较;
(3)骨骼绝对位移判定
取某个骨骼某一帧和指定的以前某帧的相对位置,与指定的相对位置变化范围比较;
(4)骨骼相对位移判定
指定两个骨骼点,先取得他们在某一帧的相对位置,然后取得他们在指定以前某帧的相对位置,最后这两个相对位置的相对位置与指定的位置变化范围想比较;
(5)身体位移判定
取得身体中心点与扫描器在某一帧与指定以前某帧中的绝对位置,取得这两个位置的相对位置,然后与指定位置变化范围相比较;
(6)身体角度判定
取得身体与扫描器在某一帧与指定以前某帧中的与扫描器标准坐标轴的转角,得到转角的变化范围与指定的范围相比较;
(7)特殊判定
对拍手,抱拳,拍头等动作,取原始数据进行直接计算得到;
(8)动作组合判定
所有动作进行综合条件式判定,允许进行与或非的表达式运算。例如目前已经定义如下几个动作 a -左手摆动(骨骼相对位移判定) b -右手向下(骨骼相对位置判定) c —身体上跃(身体位移判定)
d —身体前屈(动作组合判定)
现在定义一个严格的左移手势,其动作是左手摆动且右手向下,身体不能处于上跃状态,且不能前屈,那么左移手势就可以定义为f = a && b && ! (c Il d)。
权利要求
1.一种基于骨骼节点数据的动作识别方法,其特征在于,包括如下步骤 步骤(I):建立一个单独的骨骼节点数据收集和分析的线程; 步骤(2):在每一个线程中循环执行步骤(201)至步骤(204),每一次循环称为一帧 步骤(201):提取每一个体的骨骼节点数据; 步骤(202):将个体的骨骼节点数据送入个体数据的容器,当该个体尚未在容器中建立,则产生个体被捕获的消息,并为之建立一个识别相关数据队列,若个体数据容器中某个个体在本帧结束时仍未得到其骨骼节点数据,则产生个体丢失的消息; 步骤(203):将个体的骨骼节点数据放入该个体的数据队列里,并根据队列已有的数据,分别进行骨骼节点数据平滑处理、正定转换处理和骨骼肢体节点数据标准化算法; 步骤(204)顺次执行基于标准骨骼节点数据集合的具体动作识别算法,得到该个体当前是否在执行该动作的判定,然后检查该个体的数据队列,看该个体是否在前一帧是否 执行了该动作,若前帧未执行,当前未执行,则无信号; 若前帧未执行,当前已执行,则产生动作发生信号; 若前帧已执行,当前未执行,则动作结束信号; 若前帧已执行,当前已执行,则无信号或已发生信号。
2.根据权利要求I所述的基于骨骼节点数据的动作识别方法,其特征在于,所述步骤(203)中的骨骼节点数据平滑处理、正定转换处理和骨骼肢体节点数据标准化算法,三者无先后顺序。
3.根据权利要求I所述的基于骨骼节点数据的动作识别方法,其特征在于,所述骨骼节点数据平滑处理包括如下具体步骤骨骼数据平滑处理是依据于以前帧的数据做一定的平滑计算,在每一帧得到个体的原始骨骼数据pO后,针对每一个骨骼节点,取得每一个骨骼节点的前两帧数据Pl和P2,先计算出按照这两帧数据的变化的新位置p3=2*p2-pl,最后得到该骨骼节点平滑后的位置pn=(p0+p3)/2。
4.根据权利要求I所述的基于骨骼节点数据的动作识别方法,其特征在于,所述步骤(203)中的正定转换处理包括如下具体步骤 步骤(A).在标准坐标系中,选取一个标准站立姿势时所面向的方向为Df,头顶指向的方向为Dt,双手指向的方向Dl ; 步骤(B).分别定义原始骨骼数据节点的左肩I、右肩!■和左右肩之间的中心点c的位置为pl、pr和pc,从而得到左肩I到中心点c的向量为dl = pi - pc,右肩r到中心点c的向量dr = pr - pc ;步骤(C).将步骤B中的向量dl和dr作向量归一化处理,取指向人体正前方的向量为df,即向量dl和dr的法向量为df = dl % dr,取指向人体正上方的方向向量为dt = (dl +dr)/2,取人体水平向左或水平向右的方向向量为dl,即df到dt的法向量dl = df % dt ;步骤(D).分别计算df到Df的转换矩阵mf、dt到Dt的转换矩阵mt、dl到Dl的转换矩阵ml ; 步骤(E).针对每一个骨骼节点,采用下列两种方式中的任意一种方式 (1)依次用所述步骤(D)中的三个转换矩阵mf、mt和ml做三次转换计算; (2)先将这三个转换矩阵依次相乘,得到M,再针对每一个骨骼节点,都用M做一次转换计算。
5.根据权利要求I所述的基于骨骼节点数据的动作识别方法,其特征在于,所述骨骼肢体节点数据标准化算法包括如下具体步骤 a.定义第i个骨骼节点Ni与相邻的下一个骨骼节点N(i+1)之间的标准距离为di,所述第i个骨骼节点Ni的位置是ni,其中,i是自然数; b.计算标准坐标系上的骨骼肢体节点之间的距离,包括如下具体处理 bl.计算骨骼节点N (i+1)相对于Ni的相对位置pi= n (i+1) -ni ; b2.将步骤(A)中的相对位置pi归一化,得到相对方向Pi ; b3.将前述相对方向Pi乘以标准距离di ; b4.计算相对方向Pi与pi之间的位置差pd, pd=Pi- pi ; b5.将第i个骨骼节点Ni的位置是ni减去pd。
全文摘要
本发明公开了一种基于骨骼节点数据的动作识别方法,包括骨骼节点数据平滑处理、正定转换处理、骨骼肢体节点数据标准化算法和骨骼节点数据的动作识别。本发明所设计的基于骨骼节点数据的动作识别方法能够在现有的技术条件下能够生成实时的人体骨骼节点数据,在依据一定算法取得正定且标准化骨骼节点数据后,做统一的动作识别处理。
文档编号G06F3/01GK102749993SQ20121017162
公开日2012年10月24日 申请日期2012年5月30日 优先权日2012年5月30日
发明者陆晟, 黄本华 申请人:无锡掌游天下科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1