手部Mesh入门基础一

最近想往3D的方向走,自己本身是做基于skeleton(keypoints)的手势识别的,就想在现有的基础上看能怎么衔接到mesh这里。

之前一段时间看过一点mesh相关的东西,但是忘得差不多了,现在再重新梳理一下。

手部几何建模

1.参数化网格

前几年(21年左右)似乎参数化网格方法是主流。代表:SMPL(body)、MANO(hand)

基于mesh结构(由一系列顶点(xyz坐标表示)以及顶点相连构成的边和面)再加上一个蒙皮函数 W \textbf{W} W(如LBS)可以建模一个SMPL模型。整个过程可以理解为制作一个mesh皮 T p ( β ⃗ ) T_{p}(\vec{\beta}) Tp(β ),并根据骨架关节点 J ( β ⃗ ) J(\vec{\beta}) J(β )提供的支撑将皮铺好:

M ( β ⃗ , θ ⃗ ) = W ( T p ( β ⃗ , θ ⃗ ) , J ( β ⃗ ) , θ ⃗ , W ) \textbf{M}(\vec{\beta}, \vec{\theta}) = \textbf{W}(T_{p}(\vec{\beta}, \vec{\theta}), J(\vec{\beta}), \vec{\theta}, \mathcal{W}) M(β ,θ )=W(Tp(β ,θ ),J(β ),θ ,W)

1)SMPL的皮

T p ( β ⃗ , θ ⃗ ) = T ⃗ + B s ( β ⃗ ) + B p ( θ ⃗ ) T_{p}(\vec{\beta}, \vec{\theta}) = \vec{T} + B_{s}(\vec{\beta}) + B_{p}(\vec{\theta}) Tp(β ,θ )=T +Bs(β )+Bp(θ )

T ⃗ ∈ R 6890 × 3 \vec{T} \in R^{6890\times3} T R6890×3是统计得到的人体的基本姿态,由N=6890个端点组成。 β ⃗ ∈ R 10 \vec{\beta} \in R^{10} β R10是代表高矮胖瘦的10个形状参数, θ ⃗ \vec{\theta} θ 是代表23个关节点+1个根节点的旋转角度的72个姿态参数,都会对具体人体形状产生影响,而这个影响是线性的,分别由 B s B_{s} Bs B p B_{p} Bp实现。

B s ( β ⃗ ; S ) = ∑ n = 1 ∣ β ∣ β n ⃗ S n B_{s}(\vec{\beta};\mathcal{S}) = \sum_{n=1}^{|\beta|}\vec{\beta_{n}}S_{n} Bs(β ;S)=n=1ββn Sn

S n ∈ R 6890 × 3 × 10 S_{n} \in R^{6890\times3\times10} SnR6890×3×10是通过数据学习出来的10个参数对mesh顶点的影响。

B p ( θ ; P ) = ∑ n = 1 9 K ( R n ( θ ) − R n ( θ ∗ ) ) P n B_{p}(\theta;\mathcal{P}) = \sum_{n=1}^{9K}(R_{n}(\theta)-R_{n}(\theta^{*}))P_{n} Bp(θ;P)=n=19K(Rn(θ)Rn(θ))Pn

R n ∈ R 6890 × 3 × 207 R_{n} \in R^{6890\times3\times207} RnR6890×3×207是旋转矩阵,三维旋转矩阵参数是 3 × 3 = 9 3\times3=9 3×3=9个,207=23*9。上式表示了相对于 T ⃗ \vec{T} T 的姿态 R n ( θ ∗ ) R_{n}(\theta^{*}) Rn(θ)的变化。

到这里,就拥有了一个mesh皮。接下来,我们要将皮和骨架关节点连接起来,就是蒙皮操作。

2)蒙皮

这里我曾经有点困惑的地方是,其实在前面我们是没有关节点的三维坐标信息的,只有每个关节相对于根部骨骼的旋转信息。因此,首先我们需要估计出关节点:

J ( β ⃗ ; J , T ⃗ , S ) = J ( T ⃗ + B s ( β ⃗ ; S ) ) J(\vec{\beta}; \mathcal{J},\vec{T},S) = \mathcal{J}(\vec{T} + B_{s}(\vec{\beta};S) ) J(β ;J,T ,S)=J(T +Bs(β ;S))

之后,我们看基础的LBS公式:

v ′ = ∑ j = 1 m ω j ( v ) T j v v^{'} = \sum_{j=1}^{m}\omega_{j}(v)T_{j}v v=j=1mωj(v)Tjv

ω \omega ω为权重矩阵, T T T为关节点的旋转平移矩阵, v v v, v ′ v^{'} v代表变换前后的网格顶点。新的网格顶点考虑了每个关节点的影响加权求和计算得到,在原文中也是这个形式, T T T由每个关节点的旋转矩阵经过世界坐标转换得到。我还没有看具体的细节,看之后有没有再补充。

3)MANO

2. 隐式(Implict)

后处理耗时。

3. Skeleton-Driven

参考博客

旋转矩阵
三维人体动捕模型 SMPL:A Skinned Multi Person Linear Model
人体动作捕捉与SMPL模型 (mocap and SMPL model)

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值