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

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(使用前将#替换为@)

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

  • 如何插值旋转?

    我有两个描述旋转的向量 起始旋转 A 和目标旋转 B 我如何最好地通过因子 F 对 A 进行插值以接近 B 当需要插值多个维度时 即产生不需要的旋转 在向量上使用简单的 lerp 不起作用 也许从旋转向量构建四元数并使用Slerp http
  • xna 防止下坡或上太陡的山

    如何防止在高度图地形上过于陡峭的斜坡或上山 我有一个可以在地形上移动的 3D 相机 它现在可以在任何地方移动 甚至在大斜坡和太陡的山丘上 我该怎么办 如果你试图朝一个方向移动 你应该预测你最终会到达哪里 然后弄清楚是否slope http
  • 如何使用 OpenCV Viz 和 ARUCO 转换增强现实应用的 3D 模型

    我正在开发一个简单的基于标记的增强现实应用程序OpenCV 可视化 and ARUCO 我只想在标记上可视化 3D 对象 PLY 格式 我可以使用 ARUCO 毫无问题地运行标记检测和姿态估计 返回旋转和平移向量 我可以在 Viz 窗口中可
  • 如何旋转 3D 散点图

    下面的代码使用 scatterplot3d 函数来运行高度 重量和体积的 3D 散点图 其中点是 1 6 之间的类值 角度目前为 45 度 我知道我可以通过改变角度来倾斜绘图 我应该使用什么代码将绘图向左或向右旋转 以便我可以提供绘图的多个
  • 计算 3D(或 n 维)质心的最佳方法是什么?

    作为工作项目的一部分 我必须计算 3D 空间中一组点的质心 现在我正在以一种看似简单但天真的方式来做这件事 通过取每组点的平均值 如下所示 centroid average x average y average z where x y a
  • R - hist3D 序列颜色和标签问题

    所以我有一个 5 行 20 列的数据集 我正在尝试绘制一个hist3D来自plot3D包裹 dt structure c 1 1 1 3 1 2 1 0 2 1 2 1 0 1 1 0 1 0 2 2 1 1 1 1 4 4 1 1 2 3
  • 使用 3d 变换矩阵

    在人工智能课程中 我们有一个机器人 它的手臂有 7 个关节 每个关节可以向不同的方向旋转 我需要知道最后的结局在哪里 我一直在尝试进行 3d 矩阵乘法 它适用于一个关节 但一旦我添加另一个关节 它就与我使用 Java3D api 制作的模型
  • 如何计算逆运动学[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想知道如何使用逆运动学计算旋转角度 我计划将其用于实时 3D 动画 有人知道一些详细介绍具体解决方案的好文献吗 以下资源调查了逆运动学问题的一些流行
  • Blender 与 Unity [关闭]

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

    所以 我想找出一个函数 可以让您确定两个任意旋转和大小的立方体是否相交 如果立方体的旋转不是任意的 而是锁定到特定的轴 则相交很简单 您可以通过检查它们的边界来检查它们是否在所有三个维度上相交 以查看它们在所有三个维度上是否相交或在彼此之内
  • 给定 3D 空间中的一条线,如何找到从它到一点的角度?

    我在 3D 空间中有两组点 我想画一条穿过两组点的中心的线 然后找到从该线到每个点的角度 从那里开始 我将根据两个角度的接近程度来确定两组中的匹配点 我知道如何找到每组点的中心 只需将它们平均在一起 并且我知道如何将它们匹配 甚至考虑到它们
  • 对一系列点重新采样

    我有一个 3d 点数组 想象一下球的轨迹 有 X 个样本 现在 我想对这些点重新采样 以便我有一个新数组 其中包含 y 个样本的位置 y 可以大于或小于 x 但不能小于 1 始终至少有 1 个样本 将原始数组重新采样为新数组的算法会是什么样
  • 如何在Android中渲染OBJ或FBX? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有几个 obj 和 fbx 格式的 3D 对象 其中包含 mtl 和纹理文件 我想知道哪个是在 An
  • 3D 游戏的 Libgdx 渲染层

    在我的第一个 3D 游戏中 我现在想要渲染地板 它实际上是一个平面 不是 libgdxPlane on y 0 我想添加一个Texture到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考
  • Direct3D 中的矩阵多阶

    关于在 Direct3D 中乘法矩阵以获得结果 我收到了两个相互矛盾的答案 教程确实规定从左到右相乘 这很好 但这不是我想象的方式 这是一个例子 OpenGL 从上到下阅读 GLRotatef 90 0f GLTranslatef 20 0
  • OpenGL z轴指向哪里?

    我正在尝试了解 OpenGL 坐标系 我到处都看到它被描述为右撇子 但这与我的经验不符 我尝试绘制一些形状和 3 d 对象 我发现 z 轴显然指向 屏幕 而 x 指向右侧 y 指向上方 这是左手坐标系的描述 我缺少什么 编辑 例如 http
  • Unity3D:在 AA 解析后绘制粒子以提高性能

    我正在尝试评估 MSAA 对 Unity 中含有大量粒子的场景的影响 为此 我需要 使用 8x MSAA 绘制场景中的所有非粒子对象 使用上一个通道中解析的深度缓冲区来渲染所有 将非遮挡粒子系统转移到较小的渲染目标上 将 2 的颜色缓冲区与
  • 如何知道一个点是否在复杂的 3D 形状内(.ply 文件)

    我正在研究一个Java女巫项目真是要了我的命 经过几天在不同论坛上的研究 寻找我真正需要的东西 我来寻求你的帮助 我的数据 ply 文件 包含由许多三角形组成的 3D 形状 一个点 3D坐标 我想知道这个点是否包含在复杂的 3D 形状内 我
  • GL_CULL_FACE使所有对象消失

    我正在尝试在 openGL3 3 中创建一些简单的多边形 我有两种类型的对象 具有以下属性 对象 1 10 个顶点 按顺序在下面列出 存储在GL ARRAY BUFFER并使用GL TRIANGLE FAN v x y z w v 0 0
  • 如何挤出平面 2D 网格并赋予其深度

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

随机推荐

  • 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 中的分类方式 可以将三维人体形状重建粗略的分为参数化方法与非参数化方法 本次先介绍参数化方法 参数化人体形状重建方法依赖于某个基于统计得到的人体参数化模型 仅需一组低维向量