SMPL模型及源码解读

本文详细解读了SMPL人体三维重建模型,包括模型结构、源码实现、关键函数如Rodrigues旋转公式、线性蒙皮算法等,并提供了模型的应用实例。通过设置不同pose和shape参数,展示了模型的灵活性。同时介绍了序列化、关节映射和蒙皮计算等功能,为使用SMPL模型进行人体重建打下基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Preface


SMPL主要是人体三维重建常用模型,本文主要对模型及源码进行了解读(自己的理解不一定正确),为以后更好的利用此模型进行人体重建打好基础!

一、模型解读

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、源码解读

  SMPL模型网格顶点数N=6890,关节点数K=23,关节点具体位置如图所示
在这里插入图片描述

  SMPL源码的结构在上一篇源码实现中已经进行了说明,这里就不再赘述!
1、hello_smpl.py
  这个文件主要是举了一个应用SMPL实例,包括加载模型、编辑pose和shape参数产生一个新的人体模型以及保存模型为.obj文件格式。为我们利用smpl模型做了一个很好的示范!输入主要是m.pose以及m.betas(pose和shape参数):
m.pose共计72个参数(23X3+3,23个三维关节点,加上根关节点的3个参数);
m.betas共计300个参数(等于线性形状系数的个数);
我们将得到得的pose和shape参数送入模型即可得到三维人体重建的模型。当设置参数为:

m.pose[:] = 0
m.betas[:] = 0

这就是论文中所述的零姿态(zero pose)如图所示:
在这里插入图片描述

2、serialization.py
这是模型的序列化函数,主要功能是加载SMPL模型和保存SMPL模型。其中一些参数分别代表
v_template:顶点模板
J:关节坐标
weight:关节权重
kintree_table:关节树
f:相机参数
bs_type:蒙皮方法LBS还是DQBS
3、 posemapper .py
主要实现关节点角度Θ到姿态混合形状的映射。
Rodrigues类利用Rodrigues’ rotation formula计算每个关节点轴线角的旋转矩阵;
lrotmin函数将Pose矢量映射到连接相关部分旋转矩阵的矢量。
4、LBS.py
这个文件主要是实现文中所述的线性蒙皮(LBS)的。定义了骨骼和混合形状对模板网格顶点的影响。
global_rigid_transformation函数计算模型的全局刚体变换,包括旋度和平移量,实现了论文里的公式4。
verts_core:计算关节点影响后每个顶点的位置,实现了论文里的公式2。
5、vert.py
这个文件主要定义骨骼和混合形状对模板网格顶点的影响。
verts_decorated:创建了继承SMPL模型属性的另一个SMPL模型。
verts_core:计算蒙皮中关节点对每个顶点的影响。

现在对模型的理解还十分肤浅,后续会持续更新,望志同道合的朋友来一起学习!


Citation

[1]https://blog.youkuaiyun.com/nbxuwentao/article/details/100177159
[2]https://52zju.cn/?p=471
[3]Matthew Loper, Naureen Mahmood, Javier Romero, Gerard Pons-Moll, and Michael J. Black. 2015. SMPL: a skinned multi-person linear model. ACM Trans. Graph. 34, 6, Article 248 (November 2015), 16 pages. DOI:https://doi.org/10.1145/2816795.2818013

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BTWBB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值