CN113658319A - 一种异构骨架之间的姿势迁移方法及装置 - Google Patents
一种异构骨架之间的姿势迁移方法及装置 Download PDFInfo
- Publication number
- CN113658319A CN113658319A CN202110535769.3A CN202110535769A CN113658319A CN 113658319 A CN113658319 A CN 113658319A CN 202110535769 A CN202110535769 A CN 202110535769A CN 113658319 A CN113658319 A CN 113658319A
- Authority
- CN
- China
- Prior art keywords
- skeleton
- target
- matrix
- node
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开的一种异构骨架之间的姿势迁移方法及装置,源骨架为通过现有技术手段直接采集用户的骨架,通过节点匹配、反镜像变换、全局到局部变换转换和坐标空间转换,把采集到的姿势,迁移到目标骨架上,从而可以应用来控制三维模型,能够有效转换两种异构骨架的骨架信息,完成骨架姿势迁移,虚拟现实厂商不需要对用户骨架进行采集,只需要将源骨架信息迁移到三维模型目标骨架就能实现控制三维模型运动,降低了三维模型构建的成本。
Description
技术领域
本申请涉及三维模型骨架迁移技术领域,尤其涉及一种异构骨架之间的姿势迁移方法及装置。
背景技术
随着文化产业的繁荣,越来越多的智能设备和技术应用在智慧文化领域。当前,计算机图形技术,可以应用到设计、娱乐、教育、训练等多个领域。而对现实人体的动作进行采集、识别、应用,在这些领域中,应用广泛。特别是在虚拟现实、游戏或动画等制作过程中,完整地给虚拟人物赋予动作功能是一个庞大的工作,因此,经常会通过采集现实人体的动作数据,比如:躯体、四肢、脸部的动作,然后把动作迁移都虚拟人物上,以此来达到既逼真又高效的效果。人体的姿势动作采集的方式主要有两类。一种为基于可穿戴设备的动作识别技术,另一种是基于计算机视觉技术。
姿势采集的方法目前已经通过多种方式实现了,如通过体感周边外设Kinect通过人体行为模型的构建和动作数据的分类识别采集骨架信息,,直接采集到的骨架也称为原骨架。各种方法获取的姿势描述信息也不尽相同,即使都是以骨架的方式描述,由于所基于的原始数据不一样,骨架描述也没有统一的格式。另一方面,在虚拟现实中,需要使用到多种多样的三维模型,称为目标骨架。这些模型可能出自不同艺术家、厂商,它们的骨架也不尽相同,跟前面所述的采集所得的骨架经常也不一样,实际应用是基于这些三维模型应用开发,如果每个厂商的三维模型骨架都需要通过外设采集,需要增加较多的设备,成本较高。因此如果将现有的体感周边外设如Kinect采集到的骨架信息迁移到这些虚拟现实厂商的三维模型骨架,既将采集到的源骨架信息迁移到目标骨架,将能降低三维模型构建的成本。在进行骨架信息迁移时,特别是当这两个骨架是异构时,不能通过简单的变换实现姿势迁移,现有技术中缺乏能够有效转换两种异构骨架的迁移方法。
发明内容
本申请实施例提供一种异构骨架之间的姿势迁移方法及装置,能够有效转换两种异构骨架的骨架信息,完成骨架姿势迁移。
有鉴于此,本申请提供了一种异构骨架之间的姿势迁移方法,包括以下步骤:节点匹配,选取匹配节点,将源骨架和目标骨架中存在对应的节点进行匹配;反镜像变化,将所述源骨架的旋转矩阵Rk点乘反镜像变化矩阵M获取反镜像旋转矩阵R’k;全局变换转局部变换,将所述反镜像旋转矩阵R’k转换为局部相对变换矩阵R”k;坐标空间转换,进行模型空间转换,将所述局部相对变换矩阵R”k转换为目标骨架的旋转变换矩阵R’s;计算迁移后所述目标骨架中的骨骼位置B’s(i),若所述目标骨架的节点与所述源骨架的节点存在匹配,则B’s(i)=Bs(i)*R’s(i)*Ts(i)*Ws(Ps(i));若所述目标骨架的节点与所述源骨架的节点没有存在匹配,则B’s(i)=Bs(i)*Rs(i)*Ts(i)*Ws(Ps(i));其中,Bs(i)=[0,0,0,1;1,0,0,1],为标准骨骼;i为目标骨架节点的序号;Ts(i)为目标节点的平移矩阵;Rs(i)为目标节点的旋转矩阵,Ws(Ps(i))为目标节点的父节点的全局变换。
可选地,所述反镜像变化矩阵M=[1,-1,-1,1;-1,1,1,1;-1,1,1,1;1,1,1,1]。
可选地,所述源骨架的旋转矩阵Rk由源骨架输出的每个节点的四元组数据Qk(i)转换得到。
可选地,所述目标节点的平移矩阵Ts(i)和旋转矩阵Rs(i)分别由所述目标骨架的节点的平移向量(dxi,dyi,dzi)和四元组数据Qs(i)转换得到。
可选地,所述局部相对变换矩阵R”k的转换方法为:R”k(i)=R’k(i)*Inv(R’k(Pk(i))),其中,Pk(i)表示取出与i对应的父节点序号,函数Inv(m)是求传入参数矩阵m的逆。
可选地,所述源骨架为使用Kinect采集的用户的骨架。
可选地,所述目标骨架为DirectXSDK中使用的三维模型Soldier.sdkmesh。
可选地,所述将源骨架和目标骨架中存在对应的节点进行匹配的过程为:{SpineBase,Root},{SpineMid,Spine2},{Neck,Head},{Head,Skull},{ShoulderLeft,L_Clavicle},{ElbowLeft,L_UpperArm},{WristLeft,L_Forearm},{HandLeft,L_Hand},{ShoulderRight,R_Clavicle},{ElbowRight,R_UpperArm},{WristRight,R_Forearm},{HandRight,R_Hand},{KneeLeft,L_Thigh1},{AnkleLeft,L_Knee2},{KneeRight,R_Thigh},{AnkleRight,R_Knee},{SpineShoulder,Neck};其中每一组前者为Kinect骨架的节点名称,后者为Soldier骨架的节点名称。
可选地,在Soldier骨架中没有匹配到的节点使用该节点在Soldier自由状态下的局部变换矩阵进行转换。
本申请还提出一种异构骨架之间的姿势迁移装置,包括:节点匹配模块,用于选取匹配节点,将源骨架和目标骨架中存在对应的节点进行匹配;反镜像变化模块,用于将所述源骨架的旋转矩阵Rk点乘反镜像变化矩阵M获取反镜像旋转矩阵R’k;局部变换模块,用于将所述反镜像旋转矩阵R’k转换为局部相对变换矩阵R”k;空间转换模块,用于进行模型空间转换,将所述局部相对变换矩阵R”k转换为目标骨架的旋转变换矩阵R’s;迁移模块,用于计算迁移后所述目标骨架中的骨骼位置B’s(i),若所述目标骨架的节点与所述源骨架的节点存在匹配,则B’s(i)=Bs(i)*R’s(i)*Ts(i)*Ws(Ps(i));若所述目标骨架的节点与所述源骨架的节点没有存在匹配,则B’s(i)=Bs(i)*Rs(i)*Ts(i)*Ws(Ps(i));其中,Bs(i)=[0,0,0,1;1,0,0,1],为标准骨骼;i为目标骨架节点的序号;Ts(i)为目标节点的平移矩阵;Rs(i)为目标节点的旋转矩阵,Ws(Ps(i))为目标节点的父节点的全局变换。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请的一种异构骨架之间的姿势迁移方法,包括以下步骤:节点匹配,选取匹配节点,将源骨架和目标骨架中存在对应的节点进行匹配;反镜像变化,将所述源骨架的旋转矩阵Rk点乘反镜像变化矩阵M获取反镜像旋转矩阵R’k;全局变换转局部变换,将所述反镜像旋转矩阵R’k转换为局部相对变换矩阵R”k;坐标空间转换,进行模型空间转换,将所述局部相对变换矩阵R”k转换为目标骨架的旋转变换矩阵R’s;计算迁移后所述目标骨架中的骨骼位置B’s(i),若所述目标骨架的节点与所述源骨架的节点存在匹配,则B’s(i)=Bs(i)*R’s(i)*Ts(i)*Ws(Ps(i));若所述目标骨架的节点与所述源骨架的节点没有存在匹配,则B’s(i)=Bs(i)*Rs(i)*Ts(i)*Ws(Ps(i));其中,Bs(i)=[0,0,0,1;1,0,0,1],为标准骨骼;i为目标骨架节点的序号;Ts(i)为目标节点的平移矩阵;Rs(i)为目标节点的旋转矩阵,Ws(Ps(i))为目标节点的父节点的全局变换。
源骨架为通过现有技术手段直接采集用户的骨架,通过节点匹配、反镜像变换、全局到局部变换转换和坐标空间转换,把采集到的姿势,迁移到目标骨架上,从而可以应用来控制三维模型,能够有效转换两种异构骨架的骨架信息,完成骨架姿势迁移,虚拟现实厂商不需要对用户骨架进行采集,只需要将源骨架信息迁移到三维模型目标骨架就能实现控制三维模型运动,降低了三维模型构建的成本。
附图说明
为了更清楚地表达说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例中异构骨架之间的姿势迁移方法的步骤流程图;
图2为本说明书实施例中Kinect骨架示意图;
图3为本说明书实施例中Soldier骨架示意图;
图4为本说明书实施例中反镜像变换的效果示意图;
图5为本说明书实施例中实验结果的处理效果图;
图6为本说明书实施例中异构骨架之间的姿势迁移装置的模块框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,一种异构骨架之间的姿势迁移方法,包括以下步骤:节点匹配,选取匹配节点,将源骨架和目标骨架中存在对应的节点进行匹配;反镜像变化,将源骨架的旋转矩阵Rk点乘反镜像变化矩阵M获取反镜像旋转矩阵R’k;全局变换转局部变换,将反镜像旋转矩阵R’k转换为局部相对变换矩阵R”k;坐标空间转换,进行模型空间转换,将局部相对变换矩阵R”k转换为目标骨架的旋转变换矩阵R’s;计算迁移后目标骨架中的骨骼位置B’s(i),若目标骨架的节点与源骨架的节点存在匹配,则B’s(i)=Bs(i)*R’s(i)*Ts(i)*Ws(Ps(i));若目标骨架的节点与源骨架的节点没有存在匹配,则B’s(i)=Bs(i)*Rs(i)*Ts(i)*Ws(Ps(i));其中,Bs(i)=[0,0,0,1;1,0,0,1],为标准骨骼;i为目标骨架节点的序号;Ts(i)为目标节点的平移矩阵;Rs(i)为目标节点的旋转矩阵,Ws(Ps(i))为目标节点的父节点的全局变换。
本实施例的源骨架为通过现有技术手段直接采集用户的骨架,通过节点匹配、反镜像变换、全局到局部变换转换和坐标空间转换,把采集到的姿势,迁移到目标骨架上,从而可以应用来控制三维模型,能够有效转换两种异构骨架的骨架信息,完成骨架姿势迁移,虚拟现实厂商不需要对用户骨架进行采集,只需要将源骨架信息迁移到三维模型目标骨架就能实现控制三维模型运动,降低了三维模型构建的成本。
为了便于深入了解本实施例的具体实现步骤,下面结合特定源骨架和目标骨架的迁移进行说明。
首先对选取的特定源骨架和目标骨架进行说明。
在本实施例中源骨架采用Kinect采集的骨架,简称Kinect骨架,由于Kinect的价格已经能够被一般的用户所接受,并且它所采集到骨架信息也被用到虚拟现实应用中,比如:游戏,因此,本文使用Kinect 2.0作为数据采集设备,采集到的骨架作为姿势迁移的源骨架。另一方面,许多三维游戏基于Direct3D开发,使用DirectX SDK中自带的三维模型*.sdkmesh文件具有代表性,具体以Soldier.sdkmesh为例,因此,本文使用Soldier模型的骨架作为姿势迁移的目标骨架,简称Soldier骨架。
Kinect 2.0通过采集和数据分析,正常情况下,可以对当前人体获得25个关节点。Kinect骨架参照图2。图中的关节名称采用Kinect开发包中带的序号和名称来标识。Kinect采集到的关节信息,是从镜像的角度来描述的。因此,图1给出的是一个正面朝着读者的人体骨架,但是人体左边的关节在图的左边,而右边的关节在图的右边。
Kinect输出的骨骼信息,是基础约定:把骨骼的初始位置为沿着+Y轴,骨骼的向上的方向为+Z轴方向。设第i个节点对应的骨骼的初始位置为Bk(i)=[0,0,0,1;0,1,0,1],骨骼树的节点间的父子关系[i,Pk(i)],定义了骨骼之间的连接关系。由Kinect输出的每个节点i的四元组数据Qk(i),转换得到旋转矩阵Rk(i)是全局的,还有每个节点i的偏移量(dxi,dyi,dzi),构造出来的平移矩阵Tk(i)也是全局的。不需要依靠骨骼的父子关系来累乘,就可以得到骨骼的旋转矩阵。基于这些约定,以及输出,把骨骼从初始位置Bk(i),经过几何变换到目标位置,得到骨骼的位置B’k(i),可以如式1。
B’k(i)=Bk(i)*Rk(i)*Tk(i) (1)
其中,i∈[0,24],共有25个节点(从0开始计数),指定了25个父子关系,但是根节点,即第0号骨骼SpineBase,比较特殊,其父节点为空。它确定了一个根位置。该位置在身体上对应的部位为臀部附近。
根据任一个普通父子关系,可以确定一块骨骼。根据父节点,可以找到当前骨骼的起位置,即父节点的止位置,就可以构造平移矩阵。骨骼长度可以通过骨骼的起止位置计算。若只是为了显示出骨骼,只要把各个节点位置,根据父子关系连线就可以了,不用计算骨骼长度。但是若想计算一下缩放矩阵,就得计算长度。
参见图3,Soldier骨架处于自由状态的姿势。由于骨架比较多,比较密集,所以不把序号和名称标上。这些可以在模型文件中读到。图中的连线是把标准骨骼中的起点[0,0,0,1]的变换结果作为骨骼块的起关节,再根据节点之间的父子关系[i,Ps(i)],把父节点的起关节和子节点的起关节连在一起,绘制出来。
Soldier模型的骨架的初始位置,是沿着+X轴。在Direct3D的例子程序中,一般采用嵌套的方式遍历各骨骼节点,从躯干的主骨骼开始,先兄弟后子孙。
Soldier模型的66个序号(节点),每个序号对应有一个平移向量(dxi,dyi,dzi)和一个表示旋转的四元组Qs(i)。通过它们可以计算得到一个平移矩阵Ts(i)和一个旋转矩阵Rs(i),对应一块骨骼的变换。这些变换矩阵,默认情况下是局部变换矩阵。如果把这些变换矩阵单独应用到标准骨骼Bs(i)=[0,0,0,1;1,0,0,1]上,应先应用本节点的局部变换,然后再应用父节点的全局变换Ws(Ps(i)),才可以得到骨骼的位置B’s(i),可以如式2。
B’s(i)=Bs(i)*Rs(i)*Ts(i)*Ws(Ps(i)) (2)
其中,i是Soldier模型的骨骼树节点序号。这样,每个节点的全局变换矩阵都需要基于本节点的局部变换矩阵,结合父节点的全局变换矩阵,累乘出来。即Ws(i)=Rs(i)*Ts(i)*Ws(Ps(i))。
这种树型连接方式,对于度为2的关节点是很容易理解的,但是对于度超过2的关节点,比如:腰部、颈部、手腕,同一节点有多个子节点,即存在i和j不同,但Ps(i)=Ps(j)。只能认为该父骨骼的起关节连接超过2块骨骼。而该父骨骼也只有一组变换矩阵(旋转*平移),视觉上只有一块骨骼是沿着其方向的。但这并不影响模型和变换矩阵的使用,因为在实际显示处理的时候,并不考虑骨骼在哪里、如何连,而是每个蒙皮顶点跟几个变换矩阵(由骨骼决定,不是由父子关系决定)相关联,基于这些变换矩阵计算出蒙皮顶点应该处的位置。总而言之,节点间的父子关系只是为了用来计算出每块骨骼的全局变换矩阵,并不意味着一组变换矩阵仅和想象中的“一块”骨骼对应,也不意味着变换矩阵所确定的方向肯定和想象中的骨骼相一致。本申请的目标时让Soldier骨架摆出Kinect骨架的姿势,希望Soldier骨架中骨骼之间所成的角度和Kinect骨骼之间的一样。但是,存在一些问题:
1.Kinect骨架和Soldier骨架的结构(块数、位置等)不一致;
2.Kinect输出的结果是镜像的,但Soldier的不是镜像的;
3.Kinect骨架是基于左手定则坐标系,单Soldier骨架是基于右手定则坐标系;
4.两者的骨骼的初始位置不一样:Kinect的沿+Y轴,而Soldier模型的沿+X轴;
5.Kinect骨架使用全局旋转矩阵,采集得到的是各块骨骼的全局变换矩阵,和它们的父节点无关;Soldier骨架使用局部旋转矩阵,每块骨骼的位置受它的父节点影响,通过累乘的方式计算。
在了解这两种骨架的基础上,为实现迁移中存在的问题,进一步描述将Kinect骨架姿势迁移到Soldier骨架的实现步骤。具体方法如下。
节点匹配。由于Kinect骨架和Soldier骨架的结构不同,因此,首先需要指定Kinect骨架的哪块骨骼对应Soldier骨架的哪块,即骨骼匹配。依据两个骨架的骨骼位置,进行如下匹配:{SpineBase,Root},{SpineMid,Spine2},{Neck,Head},{Head,Skull},{ShoulderLeft,L_Clavicle},{ElbowLeft,L_UpperArm},{WristLeft,L_Forearm},{HandLeft,L_Hand},{ShoulderRight,R_Clavicle},{ElbowRight,R_UpperArm},{WristRight,R_Forearm},{HandRight,R_Hand},{KneeLeft,L_Thigh1},{AnkleLeft,L_Knee2},{KneeRight,R_Thigh},{AnkleRight,R_Knee},{SpineShoulder,Neck}。其中每一组中的前者为Kinect骨架的骨骼名称,后者为Soldier骨架的。共17组。
对于Kinect骨架来说,还剩下8个节点:HipLeft、FootLeft、HipRight、FootRight、HandTipLeft、ThumbLeft、HandTipRight、ThumbRight。其中,HipLeft和HipRight在Soldier骨架中没有合适的对应节点,而其余6个是Kinect骨架的叶子节点,它们的四元组是0,即旋转矩阵是单位矩阵,在这里让它们不参与匹配。由于HipLeft和HipRight不是叶子节点,需要改变它们的父节点和子节点的关系,以保持仍是单棵树。因为Kinect输出的结果是绝对旋转角度,即使跳过某块骨骼,基于下一块骨骼的旋转,仍然是使用两个绝对旋转角度来计算相对旋转,不会影响子节点的旋转的最终结果。对于Soldier骨架来说,还剩49个节点没有匹配。为了让蒙皮结果尽量保持原模型的样子,在这里直接使用该节点在Soldier自由状态下的局部变换矩阵。
反镜像变换。由于Kinect骨架的变换矩阵默认是基于镜像效果的,它的旋转矩阵Rk同样是镜像效果,为了能够应用到Soldier骨架上,需要先对Rk进行一下反镜像变换。由于Rk是绕着原点旋转的变换矩阵,反镜像变换矩阵可简化为M=[1,-1,-1,1;-1,1,1,1;-1,1,1,1;1,1,1,1],计算新的旋转矩阵R’k如式3。
R’k(i)=Rk(i).*M (3)
其中i为Kinect骨架的节点序号,并且式子的右边是进行矩阵点乘“.*”,即对应位置元素相乘。
参见图4,展示了一个反镜像变换的效果。图中左子图为某个姿势的Kinect骨架,为了看得清楚旋转情况,给每块骨骼都加上它的初始姿势坐标轴。
全局变换转局部变换。Kinect骨架的旋转矩阵R’k是全局的,在应用到Soldier骨架上之前,需要把它们转换为局部相对的,以便以相同的累乘模式来求Soldier骨架的各个骨骼的全局变换矩阵。求解相对变换,可以基于四元组进行复数域的计算,也可以基于旋转矩阵进行计算。本文为了统一,采用后者。使用式4来计算局部相对旋转矩阵R”k。
R”k(i)=R’k(i)*Inv(R’k(Pk(i))) (4)
其中,Pk(i)表示取出与i对应的父节点序号,函数Inv(m)是求传入参数矩阵m的逆,式子右边进行的矩阵相乘。
坐标空间转换。使用相同的变换矩阵,对于不同初始骨骼,计算得到的结果将会千差万别。由于Kinect骨架和Soldier骨架的骨骼的初始位置,即在做任何变换之前,骨骼所处的位置及方向,是不相同的,为了能够把旋转矩阵R”k应用到Soldier骨架上,替换掉匹配节点的旋转矩阵Rs,可以先由Soldier骨架的空间转换到Kinect骨架的空间,使用StoK=[0,1,0,0;0,0,1,0;1,0,0,0;0,0,0,1],接着,进行在Kinect骨架空间的旋转变换R”k,然后再转换回到Soldier骨架的空间,使用KtoS=Inv(StoK),整个过程的变换结合在一起,形成式5,计算针对Soldier骨架的骨骼的旋转变换R’s。
R’s(i)=StoK*R”k(i’)*KtoS (5)
其中,i是Soldier骨架的序号,而i’是跟i匹配的Kinect骨架的序号。
在实际变换过程中,如果Soldier骨架的某个节点i没有匹配的Kinect骨架的节点,就仍然使用Rs(i)进行变换计算;而如果有匹配的,就使用R’s(i)替换式2里的Rs(i)进行计算。
实验与结果分析。
在实验过程中,主要使用了Visual Studio进行Kinect骨架采集和三维模型渲染相关的工作,而使用Matlab进行骨架处理、检查等。在骨架采集过程中,主要使用MicrosoftKinect 2.0设备,不断地检查当前的采集状态,保存采集到的骨架信息,主要包括25个四元组,用于后续三维模型渲染时生成旋转变换矩阵Rk。在三维模型渲染时,基于MicrosoftDirectX SDK(June 2010)中带的实例Skinning10。仍然采用Skinning10工程的处理流程,先使用VSSkinnedStreamOutmain把顶点蒙皮化处理,即计算出变换后的顶点坐标,从StreamOut输出,再使用RenderPostTransformed来渲染,其中顶点着色器(VS)是VSRenderPostTransformedmain,像素着色器(PS)是PSSkinnedmain。本文算法就是在蒙皮化处理之前,根据Kinect采集的骨架,结合Soldier的自由姿势骨架,生成Soldier新的骨架变换矩阵,以便蒙皮化处理的时候使用。
通过实验,图5展示了处理效果。图中(a)和(c)为从Kinect采集到的两个骨架信息显示出来的姿势,而(b)和(d)分别为(a)和(c)经过本文方法输出的姿势迁移骨架姿势。值得说明的是,在图4中,由于Kinect骨架的叶子节点没有跟Soldier骨架匹配,所以Soldier骨架的脚部姿势跟Kinect骨架的不一样,而是采用了Soldier骨架自由姿势的样子。(c)的Kinect骨架是镜像的结果,所以可以看到姿势迁移的结果Soldier骨架跟Kinect骨架有互为镜像的效果。
本实施例针对当前虚拟现实应用中,三维模型控制的应用,提出了一种异构骨架间的姿势迁移算法。其间,使用Kinect采集用户的骨架,结合Soldier的初始骨架,通过节点匹配,反镜像变换,全局到局部变换转换,坐标空间转换,把采集到的姿势,迁移到Soldier的骨架上,从而可以应用来控制三维模型。实验结果显示方法可行、有效。
参见图6,本申请还提出一种异构骨架之间的姿势迁移装置,包括:节点匹配模块1,用于选取匹配节点,将源骨架和目标骨架中存在对应的节点进行匹配;反镜像变化模块2,用于将源骨架的旋转矩阵Rk点乘反镜像变化矩阵M获取反镜像旋转矩阵R’k;局部变换模块3,用于将反镜像旋转矩阵R’k转换为局部相对变换矩阵R”k;空间转换模块4,用于进行模型空间转换,将局部相对变换矩阵R”k转换为目标骨架的旋转变换矩阵R’s;迁移模块5,用于计算迁移后目标骨架中的骨骼位置B’s(i),若目标骨架的节点与源骨架的节点存在匹配,则B’s(i)=Bs(i)*R’s(i)*Ts(i)*Ws(Ps(i));若目标骨架的节点与源骨架的节点没有存在匹配,则B’s(i)=Bs(i)*Rs(i)*Ts(i)*Ws(Ps(i));其中,Bs(i)=[0,0,0,1;1,0,0,1],为标准骨骼;i为目标骨架节点的序号;Ts(i)为目标节点的平移矩阵;Rs(i)为目标节点的旋转矩阵,Ws(Ps(i))为目标节点的父节点的全局变换。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置具体工作过程,可以参考前述方法实施例中的对应过程,作用和效果也相同,在此不再赘述。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文全称:Read-OnlyMemory,英文缩写:ROM)、随机存取存储器(英文全称:Random Access Memory,英文缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种异构骨架之间的姿势迁移方法,其特征在于,包括以下步骤:
节点匹配,选取匹配节点,将源骨架和目标骨架中存在对应的节点进行匹配;
反镜像变化,将所述源骨架的旋转矩阵Rk点乘反镜像变化矩阵M获取反镜像旋转矩阵R’k;
全局变换转局部变换,将所述反镜像旋转矩阵R’k转换为局部相对变换矩阵R”k;
坐标空间转换,进行模型空间转换,将所述局部相对变换矩阵R”k转换为目标骨架的旋转变换矩阵R’s;
计算迁移后所述目标骨架中的骨骼位置B’s(i),若所述目标骨架的节点与所述源骨架的节点存在匹配,则B’s(i)=Bs(i)*R’s(i)*Ts(i)*Ws(Ps(i));若所述目标骨架的节点与所述源骨架的节点没有存在匹配,则B’s(i)=Bs(i)*Rs(i)*Ts(i)*Ws(Ps(i));其中,Bs(i)=[0,0,0,1;1,0,0,1],为标准骨骼;i为目标骨架节点的序号;Ts(i)为目标节点的平移矩阵;Rs(i)为目标节点的旋转矩阵,Ws(Ps(i))为目标节点的父节点的全局变换。
2.根据权利要求1所述的一种异构骨架之间的姿势迁移方法,其特征在于,所述反镜像变化矩阵M=[1,-1,-1,1;-1,1,1,1;-1,1,1,1;1,1,1,1]。
3.根据权利要求1所述的一种异构骨架之间的姿势迁移方法,其特征在于,所述源骨架的旋转矩阵Rk由源骨架输出的每个节点的四元组数据Qk(i)转换得到。
4.根据权利要求1所述的一种异构骨架之间的姿势迁移方法,其特征在于,所述目标节点的平移矩阵Ts(i)和旋转矩阵Rs(i)分别由所述目标骨架的节点的平移向量(dxi,dyi,dzi)和四元组数据Qs(i)转换得到。
5.根据权利要求1所述的一种异构骨架之间的姿势迁移方法,其特征在于,所述局部相对变换矩阵R”k的转换方法为:R”k(i)=R’k(i)*Inv(R’k(Pk(i))),其中,Pk(i)表示取出与i对应的父节点序号,函数Inv(m)是求传入参数矩阵m的逆。
6.根据权利要求1所述的一种异构骨架之间的姿势迁移方法,其特征在于,所述源骨架为使用Kinect采集的用户的骨架。
7.根据权利要求6所述的一种异构骨架之间的姿势迁移方法,其特征在于,所述目标骨架为DirectX SDK中使用的三维模型Soldier.sdkmesh。
8.根据权利要求7所述的一种异构骨架之间的姿势迁移方法,其特征在于,所述将源骨架和目标骨架中存在对应的节点进行匹配的过程为:{SpineBase,Root},{SpineMid,Spine2},{Neck,Head},{Head,Skull},{ShoulderLeft,L_Clavicle},{ElbowLeft,L_UpperArm},{WristLeft,L_Forearm},{HandLeft,L_Hand},{ShoulderRight,R_Clavicle},{ElbowRight,R_UpperArm},{WristRight,R_Forearm},{HandRight,R_Hand},{KneeLeft,L_Thigh1},{AnkleLeft,L_Knee2},{KneeRight,R_Thigh},{AnkleRight,R_Knee},{SpineShoulder,Neck};其中每一组前者为Kinect骨架的节点名称,后者为Soldier骨架的节点名称。
9.根据权利要求8所述的一种异构骨架之间的姿势迁移方法,其特征在于,在Soldier骨架中没有匹配到的节点使用该节点在Soldier自由状态下的局部变换矩阵进行转换。
10.一种异构骨架之间的姿势迁移装置,其特征在于,包括:
节点匹配模块,用于选取匹配节点,将源骨架和目标骨架中存在对应的节点进行匹配;
反镜像变化模块,用于将所述源骨架的旋转矩阵Rk点乘反镜像变化矩阵M获取反镜像旋转矩阵R’k;
局部变换模块,用于将所述反镜像旋转矩阵R’k转换为局部相对变换矩阵R”k;
空间转换模块,用于进行模型空间转换,将所述局部相对变换矩阵R”k转换为目标骨架的旋转变换矩阵R’s;
迁移模块,用于计算迁移后所述目标骨架中的骨骼位置B’s(i),若所述目标骨架的节点与所述源骨架的节点存在匹配,则B’s(i)=Bs(i)*R’s(i)*Ts(i)*Ws(Ps(i));若所述目标骨架的节点与所述源骨架的节点没有存在匹配,则B’s(i)=Bs(i)*Rs(i)*Ts(i)*Ws(Ps(i));其中,Bs(i)=[0,0,0,1;1,0,0,1],为标准骨骼;i为目标骨架节点的序号;Ts(i)为目标节点的平移矩阵;Rs(i)为目标节点的旋转矩阵,Ws(Ps(i))为目标节点的父节点的全局变换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110535769.3A CN113658319B (zh) | 2021-05-17 | 2021-05-17 | 一种异构骨架之间的姿势迁移方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110535769.3A CN113658319B (zh) | 2021-05-17 | 2021-05-17 | 一种异构骨架之间的姿势迁移方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113658319A true CN113658319A (zh) | 2021-11-16 |
CN113658319B CN113658319B (zh) | 2023-08-04 |
Family
ID=78476906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110535769.3A Active CN113658319B (zh) | 2021-05-17 | 2021-05-17 | 一种异构骨架之间的姿势迁移方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113658319B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154289A (zh) * | 2007-07-26 | 2008-04-02 | 上海交通大学 | 基于多目相机的三维人体运动跟踪的方法 |
CN105654334A (zh) * | 2015-12-17 | 2016-06-08 | 中国科学院自动化研究所 | 虚拟试衣方法和*** |
US20190004597A1 (en) * | 2017-06-28 | 2019-01-03 | Shandong University | Multi-human tracking system and method with single kinect for supporting mobile virtual reality application |
CN109947247A (zh) * | 2019-03-14 | 2019-06-28 | 海南师范大学 | 一种体感交互展示***及方法 |
CN111860096A (zh) * | 2020-04-10 | 2020-10-30 | 天津大学 | 基于Openpose和Alexnet无人机姿势控制方法 |
CN111973988A (zh) * | 2020-08-24 | 2020-11-24 | 网易(杭州)网络有限公司 | 游戏中模型的处理方法、装置、设备及存储介质 |
-
2021
- 2021-05-17 CN CN202110535769.3A patent/CN113658319B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101154289A (zh) * | 2007-07-26 | 2008-04-02 | 上海交通大学 | 基于多目相机的三维人体运动跟踪的方法 |
CN105654334A (zh) * | 2015-12-17 | 2016-06-08 | 中国科学院自动化研究所 | 虚拟试衣方法和*** |
US20190004597A1 (en) * | 2017-06-28 | 2019-01-03 | Shandong University | Multi-human tracking system and method with single kinect for supporting mobile virtual reality application |
CN109947247A (zh) * | 2019-03-14 | 2019-06-28 | 海南师范大学 | 一种体感交互展示***及方法 |
CN111860096A (zh) * | 2020-04-10 | 2020-10-30 | 天津大学 | 基于Openpose和Alexnet无人机姿势控制方法 |
CN111973988A (zh) * | 2020-08-24 | 2020-11-24 | 网易(杭州)网络有限公司 | 游戏中模型的处理方法、装置、设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
XUAN SON NGUYEN等: "Skeleton-Based Hand Gesture Recognition by Learning SPD Matrices with Neural Networks", pages 1 - 5, XP033575978, Retrieved from the Internet <URL:《网页在线公开:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8756512》> DOI: 10.1109/FG.2019.8756512 * |
朱文博等: "基于广义变换矩阵的机械零件三维模型骨架匹配", 《上海理工大学学报》, vol. 41, no. 4, pages 381 - 387 * |
陈彩霞等: "支持权重优先等级的自适应接人机制", 《计算机工程与设计》, vol. 40, no. 6, pages 1535 - 1539 * |
Also Published As
Publication number | Publication date |
---|---|
CN113658319B (zh) | 2023-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11468612B2 (en) | Controlling display of a model based on captured images and determined information | |
CN109636831B (zh) | 一种估计三维人体姿态及手部信息的方法 | |
US11798176B2 (en) | Universal body movement translation and character rendering system | |
WO2021169839A1 (zh) | 一种基于骨骼关键点的动作还原方法以及装置 | |
KR100722229B1 (ko) | 사용자 중심형 인터페이스를 위한 가상현실 상호작용 인체모델 즉석 생성/제어 장치 및 방법 | |
JP7015152B2 (ja) | キーポイントデータに関する加工装置、方法及びプログラム | |
CN109448099A (zh) | 画面的渲染方法、装置、存储介质及电子装置 | |
CN111028330A (zh) | 三维表情基的生成方法、装置、设备及存储介质 | |
CN109671141B (zh) | 图像的渲染方法和装置、存储介质、电子装置 | |
Tong et al. | Research on skeleton animation motion data based on Kinect | |
Vitali et al. | Acquisition of customer’s tailor measurements for 3D clothing design using virtual reality devices | |
CN110931121A (zh) | 一种基于Hololens的远程手术指导装置及操作方法 | |
CN112734632B (zh) | 图像处理方法、装置、电子设备和可读存储介质 | |
Coleca et al. | Self-organizing maps for hand and full body tracking | |
CN114049468A (zh) | 一种展示方法、装置、设备及存储介质 | |
CN111652983A (zh) | 一种增强现实ar特效生成方法、装置及设备 | |
WO2024149294A1 (zh) | 虚拟试衣及试衣模型训练的方法、装置和设备 | |
Schröder et al. | Design and evaluation of reduced marker layouts for hand motion capture | |
CN110142769A (zh) | 基于人体姿态识别的ros平台在线机械臂示教*** | |
Endo et al. | Hand modeling and motion reconstruction for individuals | |
Wang et al. | 2D shape deformation based on rigid square matching | |
CN113658319B (zh) | 一种异构骨架之间的姿势迁移方法及装置 | |
Wang et al. | Zero-shot pose transfer for unrigged stylized 3d characters | |
CN111324274A (zh) | 虚拟试妆方法、装置、设备及存储介质 | |
CN115272539A (zh) | 基于虚拟场景的服饰数据处理方法、存储介质及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |