首页> 中国专利> 基于一种新的距离特征的人体运动分割

基于一种新的距离特征的人体运动分割

摘要

本发明基于一种新的距离特征的人体运动分割,第一步选择一组新的关节距离作为距离特征,第二步采用PCA方法将此距离特征进行降维,提取第一维主成分作为其特征曲线,这样可以更好的反应出原始运动的本质特征,第三步采用平滑滤波去除噪声,找到曲线的局部极值点,根据曲线幅度检测算法得到初始的分割点,然后再根据限制相邻分割点之间的帧数去精简初始分割点,最后,根据精确的检测算法获得最终的分割点集。着重解决的问题是将一个具有不同运动类型的长运动序列分割成多段具有独立语义的运动片段。

著录项

  • 公开/公告号CN102867300A

    专利类型发明专利

  • 公开/公告日2013-01-09

    原文格式PDF

  • 申请/专利权人 大连大学;

    申请/专利号CN201210302663.X

  • 发明设计人 张强;薛翔;周东生;

    申请日2012-08-23

  • 分类号G06T7/00;G06T7/20;

  • 代理机构大连东方专利代理有限责任公司;

  • 代理人曲永祚

  • 地址 116622 辽宁省大连市金州新区学府大街10号

  • 入库时间 2024-02-19 16:35:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-04-22

    授权

    授权

  • 2013-02-20

    实质审查的生效 IPC(主分类):G06T7/00 申请日:20120823

    实质审查的生效

  • 2013-01-09

    公开

    公开

说明书

技术领域本发明涉及基于一种新的距离特征的人体运动分割,属于图像 处理技术领域。

背景技术近年来,随着计算机软硬件技术的进步,运动捕捉技术得到了 飞速的发展。运动捕捉数据被广泛的应用在越来越多的领域,例如,电影,动 画,游戏等。同时,许多大规模的人体运动捕捉数据库出现在商业和研究领域。 运动分割的目的是从原始的长序列的运动捕捉数据中得到多段具有独立语义的 运动片段,这样在许多应用中都有好处,比如,运动索引,运动合成,运动传 输等。虽然我们可以采用手工的方式去进行分割,但是,这样会消耗大量的人 力和时间,而且是非常复杂、辛苦。

发明内容为了克服上述的不足,本发明的目的在于提出了基于一种新的 距离特征的人体运动分割,该方法通过提取了9个新的距离特征来进行降维, 着重解决针对多种运动类型的长序列的人体运动精确的分割为具有独立语义的 单个运动类型的运动片段问题,从而提高分割的精确度,使得在处理过程中无 需手工干预。

本发明采取的技术方案如下:

第一步,选择一组新的关节距离作为距离特征;

所述关节距离的计算方法是:首先将BVH文件中的保存的欧拉角转换成关 节点的绝对空间坐标,计算方法如下:

根据欧拉角的表示方法,子关节局部坐标系相对于父关节局部坐标系的转 换矩阵M=[RT],

所述R为局部坐标系下的旋转矩阵,R=rot(αz)rot(αy)rot(αx),(αzyx)为子 关节相对于父关节绕z,y,x轴的旋转角度;T为局部坐标系下的位移矩阵, T=[TxTyTz],(Tx,Ty,Tz)为子关节相对于父关节沿x,y,z轴的位移量;

求出子关节在其父关节的局部坐标系下的坐标Vi=M*Vi+1

所述Vi+1作为子关节在自身局部坐标系下的坐标,所述Vi为子关节在父关节 的局部坐标下的坐标;

继续求子关节在世界坐标系下的空间坐标,依次类推,此时设Vi+1作为子关 节在自身局部坐标系下的坐标,设Vi为子关节在世界坐标系下的坐标,则:

Vi(j)=M(root)*...*M(grandparent)*M(parent)*Vi+1(j),

其次根据欧式距离公式,求出相应关节点之间的距离:

|B(k)|=Fi-Fj=(xi-xj)2+(yi-yj)2+(zi-zj)2;

所述Fi(xi,yi,zi),Fj(xj,yj,zj)(i,j=1,...,31∩i≠j)为选择的关节点在世界坐标系下 的坐标值;

选择9个具有逻辑语义的人体关节距离作为距离特征,将其表示为 θ=(φ1,φ2,φ3,φ4,φ5,φ6,φ7,φ8,φ9),这样就将原始欧拉角保存的96维数据降到9维, 同时又能保存原始运动类型的特征;

第二步.利用主分量分析方法(简称PCA方法)对第一步求出的9个距离特征 进行分析及进一步降维,

所述PCA方法分析步骤如下:

步骤1:构建这9个距离特征样本的平均值

步骤2:计算这9个距离特征原始值与平均值的差值然后构建距 离特征的差值矩阵D=[Δθ1,....Δθ9];

步骤3:计算得到协方差矩阵C=DDT,计算协方差矩阵的特征值λ,以及相 应的特征向量L;

步骤4:提取特征向量构建了一组新的9维 主成分,其按贡献率从大到小的顺序排列;提取第一维主成分,也就是的最大 贡献率

步骤5:一个运动可以表示成为:

第三步.对第二步得到的运动的特征曲线采用Lowess平滑滤波方法对 其进行滤波去噪;

所述Lowess平滑滤波的方法是:

步骤1:根据MATLAB中的函数‘smooth(Y,’lowess’)’得到滤波后的 特征曲线signal;

步骤2:接下来就是对这条代表原始运动本质特征的曲线进行处理;

第四步.对第三步求出的滤波后的特征曲线signal,采用幅度检测算法进行 处理,得到初始的分割点及最终的分割点集,就可以将原始运动的运动类型分 割开;

所述幅度检测算法具体步骤如下:

步骤1:计算局部极值点;

所述计算局部极值点的方法:根据MATLAB中‘findpeak’函数得到局部极大 值,然后将数据反转得到局部最小值;然后合并,得到局部极值点;

步骤2:检测局部极值点两侧的曲线幅度,然后进行比较得到最小幅度和最 大幅度,如果最小幅度比最大幅度的δ倍还小,那么这个极值点就是变化大的幅 度点,也是潜在分割点;

步骤3:对上步求出的潜在分割点,设置循环,检测潜在分割点之间间隔, 假如过密,则进行精简操作;如果不过密,则继续检测下一个潜在分割点;如 此下去,直到检测到最后的分割点为止。这样就得到了初始分割点集;

对上面得到的初始分割点集,再进行所述最终的分割点集的实现,具体步 骤如下:

设置循环,从初始分割点集中的第2个初始分割点p2开始到最后一个潜在 分割点,执行如下操作:

步骤1:定义一个围绕着第二个极值点p2的窗口长度2α+1,也就是 [p2-α,p2+α]帧,然后计算[p2-α,p2+α]中的每帧到前一个聚类[p1:p2-α]帧间距 离D。目的是找到[p2-α,p2+α]的帧到前一个聚类的最不相似帧,作为下一个聚 类开始帧。选择欧式距离作为相似帧度量;欧式距离定义如下:

Dsimilar=(Fp,Fq)=(p1-q1)2+(p2-q2)2+...+(pn-qn)2,n=96;

步骤2:进行相似度判断,如果[p2-α,p2+α]帧的Dsimilar(Fp,Fq)小于阈值β, 在相应的数组中标记为1,否则标记为0;所述帧标记为1则属于前一个聚类, 否则属于后一个聚类;

步骤3:统计数组中标记为1的个数为N,重新计算精确的分割点p-α+N。 没有到最后一个潜在分割点就返回步骤1,否则循环结束得到最终分割点集。

本发明原理:为了更加方便容易的对运动序列进行分割,国内外的学者在 分割领域做了一系列的研究。到目前为止,运动分割主要有三种方法:基于降 维方法,基于模型方法,以及基于分类方法。本发明中采用的人体运动数据格 式是采用BVH格式。人体运动看作一系列的采样姿态组成的,每个采样姿态被 看作一帧,每一帧又是由31个关节点构成的,人体运动序列定义为M= {F(1),F(2),...,F(i),...F(frame)}。

每一帧定义为F(i)={Pi(1),Ri(1),Ri(2),....,Ri(t),...,Ri(31)},其中,F(i)代表了人体 姿态,Pi(1)为根节点的平移数据,Ri(1)为根节点的旋转数据,Ri(t)(t=2,...,31)为除 了根节点之外的其他节点的局部坐标系下的旋转信息。根节点的平移数据决定 了人体运动的当前位置,根节点的旋转数据决定了人体的朝向,其他节点的旋 转信息代表了在父节点的局部坐标系下的关节点方向,这决定了人体的姿态。 所有的关节点采用树形结构组织起来的。在臀部节点是人体树形模型的根节点, 其他的节点是从根节点依次往下扩展形成的。本发明使用人体骨骼模型,人体 骨骼模型的节点代表人体关节,节点之间的连接代表人体骨骼,整体构成了一 个人体模型。该模型是由31个关节点组成的(有些关节点相邻太密集,甚至被 覆盖了,所以从图上看不到所有的关节点),每个关节点有3个旋转自由度,再 加上根节点3个平移自由度,一共有96个自由度。

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

1、选择了一组新的距离特征,提取的曲线特征能更好的反应人体运动的本 质特征。

2、最终得到的不同类型运动的分割点并不只是特征曲线上的极值点,而是 对其周围一定窗口范围的帧进行更加精确的判断,使最终得到的分割点更加精 确。

附图说明

图1本发明流程图。

图2人体骨骼模型图。

图3本发明六种运动类型图。

图4特征曲线及其标记结果图。

具体实施方式

图1所示:本发明包括以下步骤;

第一步,选择一组新的关节距离作为距离特征;

所述关节距离的计算方法是:首先将BVH文件中的保存的欧拉角转换成关 节点的绝对空间坐标,计算方法如下:

根据欧拉角的表示方法,子关节局部坐标系相对于父关节局部坐标系的转 换矩阵M=[RT],

所述R为局部坐标系下的旋转矩阵,R=rot(αz)rot(αy)rot(αx),(αzyx)为子 关节相对于父关节绕z,y,x轴的旋转角度;T为局部坐标系下的位移矩阵, T=[TxTyTz],(Tx,Ty,Tz)为子关节相对于父关节沿x,y,z轴的位移量;

求出子关节在其父关节的局部坐标系下的坐标Vi=M*Vi+1

所述Vi+1作为子关节在自身局部坐标系下的坐标,所述Vi为子关节在父关节 的局部坐标下的坐标;

继续求子关节在世界坐标系下的空间坐标,依次类推,此时设Vi+1作为子关 节在自身局部坐标系下的坐标,设Vi为子关节在世界坐标系下的坐标,则:

Vi(j)=M(root)*...*M(grandparent)*M(parent)*Vi+1(j),

其次根据欧式距离公式,求出相应关节点之间的距离:

|B(k)|=Fi-Fj=(xi-xj)2+(yi-yj)2+(zi-zj)2;

所述Fi(xi,yi,zi),Fj(xj,yj,zj)(i,j=1,...,31∩i≠j)为选择的关节点在世界坐标系下 的坐标值;

选择9个具有逻辑语义的人体关节距离作为距离特征,将其表示为 θ=(φ1,φ2,φ3,φ4,φ5,φ6,φ7,φ8,φ9),这样就将原始欧拉角保存的96维数据降到9维, 同时又能保存原始运动类型的特征;表1表示9个距离特征 θ=(φ1,φ2,φ3,φ4,φ5,φ6,φ7,φ8,φ9)及其逻辑语义

第二步.利用PCA方法对第一步求出的9个距离特征进行分析及进一步降 维,

所述PCA方法分析步骤如下:

步骤1:构建这9个距离特征样本的平均值

步骤2:计算这9个距离特征原始值与平均值的差值然后构建距 离特征的差值矩阵D=[Δθ1,....Δθ9];

步骤3:计算得到协方差矩阵C=DDT,计算协方差矩阵的特征值λ,以及相 应的特征向量L;

步骤4:提取特征向量构建了一组新的9维 主成分,其按贡献率从大到小的顺序排列;提取第一维主成分,也就是的最大 贡献率

步骤5:一个运动可以表示成为:

第三步.对第二步得到的运动的特征曲线采用Lowess平滑滤波方法对 其进行滤波去噪;

所述Lowess平滑滤波的方法是:

步骤1:根据MATLAB中的函数‘smooth(Y,’lowess’)’得到滤波后的 特征曲线signal;

步骤2:接下来就是对这条代表原始运动本质特征的曲线进行处理;

第四步.对第三步求出的滤波后的特征曲线signal,采用幅度检测算法进行 处理,得到初始的分割点及最终的分割点集,就可以将原始运动的运动类型分 割开。

所述幅度检测算法具体步骤如下:

步骤1:计算局部极值点;

所述计算局部极值点的方法:根据MATLAB中‘findpeak’函数得到局部极大 值,然后将数据反转得到局部最小值;然后合并,得到局部极值点;

步骤2:检测局部极值点两侧的曲线幅度,然后进行比较得到最小幅度和最 大幅度,如果最小幅度比最大幅度的δ倍还小,那么这个极值点就是变化大的幅 度点,也是潜在分割点;

步骤3:对上步求出的潜在分割点,设置循环检测潜在分割点之间间隔,假 如过密,则进行精简操作;如果不过密,则继续检测下一个潜在分割点;如此 下去,直到检测到最后的分割点为止。这样就得到了初始分割点集;

对上面得到的初始分割点集,再进行所述最终的分割点集的实现,具体步 骤如下:

设置循环,从初始分割点集中的第2个初始分割点p2开始到最后一个潜在 分割点,执行如下操作:

步骤1:定义一个围绕着第二个极值点p2的窗口长度2α+1,也就是 [p2-α,p2+α]帧,然后计算[p2-α,p2+α]中的每帧到前一个聚类[p1:p2-α]帧间距 离D。目的是找到[p2-α,p2+α]的帧到前一个聚类的最不相似帧,作为下一个聚 类开始帧。选择欧式距离作为相似帧度量;欧式距离定义如下:

Dsimilar=(Fp,Fq)=(p1-q1)2+(p2-q2)2+...+(pn-qn)2,n=96;

步骤2:进行相似度判断,如果[p2-α,p2+α]帧的Dsimilar(Fp,Fq)小于阈值β, 在相应的数组中标记为1,否则标记为0;所述帧标记为1则属于前一个聚类, 否则属于后一个聚类)

步骤3:统计数组中标记为1的个数为N,重新计算精确的分割点p-α+N。 没有到最后一个潜在分割点就返回步骤1,否则循环结束得到最终分割点集。

图2所示:采用MATLAB软件导出的人体骨骼模型图;节点代表人体关节, 节点之间的连接代表人体骨骼,整体构成了一个人体模型。该模型是由31个关 节点组成的(有些关节点相邻太密集,甚至被覆盖了,所以从图上看不到所有 的关节点),每个关节点有3个旋转自由度,再加上根节点3个平移自由度,一 共有96个自由度。

本发明的实施例是在以本发明技术方案为前提下进行实施的,给出了详细 的实施方式和具体的操作过程,但本发明的保护范围不限于下述实施例。实例 样例是从CMU数据库中选取一组含有六种运动类型的运动(1330.bvh)进行 验证。

图3所示:本发明六种运动类型图。包含“(a)代表跳,(b)代表两侧转,(c)代 表弯曲胳膊和腿,(d)下蹲,(e)慢跑,(f)站立”六种运动类型。

具体实施的主要程序过程为:

步骤1:采集原始数据。原始数据BVH存储格式如下:

Frames:2466

Frame Time:.0083333

0.1899 16.3812 -2.5432 0 0 0 0 0 0 -17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0.1899 16.3812 -2.5432 1.9831 -6.1819 -10.9896 0.0000 0.0000 0.0000 -7.1204 -8.7666 -5.9064 9.4219 17.0717 57.5379 1.9456 -11.4562 -25.1418 2.2277 -9.3250 -26.8175 0.0000 0.0000 0.0000 7.1883 23.9415 3.0136 -7.6480 -15.8542 51.2847 -3.2349 0.3256 -34.0416 -1.9992 8.8645 -25.3724 -2.7374 -0.8259 13.7264 -0.1427 -1.5066 2.4554 1.6641 -0.7031 -5.0344 -6.1360 -0.6152 -8.2804 7.1565 -0.6811 6.1326 3.1416 -0.1683 3.2176 0.0000 0.0000 0.0000 12.3209 -31.8502-40.3952 114.9666 -57.5085 -81.4409 -0.0000 0.0000 -24.3264 37.0344 10.5999 7.9016-7.1250 0.0000 -0.0000

...............

...............

MOTION以下是数据信息,Frames为帧数,但其中,第一帧为初始化帧,可 以不予以考虑,所以本发明采用的帧数为2465。Frames Time为帧间隔时间。 以下的'CHHANNELS'是平移和旋转数据。

步骤2:读入BVH数据,将欧拉角信息保存到channels中。

[skel,channels]=bvhReadFile(*.bvh);

步骤2:将BVH文件中的欧拉角数据转换成绝对坐标absCoordinate。

absCoordinate=convertAbscoord(skel,channels);

步骤3:根据欧拉距离计算本专利定义的9个距离特征dFeatures。

dFeatures=selectDistance(absCoordinate);

步骤4:采用PCA对其进一步分析,得到的第一维主成分,作为特征曲线 y。

y=PCA(dFeatures);

步骤5:对这个特征曲线进行Lowess平滑滤波,得到滤波后的特征曲线 signal。

signal=smooth(Y,ω,’lowess’);

步骤6:求取特征曲线signal的局部极值点保存到loc。

loc=findPeak(signal);

步骤7:曲线幅度检测算法得到初始的分割点集seg。

seg=detectsAmplitude(Loc,δ,γ);

MATLAB具体代码如下:

1.count=1;

2.for i=2:length(loc)-1

3.swing1=abs(signals(loc(i))-signals(loc(i-1)));

4.swing2=abs(signals(loc(i))-signals(loc(i+1)));

5.if swing1>swing2

6.maxswing=swing1;minswing=swing2;

7.else maxswing=swing2;minswing=swing1;

8.if minswing<=δ*maxswing%amplitude detect.multiples method better

9.tempseg(count)=loc(i);

10.p(count)=i;

11.count=count+1;

12.end

13.tempseg=[1,tempseg,length(signals);%plus the first frame and last frame

14.count=1;

15.j=2;seg(1)=tempseg(1);p=seg(1);

16.for i=2:length(tempseg)

17.a1=tempseg(i);

18.a2=p;

19.if abs(a2-a1)>γ%minimum interval frames between adjacent motions

20.seg=a1;

21.count=count+1;

22.end

步骤8:精确的检测算法获得最终的分割点集points。

points=pecriseSeg(seg,α,β);

MATLAB具体代码如下:

1.for f=1:size(seg,2)-1%segmentation points

2.k=1;

3.p1=seg(f);p2=seg(f+1);

4.n1=p2-α;n2=p2+α;

5.for j=n1:n2%adjacent frames

6.for i=p1:n1%the frames of the former class

7.sdif(i)=norm(channels(i,:)–channels(j,:));

8.end

9.sdiff(k,:)=sdif(1,p1:n1-1);

10.k=k+1;

11.end

12.if sdiff(k,i)<β%the similar threshold

13.flag=1;

14.if find(flag==1)>=1

15.p=length(find(flag==1))+n1;%recalculated the split points

16.seg(f+1)=p;

17.end

步骤9:对本发明得到的分割点与手工得到的分割点进行比较。本文采用的 手工分割点,经过多人反复试验最终才确定的,排除了个人主观因素干扰。

图4所示:特征曲线及其标记结果图。包括特征曲线、滤波后的特征曲线、 极值点、初始分割点、最终分割点。具体操作分别由上面的步骤4-步骤8完成。 特征曲线是本发明提取的9个距离特征经过PCA进一步分析,提取第一维主成 分得到的,能够很好的反应各个运动类型的本质特征;滤波后的特征曲线是为 了进一步去除噪声,采用Lowess平滑滤波得到的;极大值点与极小值点分别采 用findPeak函数得到的;初始分割点是由曲线幅度检测算法得到的;最终分割 点是由精确的检测算法得到的。

表1.9个距离特征θ=(φ1,φ2,φ3,φ4,φ5,φ6,φ7,φ8,φ9)及其逻辑语义

表2是最初分割点与最终分割点的比较。表3是本发明分割方法与手工分割 的对比结果图。

表2.最初分割点与最终分割点的比较

  最初分割   1   196   800   1384   1966   2425   2465   最终分割   1   208   803   1364   1949   2384   2465

表3.本发明与手工分割的比较

经过测试,本发明的方法得到的分割点与手工得到的分割点的误差基本都 在十帧之内,分割结果更加精确。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号