1.一种估计三维人体姿态及手部信息的方法,其特征在于,由计算机按如下步骤进行:步骤1:通过景深彩色相机获取彩色图与深度图,并传递至计算机;所述景深彩色相机,可由RGB相机和深度相机/红外相机替代;
步骤2:由计算机进行混合关节预测;本步骤具体为:由景深彩色相机获取被采样人体的25个关节点,其中某些关节点严重偏离,结合LCR‑Net深度学习的方法从彩色图估计的13个人体3D关节点进行混合预测,从而获得准确的关节位置:对于不准确的关节点j,通过LCR‑Net获得的关节点的关节角度来对其进行修正从而得*到该关节点的准确位置j:
其中jp为该关节点在关节树上的父关节点, 是指向z轴方向的单位向量,R为罗德里格斯旋转矩阵,当j在LCR‑Net所预测的骨骼中对应的关节点为j′,我们通过下式计算R:其中E是三维单位矩阵,A为向量 的反对称矩阵,j′p为jp在LCR‑Net中对应的关节点,是j′在关节树上的父关节点步骤3:由计算机拟合人体模型到关节点,并约束头部方向估计人体姿态和体型;
步骤4:由计算机使用点云数据对拟合结果进行细节优化;
步骤5:由计算机对拟合过程进行优化,并输出结果。
2.根据权利要求1所述的一种估计三维人体姿态及手部信息的方法,其特征在于,所述景深彩色相机为一台具有RGB相机、深度传感器和红外投影机功能的相机,进一步说,景深彩色相机为Kinect相机。
3.根据权利要求1所述的一种估计三维人体姿态及手部信息的方法,其特征在于,本发明的具体方法如下:首先,通过景深彩色相机的单帧数据作为输入,该单帧数据包含深度图,彩色图,以及相机从深度图计算得到的人体骨骼与头部方向数据;
然后,使用混合预测的方法获取所需的3D骨骼关节点、3D人手关节点和人体3D点云数据,采用最小化SMPL关节和数据3D关节之间的误差的目标函数,将SMPL+H模型准确拟合到
3D骨骼关节点;所述3D骨骼关节点为混合预测后包括手指骨骼关节点在内的数据;
通过最小化SMPL关节和数据3D关节/3D骨骼关节点之间的误差的目标函数,首先对人体姿态进行拟合,得到一个与真实人体姿态体型基本一致的模型;然后,将模型的头部方向约束到人体的头部方向并使用3D点云数据通过一个约束人体点云与模型表面的能量函数来对拟合结果的细节准确性进行进一步优化,从而得到最终的准确的人体估计结果。
4.根据权利要求1所述的一种估计三维人体姿态及手部信息的方法,其特征在于,步骤
1的具体方法如下:景深彩色相机为微软的第二代Kinect设备,该设备包含RGB相机/彩色相机、红外深度传感器。
5.根据权利要求1所述的一种估计三维人体姿态及手部信息的方法,其特征在于,步骤
3的具体方法如下:
通过最小化SMPL标准模型与目标人体之间的偏差的目标函数来完成3D模型的拟合过程;
为了获得准确的拟合结果,我们将目标函数定义为五个能量项的集合,具体为:E(β,θ,t)=Ejoints+Epose+Eshape+Esphere+Ehead (7)其中,Ejoints是关节数据项,用来将模型拟合到实际人体;Epose和Eshape是姿态和形状先验项,用来防止拟合过程中模型异常的姿态和体形变化;Esphere是人体惩罚项,用来防止变化过程中人体身体之间发生异常重合渗透,例如模型的手臂变形到了人身体里;Ehead是头部数据项,用来将模型的头部方向拟合到人体实际头部方向;
数据项:在该项将SMPL+H模型的3D关节点与前述关节点进行匹配,从而将模型变换到人的真实姿态和体形;在经过混合关节预测后,同时包括人体骨骼和手骨骼的关节点;具体方法为:通过最小化所获得的关节点与SMPL+H模型关节点之间的欧式距离来进行匹配:其中ωjoints是该项的权重,Ji和Jm,i分别是本方法获得的和SMPL+H模型的第i个关节点,
2 2 2
dist()表示两个关节点的欧式距离的平方;ρ(x)=x /(x+σ)是一个杰曼·麦克卢尔函数,根据其阈值σ减小过大的关节点距离带来的负面影响;
形状先验项:通过该项避免在模型拟合过程中模型的体形参数在能量最小化过程中大跨度的夸张的变化,那会造成体形不正常的变形或得到与实际不符的人体;将该项定义为当前迭代过程中的形状参数与上一次的差:Eshape=ωshape|β‑β′| (10)ωshape是该项的权重,β为模型当前迭代过程的体形参数,β′上一次迭代结果的体形参数,其初始为0;
姿态先验项:该项用来对姿态进行约束,对不自然的姿态进行惩罚,我们通过马氏距离对模型当前的姿态参数进行约束:其中ωpose为权重,θ为当前迭代过程模型的姿态参数, 为SMPL+H模型本身所有姿态数据的平均值, 是与θ相关的协方差矩阵的逆矩阵,表示姿态参数θ的每个元素的权重;
人体惩罚项:模型变换过程中身体的部分之间的重合渗透会使拟合的结果不正确,为了避免这种情况,需要计算身体之间的渗透并通过能量式最小化对其约束;为了使计算过程简易,使用几何体近似来模拟身体,在这里使用“胶囊”定义人体,再将胶囊表示为球心C(θ,β)为轴长中心、球径 为胶囊半径三分之一的球体来计算人体间渗透,该定义方法由Bogo在论文[15]中进行了详细的阐述,θ和β同上几式,该项定义为高斯函数形式:其中ωsphere是该项权重,I(i)是与第i个球体相关的球体的索引集合;
头部数据项:通过数据项的拟合模型并不能获得正确的头部方向,因为头部关节点属于骨骼的终端关节点,它的匹配无法约束头部的姿态;因此通过计算SMPL+H模型的当前迭代过程中的头部方向角度,并最小化其与相机得到的头部方向数据的偏差来得到准确的头部方向;
为此,在SMPL+H模型的头部选取5个点,这5个点形成类似三维空间坐标系的三个向量,令nx=n15,ny=n24,nz=n13分别表示这三个向量,它们能准确表示头部的当前方向;将头部d m方向数据表示为H ,计算得到的模型的头部方向表示为H,则该项定义为:ωhead为对应权重,{x,y,z}表示坐标轴, 和 表示头部对应于三个坐标轴的旋转角度, 由下式进行计算:其中f()将向量投影到与k轴垂直的坐标平面,nk表示模型头部当前迭代的头部方向,n′k表示nk的初始值。
6.根据权利要求1所述的一种估计三维人体姿态及手部信息的方法,其特征在于,步骤
4的具体方法如下:使用获取的3D人体点云对该模型进行约束;准确表示人体的3D模型应当在与人体相对应的表面保持其很大的吻合程度,人体3D点云提供比图像轮廓更多的信息;
我们通过ICP的思想去找对应点,然后惩罚模型与3D表面之间的对应偏差,定义目标函数为:其中(vm,vc)是一组对应的点对,vm是模型上的点,vc是点云上vm的最近点, 是点云上vc点处的法向量,通过将该点与其最近的两个点v′、v″组成的两个向量叉乘即可得到:
7.根据权利要求1所述的一种估计三维人体姿态及手部信息的方法,其特征在于,步骤
5的具体方法如下:步骤3的求解过程为一个迭代求解的过程,每一次迭代都是使模型向更接近实际人体的方向变换一次,步骤5为对步骤3的每一次迭代过程中的权重参数进行设置的解释,通过权重的变化求解出更准确的解;步骤5主要是详细解释怎么通过步骤3和步骤4的式子更好的计算出人体估计结果,属于代码参数设置部分。
8.根据权利要求1所述的一种估计三维人体姿态及手部信息的方法,其特征在于,步骤
1中的人体姿态与体形估计是基于SMPL+H模型的方法,通过将SMPL+H模型拟合到数据从而准确的表示人体,而SMPL+H模型即是本方面所用到的静态人体模型,相对于其他模型其有能同时恢复人的手部姿态的优点且直接应用于现有大多数3D渲染引擎。