头发的方向图(2D和3D)与合成

首先,我们从一个不受光照限制的环境中拍摄一组输入图像,这些图像包含了头发的不同视角和姿态。我们对这些图像进行半自动的分割,将头发从背景中分离出来,然后使用PMVS ,一种先进的多视角立体算法,来重建一个点云。我们通常使用30到50张输入图像来进行重建。
然后,我们对重建的点云和PMVS估计的法向量进行滤波,因为它们可能会有噪声。我们使用移动最小二乘法(MLS)来平滑它们:对于每个点,我们用最优的平面来拟合它附近的加权邻居点。平面的法向量和点在平面上的投影就用来更新点的原始法向量和位置。我们使用2毫米的标准差来得到合理的滤波结果。

接下来,我们对滤波后的点云进行方向场的计算,这个方向场表示了每个点的3D方向。我们使用了一种基于图像的方法,它利用了输入图像中的方向信息。我们首先对每张输入图像进行方向滤波,得到每个像素的2D方向。然后,我们对每个点云中的点,找到它在输入图像中的对应像素,以及它的邻居点在输入图像中的对应像素。我们用这些像素的方向来计算点云中的点的3D方向,这个方向是无指向性的,只表示方向但不区分左右。我们使用了一种基于PCA的方法,它可以从多个2D方向中推断出一个3D方向。

 详细:从输入图像中提取出每个像素的方向信息,这个信息可以帮助网络重建出毛发的形状和流动性。

 在点云上生长毛发段的过程是这样的:对于每个点云中的点,我们根据它的方向,找到它的下一个邻居点,然后将它们连接成一条线段,这条线段就是一个毛发段的一部分。我们重复这个过程,直到遇到以下情况之一:1) 没有找到合适的邻居点;2) 邻居点的方向与当前点的方向差异过大;3) 邻居点已经被其他毛发段占用。这样,我们就可以在点云上生长出一组局部的毛发段,它们可以近似地用一条曲线来表示。

用带状物覆盖毛发段的过程是这样的:对于每个毛发段,我们用一个固定的宽度和厚度的带状物来覆盖它,这个带状物的方向和长度都是由毛发段的数据决定的。然后,我们对每个带状物进行聚类,根据它们的位置和方向的相似性,将它们分成若干个组,每个组包含一些相邻的带状物,它们可以近似地用一条曲线来表示。这样,我们就可以用带状物覆盖点云,揭示出局部一致的毛发束结构,这些结构可以反映出头发的纹理和流动性,而且也可以与导向毛发关联,用于动画。

- 发现带状物之间的缺失连接的过程是这样的:由于遮挡和缺失数据,带状物之间可能存在一些空隙,这些空隙会影响毛发束的完整性和连续性。为了解决这个问题,我们尝试用圆弧来拟合带状物覆盖的毛发段,看看是否可以在空隙处建立连接。我们对每个带状物,找到它的一个端点,然后在它的邻域内,寻找另一个带状物的一个端点,看看它们是否可以用一个圆弧来连接。我们使用了一种基于最小二乘法的方法,来计算圆弧的参数,包括圆心、半径和角度。我们还定义了一个拟合误差的度量,它取决于圆弧和毛发段的距离和方向的差异。如果拟合误差小于一个阈值,我们就认为这两个带状物之间有一个合理的连接,我们将这个连接编码在一个连接图中,用于后续的分析和优化。
- 对带状物进行方向分析的过程是这样的:由于方向场的180度歧义,带状物的方向可能是不确定的,这会导致毛发束的方向不一致或者不合理。为了解决这个问题,我们对带状物进行一个全局的方向分析,使用一个马尔可夫随机场(MRF)公式,来优化每个带状物的方向。我们的目标是使得带状物的方向尽可能地与连接图中的连接和带状物方向的局部提示相兼容。连接图中的连接表示了带状物之间的拓扑关系,它们应该满足一些几何约束,例如,相邻的带状物的方向应该是平滑的,而不是突然转弯的。带状物方向的局部提示表示了带状物的形状特征,它们可以从点云中的数据中提取出来,例如,带状物的曲率、长度和方向变化等。我们使用了一种基于图割的方法,来求解这个MRF公式,得到每个带状物的最优方向。这样,我们就可以保证毛发束的方向是一致和合理的。
- 将带状物连接成毛发束的过程是这样的:在进行了连接和方向分析之后,我们就可以将带状物连接成完整的毛发束了。我们的目标是使得每个毛发束都能从头皮开始,到头发的末端结束,而且不会有断裂或重叠的现象。我们使用了一种基于深度优先搜索的方法,来遍历连接图中的所有节点,即带状物的端点,然后根据它们的连接和方向,将它们连接成一条连续的曲线,这条曲线就是一个毛发束。我们重复这个过程,直到遍历完所有的节点,或者达到预设的毛发束的数量。这样,我们就可以从带状物中生成一组完整的毛发束,它们可以反映出头发的结构和风格,而且也可以作为导向毛发,用于动画和模拟。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/207049.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年09月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 点击绿旗,运行程序后,舞台上的图形是?( ) A:画笔粗细为4的三角形 B:画笔粗细为5的六边形 C:画笔粗细为4的六角形 D:画笔粗细为5的三角形 答案:D 第2题 如下图所示,从所给…

Selenium浏览器自动化测试框架

介绍 Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome&#xff…

Mysql 递归查询子类Id的所有父类Id

文章目录 问题描述先看结果表结构展示实现递归查询集合查询结果修复数据 问题描述 最近开发过程中遇到一个问题,每次添加代理关系都要去递归查询一下它在不在这个代理关系树上.很麻烦也很浪费资源.想着把代理关系的父类全部存起来 先看结果 表结构展示 表名(t_agent_user_rela…

python爬虫教程:selenium常用API用法和浏览器控制

文章目录 selenium apiwebdriver常用APIwebelement常用API 控制浏览器 selenium api selenium新版本(4.8.2)很多函数,包括元素定位、很多API方法均发生变化,本文记录以selenium4.8.2为准。 webdriver常用API 方法描述get(String url)访问目标url地址&…

LINUX入门篇【8】----计算机组成原理以及OS知识的总结

前言: 从而本篇文章开始,我们将进入LINUX的进程篇,但学习进程之前,我们首先需要重新认识我们的计算机,并且正确认识到控制进程的OS,即操作系统是怎样在计算机运行的过程中起到作用的。下面就让我们一同去了…

算法刷题-动态规划2

算法刷题-动态规划2 珠宝的最高价值下降路径最小和 珠宝的最高价值 题目 大佬思路 多开一行使得代码更加的简洁 移动到右侧和下侧 dp[ i ][ j ]有两种情况: 第一种是从上面来的礼物最大价值:dp[ i ][ j ] dp[ i - 1 ][ j ] g[ i ][ j ] 第二种是从左…

xorm源码学习

文章目录 XORM源码浅析及实践ORMORM vs. SQLXORM软件架构 ORM 引擎 Engine——DBM*core.DB Golang:database/sql 源码基本结构连接复用,提高性能。增加数据库连接池数量连接管理 database/sql主要内容:sql.DB创建数据库连接sql.Open()DB.conn…

HTTPS协议的加密流程

目录 一,HTTPS是什么 二,两种加密方式 三,HTTPS的加密过程 3.1 引入对称加密 3.2 引入非对称加密 3.3 引入证书 一,HTTPS是什么 HTTPS也是一个应用层协议,它是在HTTP协议的基础上引入了一个加密层。因为HTTP协议…

《数据仓库入门实践》

前言: 1、问什么要写这篇博客? 随着自己在数仓岗位工作的年限增加,对数仓的理解和认知也在发生着变化 所有用这篇博客来记录工作中用到的知识点与经验 2、这篇博客主要记录了哪些内容? 在日常工作中,发现刚接触不久数仓…

404 - File or directory not found.

iis部署的时候容易出现以下错误,造成的主要原因可能是IIS没有安装好某个组件或插件: 04-找不到文件或目录。 您要查找的资源可能已被删除、名称已更改或暂时不可用。 如果遇到该问题,安装iis的时候记得安装以下

Nginx配置Websocket

WebSocket 和HTTP虽然是不同协议,但是两者“握手”方式兼容。通过HTTP升级机制,使用HTTP的Upgrade和Connection协议头的方式可以将连接从HTTP升级为WebSocket。 Websocket 使用 ws 或 wss 的统一资源标志符,类似于 HTTPS,其中 wss…

智能座舱架构与芯片 - (1) 背景篇

一、软件定义汽车 1.1 什么是软件定义汽车 软件定义汽车(Software Defined Vehicles, SDV)的核心思想是,决定未来汽车的是人工智能为核心的软件技术,而不再是汽车的马力大小,是否真皮座椅,机械性能的好坏。软件定义汽车的终极目…