前言

因为实验需要用到拉普拉斯形变,但找了好久找到一个非常适合入门的资料。再此记录下我的学习过程,也算搬运翻译过来。

Introduction / Basic Laplacian Mesh Representation

首先本文的代码中的拉普拉斯形变是作用在三角网格组成的3D model上的。一个三维模型是由很多个三角网格组成,每个三角网格有三个顶点。

拉普拉斯网格通过跟踪微分顶点信息而不是绝对信息来存储三角形网格的几何信息。当在网格上执行某些变换(尤其是变形)时,它可以有效地保存顶点间的关系。它还允许以非常自然的方式在整个表面上进行平滑的插值。

所以拉普拉斯形变,最重要的就是保存了顶点间的关系。当我们移动一个点后,其他的顶点为了维持一个能量函数不变,从而跟着移动。

Laplacian 的主要思想是:

N(i)表示i的邻居,\(w_{ij}\)就是各种权(重需要计算)。注意后面那个分式的的分母就是所有权重之和。如果i的相邻顶点的权重全部是1,那么:

这里的d_i表示i的邻居个数。这种权重全为1的情况也叫做umberalla weighting。加入有5个邻接顶点,每个都是1/5。这是什么,这就是这5个顶点组成的几何体的中心。

另外一种比较常见的权重是余切权重:

参考这幅图,选择的权重与角的余切值有关。点i和j相连的边所对的两个角的余切值组成权重:

这样的给邻接点赋值权重,能更好的保存它的几何信息。

构造delta坐标系

然后构造delta坐标系,也就是记录每个点i与所有点关系的一个权重矩阵:

  • 如果j是i的邻居,那么让矩阵[i,j]处的值等于\(-w_{ij}\),这里的\(w_{ij}\)就是我们上面说的那些不同的权重算法,任选一种。这里选余切重。
  • 如果j不是i的邻居且j不是i,那么令矩阵[i,j]处的值为0。
  • 如果j==i,那么令矩阵[i,j]处的值为1。

简言之,邻接点赋值为\(w_{ij}\),i点处赋值为1,其他非邻接赋值为0。

待更新

Mesh Reconstruction

待更新

Mesh Deformation

待更新

2D Parameterization

待更新

Membrane Surface

待更新

Surface Function Interpolation

待更新

Discrete Mean Curvature Approximation

待更新

Spectral Eigenanalysis

待更新

代码实现(python)

待更新

实验效果

待更新

Laplacian Mesh Editing 拉普拉斯形变(待回学校更新)的更多相关文章

  1. 第6讲 | 交换机与VLAN:办公室太复杂,我要回学校

    第6讲 | 交换机与VLAN:办公室太复杂,我要回学校 拓扑结构是怎么形成的? 一个交换机肯定不够用,需要多台交换机,交换机之间连接起来,就形成一个稍微复杂的拓扑结构. 如何解决常见的环路问题? 包转 ...

  2. Android之线程回掉更新ui

    一:工作线程中的回掉更新UI public class MainActivity extends AppCompatActivity { private int i; private Callback ...

  3. Laplacian matrix 从拉普拉斯矩阵到谱聚类

    谱聚类步骤 第一步:数据准备,生成图的邻接矩阵: 第二步:归一化普拉斯矩阵: 第三步:生成最小的k个特征值和对应的特征向量: 第四步:将特征向量kmeans聚类(少量的特征向量):

  4. 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校

        上一次,我们通过宿舍联网打魔兽的需求,认识了如何通过物理层和链路层组建一个宿舍局域网.今天,让我们切换到稍微复杂点的场景,办公室.     在这个场景里,就不像在宿舍那样,搞几根网线,拉一拉, ...

  5. 机器学习进阶-图像梯度计算-scharr算子与laplacian算子(拉普拉斯) 1.cv2.Scharr(使用scharr算子进行计算) 2.cv2.laplician(使用拉普拉斯算子进行计算)

    1. cv2.Scharr(src,ddepth, dx, dy), 使用Scharr算子进行计算 参数说明:src表示输入的图片,ddepth表示图片的深度,通常使用-1, 这里使用cv2.CV_6 ...

  6. 拉普拉斯矩阵(Laplacian Matrix) 及半正定性证明

    摘自 https://blog.csdn.net/beiyangdashu/article/details/49300479 和 https://en.wikipedia.org/wiki/Lapla ...

  7. opencv —— Laplacian 拉普拉斯算子、二阶导数用于边缘检测

    Laplacian 算子简介 求多元函数的二阶导数的映射又称为 Laplacian 算子:   计算拉普拉斯变换:Laplacian 函数 void Laplacian(InputArray src, ...

  8. 三维网格形变算法(Gradient-Based Deformation)

    将三角网格上的顶点坐标(x,y,z)看作3个独立的标量场,那么网格上每个三角片都存在3个独立的梯度场.该梯度场是网格的微分属性,相当于网格的特征,在形变过程中随控制点集的移动而变化.那么当用户拖拽网格 ...

  9. 三维网格形变算法(Laplacian-Based Deformation)

    网格上顶点的Laplace坐标(均匀权重)定义为:,其中di为顶点vi的1环邻域顶点数. 网格Laplace坐标可以用矩阵形式表示:△=LV,其中,那么根据网格的Laplace坐标通过求解稀疏线性方程 ...

随机推荐

  1. Educational Codeforces Round 81 (Rated for Div. 2) - D. Same GCDs(数学)

    题目链接:Same GCDs 题意:给你两个数$a$,$m(1 \leq a < m \leq 10^{10})$,求有多少个$x$满足:$0 \leq x < m$且$gcd(a,m)= ...

  2. 消息队列(五)--- RocketMQ-消息存储1

    问题 : 部署时如何知道自己是 broker 还是 NameServer topic 订阅信息放在哪里 broker 的作用到底是什么 纪录是如何持久化的 群发的时候,是如何储存消息的 send 方法 ...

  3. Vue-项目搭建时的常用配置

    1.Vue静态资源存放的选择 assets: 编译过程中会被webpack处理理解为模块依赖,只支持相对路径的形式,assets放可能会变动的文件.static: 存放第三方文件的地方,不会被webp ...

  4. 04-Docker-Container管理操作

    目录 04-Docker-Container管理操作 参考 容器运行须知 容器生命周期 容器管理命令 1. 生命周期 2. 查看操作 3. 命令执行 4. 文件复制 容器用途分类 04-Docker- ...

  5. windows server 2016系统激活

    slmgr /ipk CB7KF-BWN84-R7R2Y-793K2-8XDDG slmgr /skms kms.03k.org slmgr /ato

  6. php 基础 判断类型

    八.PHP中判断类型 is_bool():判断是否是布尔型 is_int().is_integer()和 is_long():判断是否为整型. is_float().is_double()和 is_r ...

  7. Python3.5学习之旅——day6

    面向对象编程的学习 一.定义 首先跟大家介绍一位资深的程序员前辈说过的编程心得: 1.写重复代码是非常不好且低级的行为 2.完成的代码需要经常变更 所以根据以上两个心得,我们可以知道写的代码一定要遵循 ...

  8. 安卓开发:Password verification failed

    2019年8月5日更新: 我把Android Studio升级到3.4.2版本后,发现下图中的按钮已经不见了,所以本文中之前的创建签名文件的方法已经不行了- ...3.4.2版本是这样的---> ...

  9. JavaScript的技巧45招

    JavaScript奇技淫巧45招 来自仲老师的分享: 原文地址[http://chensd.com/2015-01/45-useful-javascript-tips-tricks-and-best ...

  10. Mac 下 vim 常用命令

    vim 三种模式:命令模式.插入模式.底线命令模式. 切换模式: 命令模式: 启动 vim 进入命令模式: i 切换到插入模式,以输入字符. x   删除当前光标所在处的字符. :   切换到底线命令 ...