人体三维重建——参数化人体方法简述

2023-11-18

三维人体形状指的是以三维网格形式表示的人体几何形状模型。按照[1]中的分类方式,可以将三维人体形状重建粗略的分为参数化方法与非参数化方法。本次先介绍参数化方法。

参数化人体形状重建方法依赖于某个基于统计得到的人体参数化模型,仅需一组低维向量(即人体参数)即可描述人体形状。目前常见的参数化人体模型如SCAPE[2]、SMPL[3]、SMPL-X[4]等。

以SCAPE为例,它定义了两个独立的低维参数空间:人体体型(Shape)空间与人体姿态(Pose)空间。给定空间下的一组人体体型参数与人体姿态参数,即可直接合成一个人体形状。其中人体体型空间是通过对相同姿态、不同体型的人体数据库进行PCA(Principal Component Analysis,主成分分析)降维得到的子空间进行表示,体型参数则是该子空间中各个基的系数。图1(a)显示SCAPE体型基上的参数变化影响人体体型变化。SCAPE的姿态参数则以17个人体部分相对于标准模板人体相应部分的旋转表示。

图片

图1(a) 经典人体参数化模型-SCAPE

随着SCAPE模型的成功,一些研究者在其基础上不断改进,提出了各种升级版本,较为知名的如Blend Scape[5],Breath Scape[6],S-Scape[7]等等。但是SCAPE模型的变形依赖于三角形面片的旋转变形,而不是以动画软件中常用的顶点变形方法(如骨骼蒙皮)进行变形,因此SCAPE生成的人体几何模型难以在现有的动画软件(如Maya, Blender等)直接使用。

最近,德国马克思-普朗克研究所开源了一个基于顶点变形的人体参数化模型SMPL[3]。SMPL模型同样由人体体型参数与人体姿态参数控制变形。其体型参数与SCAPE的体型参数相同,都以PCA提取出的体型变形基的参数进行表示。而姿态参数则是以人体的全局旋转以及23个关节的关节角旋转表示,并通过LBS(Linear Blend Skinning,线性混合蒙皮)进行人体姿态变形。SMPL的人体生成如图1(b)所示。

图片

图1(b) 经典人体参数化模型-SMPL人体形变示意

传统的参数化人体重建方法通常利用特殊的设备获得人体的稠密三维点云数据或者深度数据,然后通过点云配准、模板变形等方式拟合SCAPE参数,进而重建出三维人体形状。

近年来,许多研究者利用Kinect深度相机捕获的人体深度数据以及SCAPE模型重建三维人体形状。Zhang等人[8]通过单个Kinect相机采集中间转动人体的多视图局部点云数据,并进行配准,然后采用类似SCAPE构建人体的方法对多个视图的点云进行拟合。

Weiss等人[9]也采用单个Kinect相机,不同于转动人体来获得多视图局部点云,他们捕获单人在Kinect前移动的多个单目深度图,通过最小化SCAPE人体模型的轮廓重投影与深度图轮廓之间的配准误差进行优化求解,如图2所示。但是该方法的求解过程非常耗时(重建一个人体需超过1小时)。

图片

图2 Weiss等人的工作

Zhao等人[10]也提出了基于单个Kinect的参数化人体重建方法。他们首先利用Kinect拍摄人体正面和背面两张深度图,随后分别利用这两张深度图重建人体的半身网格,最后将其缝合在一起。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

人体三维重建——参数化人体方法简述 的相关文章

  • Blender 与 Unity [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Python 中的标量场可视化

    我需要在 Python 中可视化几个重叠的标量场 我发现mayavi图书馆做这种情节 问题是我不明白如何为标量字段自定义颜色图 我的想法是为每个字段设置一种颜色的阴影 我尝试采用一个例子 http docs enthought com ma
  • 如何在 Three.js 中从三角面获取多边形?

    我在网上查了一下是否有人遇到同样的问题 我正在使用 Three js 我有一个 3DObject 其中可能包含孔 面是三角形的 假设我想从上面看到它 我的目标是获得一个代表顶面周长的多边形 这对我来说意味着不再有三角面 而只有 1 个多边形
  • 如何在SceneKit中实现逼真的景深效果?

    我正在尝试渲染具有真实景深效果的帧 我已经尝试过景深属性camera节点 但它不会产生可用的结果 是否可以切换到景深效果的最大渲染质量 性能不是一个因素 我只需要渲染一帧 用户可以等待它 SceneKit 中逼真的景深效果 在SceneKi
  • 从 NumPy 数组中的数据绘制 3D 图像

    我有一个 NumPy 数组中的数据文件 我想查看 3D 图像 我正在分享一个示例 我可以在其中查看大小为 100 100 的 2D 图像 这是 xy 平面上 z 0 处的切片 import numpy as np from matplotl
  • 可点击的精灵标签?

    我一直在玩精灵文本标签 更具体地说是这个例子 http stemkoski github io Three js Sprite Text Labels html http stemkoski github io Three js Sprit
  • 一次性渲染阴影

    考虑到阴影投射的成本 我想知道对于动态定位的静态对象 例如 程序城市 是否有一个功能或可能 实验性的方法可以在 Three js 中仅渲染一次阴影贴图 甚至在 webgl 中 因此 结果可以在静态对象的下一帧中免费使用 仅当物体移动时才会进
  • 如何仅剪切剪切平面的交集(而不是并集)?

    在 OpenGL JOGL 中 当使用多个剪切平面时 似乎会应用所有剪切平面的并集 我想要的是路口要应用的所有剪裁平面 这可能吗 请参阅下面的简化二维示例 Edit An example of clipping by vertex shad
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 如何在 React Native 中渲染自定义 3D 对象

    我已经成功使用 Three js expo Three 和 expo gl 在 React Native 中配置了红色立方体的 3D 渲染 但我想让用户渲染他们自己可能拥有的自定义 3D 对象 obj 或 mtl 扩展名 但我不确定如何让他
  • 简单模式7公式/例子?

    我最近发现了利用 SNES 模式 7 的伪 3D 效果 并想尝试在 Godot 引擎中复制它 我尝试在网上查找 但所有内容要么以我无法理解的方式解释 要么以我不知道的编程语言解释 我还需要学习如何旋转该区域 并将精灵作为角色或敌人放入 但我
  • 为什么 OpenGL 有远裁剪平面,以及使用什么惯用法来处理这个问题?

    我一直在学习 OpenGL 持续困扰我的一个话题是远裁剪平面 虽然我可以理解近剪裁平面和侧剪裁平面 它们永远不会产生任何实际效果 因为它们之外的对象无论如何都不会被渲染 背后的推理 但远剪裁平面似乎只是一个烦恼 由于 OpenGL 背后的人
  • 3D 空间中两个盒子之间的交集

    我想为我的图形引擎实现一个碰撞检测系统 我不知道这是否是常见的方法 但我的想法是将任何实体对象 如网格或相机 绑定在 3D 盒子内 这会给我比球体更准确的结果 这个盒子由八个顶点定义 x0 min vertices x off parsin
  • 无法使用 vcglib 简化 3D 模型,断言“0”失败

    I used vcglib https github com cnr isti vclab vcglib简化 3D 模型文件 我使用了 master a8e87662 git 存储库 我运行示例 trimesh clustering htt
  • 具有轴和角度的 3D 旋转

    我知道 3D 旋转在 SO 和许多其他网站上都有详细记录 但尽管阅读了无数的解释 我仍然没有弄清楚我哪里出错了 我的背景是艺术和设计 而不是数学和编程 而且我从来都不确定我的攻击角度 没有双关语 是否正确 我没有粘贴我那令人沮丧的代码的拼凑
  • 如何计算正切和副法线?

    谈谈OpenGL着色语言 GLSL 中的凹凸贴图 镜面高光之类的东西 I have 顶点数组 例如 0 2 0 5 0 1 0 2 0 4 0 5 法线数组 例如 0 0 0 0 1 0 0 0 1 0 0 0 世界空间中点光源的位置 例如
  • 在 libgdx 中批处理多维数据集时出现问题

    我正在尝试开发一款游戏 在屏幕上渲染多达 300 个立方体 为每个多维数据集创建新的 modelInstance 时 modelBatch 的性能非常糟糕 据我所知 没有 3d 批处理可以将所有立方体批处理到一次绘制调用 所以我拼命地尝试以
  • Java 的 3D 场景图库?

    我正在寻找一个可靠的 Java 3D 场景图 API 它具有良好的文档 活跃的社区和允许商业使用的许可证 我排除了com sun scenegraph https scenegraph dev java net 因为它是 GPL 而且看起来
  • React-Three-Fiber:JSON 中位置 3 出现意外标记 c 错误

    我正在尝试使用 React Three Fiber 加载 glb 文件 但出现以下错误 Error Unexpected token c in JSON at position 3 我不确定我做错了什么 看来此问题最常见的解决方案是将 gl
  • 如何在 R 中导入并绘制三角形网格?

    我想在 R 中绘制我的模型输出 它是格式为的三角形网格 x1 y1 z1 x2 y2 z2 x3 y3 z3 value 每行代表一个三角形 我想用以下方法绘制这些三角形value作为规模 mymesh lt structure c 0 9

随机推荐

  • jquery筛选器

    在Web应用程序中 大部分的客户端操作都是基于对象的操作 要操作对象就必须先获取对象 jQuery提供了强大的选择器让我们获取对象 我人为地将jQuery选择器分为两大部分 选择对象和筛选条件 选择对象表示要获取什么对象 筛选条件是对获取的
  • # 2023 好用免费图床推荐

    1 聚合图床 该免费图床由来已久 稳定运行多年 满足多种个性化需要 可以说该图床是所有推荐当中最为灵活 扩展性最强图床 支持水印设置 防盗链设置 甚至还可以统计数据量大小 有普通用户和付费用户区分 付费用户自定义功能将更加强大 就个人而言
  • Spring Cloud Config配置服务及那些你不知道的坑

    目录 1 为什么选择Spring Cloud Config 1 1 集中式管理 1 2 动态修改配置 2 Spring Cloud Config 简介 3 服务端配置 3 1 添加依赖 3 2 开启服务注册 3 3 添加YML配置 3 4
  • springboot结合aop和pagehelper实现分页筛选排序功能

    一 前言 首先我们要知道什么是aop 什么是pagehelper 从而我们知道 pagehelper的实现其实是两行代码 PageHelper startPage pageNum pageSize 开始分页 PageInfo pageInf
  • Python中class的内置函数__str__

    Python中class的内置函数 str 一 说明 init 类实例初始化函数 str 类实例字符串化函数 二 示例1 1 2 3 4 5 6 class Fri
  • Java并发编程学习2-线程安全性

    Java并发编程学习系列 线程安全性 引言 1 什么是线程安全性 1 1 如何编写线程安全的代码 1 2 线程安全类 1 3 无状态对象 2 原子性 2 1 竞态条件 2 2 延迟初始化 2 3 复合操作 3 加锁机制 3 1 内置锁 3
  • 华为OD机试 - 根据某条件聚类最少交换次数(Java)

    目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 给出数字K 请输出所有结果小于K的整数组合到一起的最少交换次数 组合一起是指满足条件的数字相邻 不要求相邻后在数组中的位置 数据范围 100 lt K lt 100 1
  • 编写程序,生成一个包含50个随机整数的列表,然后删除奇数

    可以这样编写程序 list for i in range 50 list append random randint 1 100 for num in list if num 2 0 list remove num print list
  • latex入门学习笔记总结

    目录 latex文件的组织方式 latex中的字符 latex中的强调 latex中的分页和断行 latex中文档元素 latex的环境 列表环境 代码环境 htbp 命令 latex中的表格 latex中的图片 插入一张图片 两图并排 插
  • linux指令timedatectl,centos7设置时间命令timedatectl

    在新的centos7里 关于时间的指令除了保留了之前版本中常用到的date hwclock等命令外 还增加了一个统一的命令timedatactl 下面结合其用法进行下小结 查看 timedatectl 指令用法帮助 root 361way
  • WPF自学篇--第一篇--Hello world

    主要知识点为 1 WPF如何修改启动页面 2 如何写Hello Word Sample 内容 1 由于专案是先加window wpf想加web wpf是调试找启动页面找了很久 终于发现在app config中Application下 Sta
  • python LeetCode 88 刷题记录

    题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你 合并 nums2 到 nums1 中 使合并后的数组同样按 非递减顺序 排列 注意
  • 修改Windows系统注册表并使其立即生效

    title 修改Windows系统注册表并使其立即生效 update 2019 12 22 15 38 06 description 修改Windows系统注册表并使其立即生效的方法 原文地址https tomsworkspace gith
  • 日常生活中常用的五星级句子

    1 After you 你先请 这是一句很常用的客套话 在进 出门 上车得场合你都可以表现一下 好象现在女士不愿意你这么做 特别是那些女权主义者 我还记得这么一段话 一个女士对一个让她先行的男士说 you do this because i
  • 基础版图书管理系统(Java实现)

    文章目录 前言 一 设计书类 书架类 二 设计用户类 1 管理员 2 普通用户 三 操作包 前言 对于图书管理系统我想大家都不会陌生 在C语言的学习中相信大家都写过这个系统 那么今天我们就用Java来实现一下图书管理系统 看看和C语言又有什
  • Linux下查看目录文件数和文件大小

    一 查看当前目录下文件个数 在linux下查看目录下有多少文件可以用 ls l 命令查看 ls lR 递归查看所有目录 如果文件很多 则用wc命令 和 grep 命令进行过滤 wc命令显示输出的行 列 字符数 l表示仅列出行 w表示仅列出多
  • Typescript:类的装饰器

    Typescript的装饰器我在学习typescript的时候并不是很清楚它的作用场景 直到使用了nest js框架后 才明白其作用 于是又深入学习了一下 希望通过对装饰器的学习提高对nest js的使用 装饰器 装饰器为我们在类的声明及成
  • 常用设计模式总结

    设计模式的相关知识 很多书籍和博客中都有详细总结 本文总结的目的 1 将自己学习到的设计模式的知识按照自己的逻辑重新总结 方便查看和记忆 2 方便让自己对设计模式中常用的知识有一个系统的认知 设计模式 话设计模式 书中提到 24 种设计模式
  • 使用 CUBLAS 库给矩阵运算提速

    前言 编写 CUDA 程序真心不是个简单的事儿 调试也不方便 很费时 那么有没有一些现成的 CUDA 库来调用呢 答案是有的 如 CUBLAS 就是 CUDA 专门用来解决线性代数运算的库 本文将大致介绍如何使用 CUBLAS 库 同时演示
  • 人体三维重建——参数化人体方法简述

    三维人体形状指的是以三维网格形式表示的人体几何形状模型 按照 1 中的分类方式 可以将三维人体形状重建粗略的分为参数化方法与非参数化方法 本次先介绍参数化方法 参数化人体形状重建方法依赖于某个基于统计得到的人体参数化模型 仅需一组低维向量