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

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

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

环卫大姐张建娜:用实际行动诠释英语学习重要性

近日,一位身穿橘黄色工作服,手拿扫把服务于三里屯使馆区的环卫大姐张建娜,凭借一口流利的英语为外国人指路的视频在网上引起关注。不仅引发了大家对她“英语说的真好”的感叹,还有对如何学好英语的思考,以及引发了人们重新审视英语在日常生活中的重要性。 张建娜表示,其实英语…

玻色量子“揭秘”之可满足性问题(SAT)与QUBO建模

​ 摘要:布尔可满足性问题(Boolean Satisfiability Problem,简称SAT问题)是逻辑学和计算机科学中的一个问题,它的目的是确定是否存在一种解释,使给定的布尔公式成立。换句话说,它询问给定布尔公…

会议动态 | 祝贺2023 中国商品混凝土年会在上海隆重召开!

2023年11月19日-21日,由(国家)建筑材料工业技术情报研究所、中国散装水泥推广发展协会混凝土专委会主办的"笃信固本 行稳致远"——2023 第十九届全国商品混凝土可持续发展论坛暨2023中国商品混凝土年会在上海隆重召开! …

内测分发平台的合作生态和生态效应如何

大家好,我是咕噜-凯撒,随着移动互联网和智能设备的快速发展,越来越多的开发者和企业开始关注产品的质量和体验。而内测分发平台则成为了一种重要的工具,能够帮助他们更好地测试、优化和推广产品。在此过程中,内测分发平…

Flink 替换 Logstash 解决日志收集丢失问题

在某客户日志数据迁移到火山引擎使用 ELK 生态的案例中,由于客户反馈之前 Logstash 经常发生数据丢失和收集性能较差的使用痛点,我们尝试使用 Flink 替代了传统的 Logstash 来作为日志数据解析、转换以及写入 ElasticSearch 的组件,得到了该客…

完美解决:在Ubuntu18.04下ROS Melodic基于python3的cv_bridge的一点子歪门邪道

由于在Ubuntu18.04下ROS Melodic是运行在python 2.7环境下,而我的程序需要运行在anaconda创建的python 3.x环境里,这就需要用到cv_bridge这个库,而不出意外的,各种报错,比如: from cv_bridge.boost.cv_bri…

SOLIDWORKS Explorer是什么?

前几天小编在微信上跟人聊天的时候被问到这样的问题: 这个是干什么用的?看着好像没有建模的功能。。。。。 当时我的内心是这样的 。。。。。。。抱歉,是没做好普及工作的小编的锅。。。。。。这个就不是用来建模用的,通常只有…

Raptor安装

Raptor官网:https://raptor.martincarlisle.com/ 进入官网后,下拉找到 Download RAPTOR,windows系统的选择Windows Users 下载完成后打开,选择“next” 修改一下路径,不要放到C: 继续next 完结撒花

Thread类常用成员方法

点击链接返回标题-> Java线程的学习-CSDN博客 目录 前言 有关线程名字的成员方法: String getName() void setName(String name) Thread(String name) 获取线程对象的成员方法: static Thread currentThread() 让线程睡眠的成员方法&#xff1…

Python基础【三】--数据类型-Number【2023.11.23】

1.数值类型 Number数据类型只要包括三个分别是:整型(int)、浮点型(float)、复数(complex) 整型:包括正整数、负整数。如:1024、-1024。整型有四种进制表示,分…

Rust语言入门教程(二) - 变量与作用域

变量与作用域 变量的声明与初始化 Rust的基本语法格式如下: fn main(){let bunnies 2; }语句以分号结尾,用花括号包含语句块。 Rust的语法其实借鉴了很多其他的语言,比如C语言和Python, 所以变量定义的格式看起来也跟很多我们…

Windows如何使用key登录Linux服务器

场景:因为需要回收root管理员权限,禁止root用户远程登录,办公环境只允许普通用户远程登录,且不允许使用密码登录。 一、生成与配置ssh-key 1.使用root管理员权限登录到目标系统。 2.创建一个新的普通用户,和设置密码用…

java--static的注意事项

1.使用类方法、实例方法时的几点注意事项 ①类方法中可以直接访问类的成员,不可以直接访问实例成员。 ②实例方法中既可以直接访问类成员,也可以直接访问实例成员。 ③实例方法中可以出现this关键字,类方法中不可以出现this关键字的。

教育机构拒绝“数据陷阱”,群硕将英孚新一代教学管理系统搬上桌

为什么小机构年年担心招生不够,英孚却令学生家长趋之若鹜? 区别就在教学管理方式。为了更好地管理分布全球的校区、学生和老师,英孚应用了一套教学管理系统,帮助学校管理学员,帮老师智慧排课,帮助家长记录…

地埋式积水监测仪厂家直销推荐,致力于积水监测

地埋式积水监测仪是一种高科技设备,能够实时监测地面积水深度,并及时发出预警信息,有效避免因积水而产生的安全隐患。这种智能监测仪可以安装在城市道路、立交桥、地下车库等易积水地势较低的地方,以确保及时监测特殊地段的积水&a…

边海防可视化智能视频监控与AI监管方案,助力边海防线建设

一、背景与需求 我国有3万多公里的边境线和海岸线,随着我国边海防基础设施建设的快速发展,边海安防也逐渐走向智能化。传统人工巡防的方式已经无法满足边海智能化监管的需求,在沿海、沿边地区进行边海智慧安防视频监控系统等边海防基础设施建…

TP5制作图片压缩包

目标:将多张图片制成在一个压缩包内,供调取使用 public function test() {//引入压缩包类$zip new \ZipArchive();//新定义一个zip包$zipname ROOT_PATH./public/zip/.date("YmdHis").rand(111,999)..zip;if ($zip->open($zipname, \ZipArchive::CREATE) true…

mongo DB -- aggregate分组查询后字段展示

一、分组查询 在mongoDB中可以使用aggregate中的$group操作对集合中的文档进行分组,但是查询后的数据不显示其他字段,只显示分组字段 aggregate进行分组示例 db.collection.aggregate([{$group: {_id: "$field"}},]) 查询后显示 展开只显示两个字段 二、显示所有字段…

linux通过串口传输文件

简介 在嵌入式调试过程中,我们经常会使用调试串口来查看Log或者执行指令,其实,调试串口还有另一种功能,就是传输文件,本文说明使用MobaXterm串口工具来传输文件。 环境要求 嵌入式系统需要安装lsz和lrz,…

【深度学习实验】图像处理(一):Python Imaging Library(PIL)库:图像读取、写入、复制、粘贴、几何变换、图像增强、图像滤波

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 安装 PIL 库1. 图像读取和写入a. 图像读取b. 图像写入c. 构建新图像 2. 图像复制粘贴a. 图像复制b. 图像局部复制c. 图像粘贴 3. 几何变换a. 图像调整大小b. 图像旋转c. 图像翻转 4. 图像增强a.…