基于体素的三维人体运动跟踪方法

文档序号:6597676阅读:343来源:国知局
专利名称:基于体素的三维人体运动跟踪方法
技术领域
本发明属于计算机视觉领域,具体是一种基于体素的三维人体运动跟踪方法。
背景技术
三维人体运动跟踪是当前计算机视觉领域研究的一个热点和难点。传统的人体运动跟踪方法大多是基于标记点的跟踪,这类系统在人体各个关节部位设置标记点,然后通过跟踪这些标记点的轨迹来精确跟踪三维人体的运动。由于基于可视外壳建模技术的发展,能够在无标记的状态下通过多视点的图像序列重建出人体体素模型,使用体素模型数据进行姿态估计和人体运动跟踪是一种比较新颖的方法。 发明专利CN 101154289 "基于三目像机的人体运动跟踪方法"首先通过三目相机提取人体表面体素点,使用圆筒定义人体骨架模型,然后通过优化人体骨架参数使得骨架圆筒包含的表面体素点最多,从而达到跟踪人体运动的目的。由于该算法事先人为规定了圆筒半径的值,因而在实际求解圆筒包含的体素点时受个体之间的差异影响(例如人的体形,手臂的大小,腰的大小等),具有一定的局限性。 Clement Menier等人在文献"3D skeleton-based body pose recovery"中提
出一种基于网格模型的人体运动跟踪方法。该方法定义由关节点以及关节点构成的线段来表示人体骨架模型,然后提取网格模型的中轴线上点的集合,采用最大后验估计方法
(Maximum aposteriori)来优化骨架参数,实现了人体的运动跟踪。该方法在优化人体骨架参数时只是孤立地考虑当前帧的影响,并没有考虑人体运动的时间相关性,因此在迭代优化骨架参数收敛速度慢,不能够快速地计算出当前帧的骨架参数。

发明内容
本发明针对现有方法的不足,提出一种基于体素的三维人体运动跟踪方法,使其
能够自动初始化人体骨架模型,并且具有快速、无标记、稳定性好、适应范围广的特点。
本发明提出的一种基于体素的三维人体运动跟踪方法,包括以下步骤 1、体素建模使用基于可视外壳的体素建模方法,从多视点的图像序列重建出人
体体素模型。 2、求解关键体素点集合对人体体素模型进行三维距离变换,得到三维距离场,并定位出距离场中局部极大点的体素,即关键体素点。 3、初始化人体骨架模型定义人体骨架模型,并根据初始帧的体素模型自动初始化人体骨架模型中骨架线段的长度。
4、求解初始帧骨架参数规定初始帧为特定的人体姿态,求解初始帧骨架参数。
5、求解后续帧骨架参数根据人体骨架模型,以及前一帧骨架参数,使用Levenberg-Marquard算法迭代优化当前帧的骨架参数,使得关键体素点集合中所有点到人体骨架模型的距离平方之和达到最小值。


图1为基于体素的三维人体运动跟踪的流程示意图; 图2为相机和物体的空间位置示意图; 图3为自定义的人体骨架模型图; 图4为骨架参数示意图; 图5为人体骨架比例关系图。 具体实施方法 下面结合附图对本发明的实施作详细说明本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和过程,但本发明的保护范围不限于下述的实施例。
1、体素建模如图2所示,在一个场景当中布置5个相机,通过各个相机得到人体的二维图像,使用这些图像来重建人体三维体素模型,其详细步骤如下 (1)建模预处理首先将相机的交集空间用一个长方体表示,并按X,Y,Z三个方向均分成L*M*N个小立方体(称为体素Voxel),并且依次按照X,Y,Z方向从0开始为每个小立方体编号。计算每个小立方体的中心(x,y,z)在每个相机的图像坐标系下的投影点坐标(u, v),并将其保存在一个线性表中,其计算公式如下
Rpf^yfZf if,其在Rp为3*4的投影矩阵,由相机标定得出, (2)建模并行判断每个体素在每个相机图像坐标系下投影点是否落在图像前景轮廓内,若不是则体素不属人体模型,将该体素值置为O,否则置为1。
2、求解关键体素点集合过程的如下 (1)将人体体素模型中的体素划为内部体素与边界体素边界体素定义为体素模型中值为1的体素,且至少存在一个值为0的邻接体素。人体体素模型中所有的非边界体素为内部体素。 (2)距离变换即计算体素模型中内部体素到体素模型边界体素的最小距离。根据距离的不同定义可以将距离分为欧氏距离和非欧氏距离,本发明采用欧氏距离。对于每个内部体素P,计算其到边界体素的最小距离,记为DT(p)。本发明采用Saito,Toriwaki的三维距离变换算法,能够在线性时间内求得一个三维距离场。 (3)求解关键体素点关键体素点定义为距离场中局部极大点。对于任意内部体素P,Q是P的所有邻接点组成的集合,若对于VcisQ,.DT(p) 〉DT(q),则q为局部极大点。三维空间中邻接点分为6-邻域,18-邻域和26-邻域,本发明采用6-领域。因此求解关键体素点集合时,只需判定每个内部体素是否为局部极大点,若是则直接加入到关键体素点集合内。记关键体素点集合为 J = {p。, Pl. pn—" Pi为关键体点,O《i < n, n为集合的大小}。
3、初始化人体骨架模型过程如下 (1)自定义人体骨架模型。如图3所示为本发明实施的人体骨架模型,它由9个关节点以及12线段组成。其中根节点为人体骨架模型局部坐标系的原点,控制整个骨架在世界坐标系的空间旋转量和空间平移量。本发明按图3标示关节点的ID以及每段骨架线段的ID。骨架关节点和骨架线段的关系根节点的平移以及旋转控制骨架线段9-ll,关节点0-9分别控制骨架线段0-9。记骨架线段的集合为S二 {8。,81...811,&为骨架线段1}。
5每个骨架线段都可以绕父关节点旋转来完成姿态的调整,从而达到人体运动跟踪的目的。
(2)确定人体骨架模型的参数。包括每段骨架线段的长度、根节点在世界坐标系的平移量和旋转量,以及每段骨架线段绕父关节点的旋转量。本发明采用6个参数来表示根节点的平移量和旋转量。对于每段骨架线段绕父关节点的旋转参数如图4所示,可以用球面坐标系(r, e,A)表示,其中r表示骨架线段长度。 (3)规定初始帧的人体姿态正向站立,双臂水平伸开且平行于世界坐标系的X轴或Y轴,本发明选用平行于Y轴。 (4)初始化人体骨架长度初始帧人体体素模型中所有体素Z轴的最大值定为人体的身高h,依据人体骨架模型的比例关系(如图5),计算各段骨架的长度,用于初始化人体骨架模型中骨架线段的长度(例如骨架线段s9的长度初始化为0. 25h,骨架线段sn的长度初始化为0. 124h)。 4、求解初始帧骨架参数由于初始帧是在特定的人体姿态下,则可以比较简单地求出根节点相对于世界坐标下的旋转量以及每段骨架的绕父关节点的旋转量。显然,根节
点相对世界坐标下的旋转量为o,对于骨架线段绕父关节点的旋转参数e ,攀也比较容易求
出,例如骨架线段&的e =90° ,,=-90'。因此,初始帧骨架参数关键在于求解根节点相对于世界坐标系的平移量,即根节点在世界坐标系的坐标。本发明通过定位左肩关节点和右肩关节点的位置来确定根节点的坐标,即左右肩关节点的中点为根节点的坐标,其求解根节点在世界坐标系下的坐标的过程如下 (1)求解根节点的近似Y轴坐标由于初始帧的姿态为正
向站立,手臂水平伸展且平行于Y轴,则根节点的近似Y轴坐标值
,=i *《体素^l!ff有体素y證+体素襖型瞎体素JWJ'记为ry。 (2)定位右肩关节点使用二分查找的方法确定右肩关节点周围的体素,然后求取周围体素的中心即为右肩关节点。 St印l.使用平面y = ry切割初始帧的体素模型,统计所有相交且Z值大于0. 53h的体素,并计算这些体素在y = ry平面内的包围盒,记S为包围盒的面积,称为平面切人体体素模型上半身体素的横截面积。 St印2.右肩关节点的Y轴坐标:Sy =,^皿84|>),并计算平面y = Sy切人体体素
模型半身体素的横截面积S'。 St印3.若ry_ymin < 1则转到St印5。 St印4.若S'《垂S,则ymin = Sy ;否则ry = Sy。转到St印2。 St印5.计算平面y = sy与人体体素模型相切的所有上身体素的中心即为右肩关节点。 (3)定位左肩关节点方法同定位右肩关节点类似。
(4)右肩关节点和左肩关节点的中心,即为根节点的坐标。 5、求解后续帧骨架参数在人体模型和骨架模型的匹配的过程中,可以通过前一帧的跟踪结果,并利用此帧根节点的空间位置和各段骨架线段绕父关节点的旋转参数来跟踪后续帧的人体运动。通过Levenberg-Marquard算法,使用前一帧骨架参数作为当前帧骨架参数的初始值,可以快速地计算出当前帧的骨架参数。定义骨架参数的评价函数为关键
6体素点集合J中所有点到骨架模型的距离平方之和,记为F(J, S),具体计算公式如下
F,S^= 2 d(p-)2 其中J为关键体点集合,S为人体骨架模型 d(Pi, S) = Min(d(Pi, Sj) , Sj为骨架线段j,O《j < 12}
(Pi到骨架线段s,所在直线的距离,若^p^B < 9G'且^p,BA < 90'
其中A, B为骨架线段Sj的两个端点。 在进行优化的过程中,当F(J, S)达到最小值时则认为此时跟踪的效果最佳。因此,人体运动跟踪等价于在所有骨架参数的可行域内寻找合适值使得F(J, S)达到最小值的骨架参数。由于骨架参数多达24个,且评价函数含有很多局部极值,传统优化算法难以找到全局最优点,故利用Levenberg-Marquard算法(LM算法)反复迭代求解最优骨架参数,从而达到人体运动跟踪的目的。LM算法迭代优化骨架参数的详细步骤如下
St印l.定义参数1 =0》01 .,%3〗1",其中鼓0,參i…^表示根节点平移量以及分别绕X, Y,Z轴的旋转量;^,斷表示骨架段s。在父关节点为原点的局部坐标系下的e,
,l3g, ^表示骨架段^在父关节点为原点的局部坐标系下的e,爭;依次类推。为了和LM
算法中最小值函数在形式保持一致,令tw -,f伍s)=,2gr^《PpSf; St印2.设定X为前一帧的骨架参数X。, X = X。; St印3.通过参数X计算骨架关节点的坐标,以及骨架线段的直线方程; St印4.计算关键体素点集合中每个点到每段骨架线段的距离,并记&为关节点Pi
到骨架线段集合S中最小距离的骨架线段ID,即《P,) = ddvs,〕
St印5.计算f (X),公式如下
锁=l地S) d(p =垂2 d(Ps,s%):
St印6.计算f (X)的Jacobian矩阵JM,公式如下
, 一雜纟 a,
St印7.计算f(X)的Hessian矩阵HM,公式如下HM = JMT*JM
St印8.计算V f(X),公式如下
▽ f (X) = JMT* [d (Po, S) , d (Pl , S) d (pn—! , S) ] t
St印9.计算AX,公式如下
AX =-(HM+A I)* ▽ f (X),其中A为固定常数
St印lO.更新X, X = X+AX
7CN
St印ll.转到St印3,直到X趋于稳定,
权利要求
一种基于体素的三维人体运动跟踪方法,包括以下步骤(1)体素建模使用基于可视外壳的体素建模方法,从多视点的图像序列重建出人体体素模型;(2)求解关键体素点集合对所述人体体素模型进行三维距离变换,得到三维距离场,并定位出距离场中局部极大点的体素点,即关键体素点;(3)初始化人体骨架模型定义人体骨架模型,包括9个关节点和12条骨架线段,并根据初始帧的体素模型自动初始化人体骨架模型中骨架线段的长度;(4)求解初始帧骨架参数规定初始帧为特定的人体姿态,即正向站立、双臂水平伸开且平行于世界坐标系的X轴或Y轴,并求解初始帧骨架参数;(5)求解后续帧骨架参数根据人体骨架模型,以及前一帧骨架参数,使用Levenberg-Marquard算法迭代优化当前帧的骨架参数,使得关键体素点集合中所有点到人体骨架模型的距离平方之和达到最小值。
2. 如权利要求1所述的基于体素的三维人体运动跟踪方法,其采用的体素建模过程特征在于(1) 在人体体素建模时,首先进行预处理相机的交集空间用一个长方体表示,按X, Y,Z三个方向均分成!^M承N个小立方体,每一个小立方体为一个体素Voxel,然后依次按照X,Y, Z方向从0开始为每个小立方体编号;计算每个小立方体的中心(x, y, z)投影到每个相机图像坐标系下的坐标(u, v),并保存在一个线性表中;(2) 在体素建模过程中,并行判断每个体素在每个相机图像坐标系下的投影点是否落在图像前景轮廓内,若不是则体素不属于人体模型,将该体素值置为O,否则置为1。
3. 如权利要求1所述的基于体素的三维人体运动跟踪方法,其中求解关键体素点集合过程特征在于(1) 在求解关键体素点集合时,首先将人体体素模型中的体素划为边界体素和内部体素;(2) 求解每个内部体素到边界体素的最短距离,即三维距离变换,得到一个三维距离场;(3) 定义关键体素点为三维距离场中局部大点。
4. 如权利要求1所述的基于体素的三维人体运动跟踪方法,其中初始化人体骨架模型的过程特征在于(1) 自定义人体骨架模型由9个关节点组成的12条线段来表示人体骨架模型;(2) 确定人体骨架模型的参数,包括每段骨架线段的长度、根节点在世界坐标系的平移量和旋转量,以及每段骨架线段绕父关节点的旋转量;(3) 规定初始帧的人体姿态正向站立,双臂水平伸开且平行于世界标系的X轴或Y轴;(4) 在初始化人体骨架模型时,根据初始帧的体素模型,计算人的身高,然后依据解剖学的人体骨架模型的比例关系,计算各段骨架的长度,用于初始化人体骨架模型中骨架线段的长度。
5. 如权利要求1所述的基于体素的三维人体运动跟踪方法,其中求解初始帧骨架参数的过程特征在于(1) 在规定的特定姿态下,求解人骨架模型根节点的平移量;(2) 根节点的平移量,即根节点的坐标,定义为左右肩关节点的中点;(3) 在定位左右肩关节点时,采用二分查找方法定位左右肩关节点周围的体素,并规定左右肩关节点周围体素的中心为左右肩关节点。
6.如权利要求1所述的基于体素的三维人体运动跟踪方法,其中求解后续帧骨架参数过程特征在于(1) 根据时间相关性,将后续帧骨架参数的初始值设定为前一帧的骨架参数;(2) 采用Levenberg-Marquard算法迭代优化当前帧骨架参数,使得关键体素点集合中所有点到骨架模型距离平方之和最小;(3) 骨架参数的评价函数定义为关键体素点集合中所有点到骨架模型的距离平方之和,记为F (J, S),具体公式如下其中J为关键体点集合,S为人体骨架模型;d(Pi,S) =Min{d(Pi, Sj), Sj为骨架线段j,O《j < 12}'Pi到骨槃线段s》所在直线的距离'若Z.PiAB <卯'且AftBA < 90其中A, B为骨架线段s,.的两个端点。
全文摘要
一种基于体素的三维人体运动跟踪方法。其步骤如下(1)输入多视点图像序列,使用基于可视外壳的体素建模方法,得到人体的三维体素的集合,即体素模型;(2)对三维体素模型进行距离变换,得到三维距离场中局部极大点的体素的集合,即关键体素点集合;(3)初始化人体骨架模型定义骨架模型以及参数,并初始化人体骨架模型中骨架线段的长度;(4)规定初始帧为特定的人体姿态,即正向站立、双臂水平伸开且平行于世界坐标系的X轴或Y轴,计算初始帧骨架参数;(5)根据人体骨架模型,以及前一帧骨架参数,计算关键体素点集合中所有点到人体骨架模型的距离平方之和,采用Levenberg-Marquardt算法(LM算法)迭代优化骨架参数使得距离平方和达到最小,从而达到人体运动跟踪的目的。本发明实现了多视点图像下三维人体运动跟踪,无需标记点,能够自动初始化人体骨架模型,从而解决因个体体形差异等造成的跟踪不准确的问题,并利用时间相关性保证了三维人体运动跟踪的快速与稳定性。
文档编号G06T7/20GK101789126SQ20101010156
公开日2010年7月28日 申请日期2010年1月26日 优先权日2010年1月26日
发明者吴威, 周忠, 张淑军, 王志伟, 赵沁平 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1