余切拉普拉斯算子推导 cotangent Laplace-Beltrami operator

欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。

参考自polygon mesh proccessing这本书

基本思路及原理

余切拉普拉斯算子是一种考虑了网格底层几何联系的一种算子,在网格平滑,参数化等算法中经常被用到。它是受到了有限元思绪启发推导出来的。
用到有限元中的散度定理。
目标是对三角平面分片线性函数的梯度的散度进行面积积分。
散度定理如下,对散度的面积分,可以转化为梯度对边界的线积分。
∫ A i d i v    F ( u ) d ⁡ A = ∫ ∂ A i F ( u ) ⋅ n ( u ) d ⁡ s \int_{A_i}div\;F(u)\operatorname dA = \int_{\partial A_i}F(u) \cdot n(u) \operatorname ds AidivF(u)dA=AiF(u)n(u)ds

上述式子把对 A i 面积的积分和对 A i 边界( ∂ A i )的积分联系起来。 其中 n 代表与三角形共面并垂直于边界向外的单位向量。 上述式子把对A_i面积的积分和对A_i边界(\partial A_i)的积分联系起来。\\其中 \boldsymbol n 代表与三角形共面并垂直于边界向外的单位向量。 上述式子把对Ai面积的积分和对Ai边界(Ai)的积分联系起来。其中n代表与三角形共面并垂直于边界向外的单位向量。

拉普拉斯积分推导

在这里插入图片描述
将上述定理应用于拉普拉斯,可以得到下述公式

∫ A i Δ f ( u ) d ⁡ A = ∫ A i d i v ∇ f ( u ) d ⁡ A = ∫ ∂ A i ∇ f ( u ) ⋅ n ( u ) d ⁡ s \int_{A_i}{\Delta f(\boldsymbol u) \operatorname d A} = \int_{A_i}{div \nabla f(\boldsymbol u) \operatorname dA} =\int_{\partial A_i}{\nabla f(\boldsymbol u) \cdot \boldsymbol {n(u)} \operatorname d s} AiΔf(u)dA=Aidivf(u)dA=Aif(u)n(u)ds

我们可以对每个三角内的区域进行积分,如上图的右图,对于单个三角形,积分如下,三角形的梯度是常量可以提出来,a和b是中点。

∫ ∂ A i ∩ T ∇ f ( u ) ⋅ n ( u ) d ⁡ s = ∇ f ( u ) ⋅ ∫ ∂ A i ∩ T n ( u ) d ⁡ s = ∇ f ( u ) ⋅ ( a − b ) ⊥ = 1 2 ∇ f ( u ) ⋅ ( x j − x k ) ⊥ \int_{\partial A_i \cap T}{\nabla f(\boldsymbol u) \cdot \boldsymbol {n(u)} \operatorname d s} = \nabla f(\boldsymbol u) \cdot \int_{\partial A_i \cap T}{\boldsymbol {n(u)} \operatorname d s}= \nabla f(\boldsymbol u) \cdot (\boldsymbol a-\boldsymbol b)^\perp\\ =\frac 1 2 \nabla f(\boldsymbol u) \cdot (\boldsymbol {x_j}-\boldsymbol {x_k})^\perp AiTf(u)n(u)ds=f(u)AiTn(u)dsf(u)(ab)=21f(u)(xjxk)

下面解释一下上式中(a-b)怎么来的。

请添加图片描述
我们先把线的法向转90度与中间的小三角形平齐。
对线的积分就是乘上线的长度,所以旋转以后的分积就是小三角形三条边形成的向量。
原来积分的结果应该是
(a-c)+(c-b)

由于(a-c)+(c-b)+(b-a)=0
所以(a-b) = (a-c)+(c-b)

转化成余切形式

三角形的梯度是一个常量,代入上式,得到

∫ ∂ A i ∩ T ∇ f ( u ) ⋅ n ( u ) d ⁡ s = ( f j − f i ) ( x i − x k ) ⊥ ⋅ ( x j − x k ) ⊥ 4 A T + ( f k − f i ) ( x j − x i ) ⊥ ⋅ ( x j − x k ) ⊥ 4 A T \int_{\partial A_i \cap T}{\nabla f(\boldsymbol u) \cdot \boldsymbol {n(u)} \operatorname d s} = (f_j-f_i)\frac {(x_i-x_k)^\perp \cdot (x_j-x_k)^\perp}{4A_T} + (f_k-f_i)\frac {(x_j-x_i)^\perp \cdot (x_j-x_k)^\perp}{4A_T} AiTf(u)n(u)ds=(fjfi)4AT(xixk)(xjxk)+(fkfi)4AT(xjxi)(xjxk)

向量的点乘和叉乘可以转化成余弦和正弦。

γ j , γ k 表示 v j , v k 点上对应的角 \gamma_j,\gamma_k表示 v_j, v_k 点上对应的角 γj,γk表示vj,vk点上对应的角

面积
A T = 1 2 s i n γ j ∥ x j − x i ∥ ∥ x j − x k ∥ = 1 2 s i n γ k ∥ x i − x k ∥ ∥ x j − x k ∥ A_T=\frac {1} {2} sin \gamma_j\left\|x_j-x_i\right\|\left\|x_j-x_k\right\|=\frac {1} {2} sin \gamma_k\left\|x_i-x_k\right\|\left\|x_j-x_k\right\| AT=21sinγjxjxixjxk=21sinγkxixkxjxk

点乘
c o s γ j = ( x j − x i ) ⋅ ( x j − x k ) ∥ x j − x i ∥ ∥ x j − x k ∥ cos \gamma_j = \frac {(x_j-x_i)\cdot(x_j-x_k)}{\left\|x_j-x_i\right\|\left\|x_j-x_k\right\|} cosγj=xjxixjxk(xjxi)(xjxk)

c o s γ k = ( x i − x k ) ⋅ ( x j − x k ) ∥ x i − x k ∥ ∥ x j − x k ∥ cos \gamma_k = \frac {(x_i-x_k)\cdot(x_j-x_k)}{\left\|x_i-x_k\right\|\left\|x_j-x_k\right\|} cosγk=xixkxjxk(xixk)(xjxk)

将上面公式代入式子可得到

∫ ∂ A i ∩ T ∇ f ( u ) ⋅ n ( u ) d ⁡ s = 1 2 ( c o t γ k ( f j − f i ) + c o t γ j ( f k − f i ) ) \int_{\partial A_i \cap T}{\nabla f(\boldsymbol u) \cdot \boldsymbol {n(u)} \operatorname d s} = \frac 1 2 (cot \gamma_k(f_j-f_i)+cot \gamma_j(f_k-f_i)) AiTf(u)n(u)ds=21(cotγk(fjfi)+cotγj(fkfi))

上面公式是对一个三角形内区域的积分。
把所有三角形各分加起来,可以发现每条边都对应两个角(看最上面那张图左边),整体公式如下。

∫ A i Δ f ( u ) d ⁡ A = 1 2 [ ∑ v j ∈ N ( v i ) ( c o t α i , j + c o t β i , j ) ( f j − f i ) ] \int_{A_i}{\Delta f(\boldsymbol u) \operatorname d A} = \frac 1 2 \left [\displaystyle \sum_{v_j\in N(v_i)}(cot \alpha_{i,j}+cot \beta_{i,j})(f_j-f_i)\right ] AiΔf(u)dA=21 vjN(vi)(cotαi,j+cotβi,j)(fjfi)

得到点的拉普拉斯公式如下

Δ f ( v i ) = 1 2 A i [ ∑ v j ∈ N ( v i ) ( c o t α i , j + c o t β i , j ) ( f j − f i ) ] \Delta f(v_i) = \frac {1} {2A_i} \left [\displaystyle \sum_{v_j\in N(v_i)}(cot \alpha_{i,j}+cot \beta_{i,j})(f_j-f_i)\right ] Δf(vi)=2Ai1 vjN(vi)(cotαi,j+cotβi,j)(fjfi)


本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。

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

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

相关文章

Llama 2: Open Foundation and Fine-Tuned Chat Models

文章目录 TL;DRIntroduction背景本文方案 实现方式预训练预训练数据训练细节训练硬件支持预训练碳足迹 微调SFTSFT 训练细节 RLHF人类偏好数据收集奖励模型迭代式微调(RLHF)拒绝采样(Rejection Sampling)PPO多轮一致性的系统消息&…

2023 年第二届钉钉杯大学生大数据挑战赛 初赛 B:美国纽约公共自行车使用量预测分析 问题二Python代码分析

2023 年第二届钉钉杯大学生大数据挑战赛 初赛 B:美国纽约公共自行车使用量预测分析 问题二 相关链接 【2023 年第二届钉钉杯大学生大数据挑战赛】 初赛 B:美国纽约公共自行车使用量预测分析 问题一Python代码分析 【2023 年第二届钉钉杯大学生大数据挑…

Tensorflow学习

一、处理数据的结构 案例代码如下: import tensorflow.compat.v1 as tf tf.disable_v2_behavior() import numpy as np# create data x_data np.random.rand(100).astype(np.float32) y_data x_data*0.1 0.3# 创建结构(一维结构) Weights tf.Variable(tf.random.uniform(…

Megatron-LM、NVIDIA NeMo、model_optim_rng.pt 文件是什么?

本文涉及以下几个概念,分别是: Megatron和Megatron-LM-v1.1.5-3D_parallelism NVIDIA NeMo Megatron和Megatron-LM-v1.1.5-3D_parallelism是什么? Megatron是由NVIDIA开发的一种用于训练大规模语言模型的开源框架。它旨在提供高效的分布式…

安科瑞能源物联网以能源供应、能源管理、设备管理、能耗分析的能源流向为主线-安科瑞黄安南

摘要:随着科学技术的发展,我国的物联网技术有了很大进展。为了提升电力抄表服务的稳定性,保障电力抄表数据的可靠性,本文提出并实现了基于物联网的智能电力抄表服务平台,结合云计算、大数据等技术,提供电力…

雷达信号处理自学总结(持续更新)

傅里叶变换的频率分辨率 频率分辨率 采样频率 信号长度 频率分辨率 \frac{采样频率 }{信号长度} 频率分辨率信号长度采样频率​ 可用numpy模块的fft.fftfreq函数求出傅里叶变换的频率分辨率。 https://numpy.org/doc/stable/reference/generated/numpy.fft.fftfreq.html

opencv 图像距离变换 distanceTransform

图像距离变换:计算图像中每一个非零点距离离自己最近的零点的距离,然后通过二值化0与非0绘制图像。 #include "iostream" #include "opencv2/opencv.hpp" using namespace std; using namespace cv;int main() {Mat img, dst, dst…

关于position:fixed定位的位置不对的问题(即没有按照浏览器的窗口进行定位)

问题: 今天在开发过程中发现元素使用 position: fixed 时位置有问题,位置跟我写的位置对不上,后面在 MDN 上面找到了答案,下面是关于 position: fixed 的描述: fixed: 元素会被移出正常文档流,并…

通过Vue-cli解决前端跨域问题

1、找到vue.config.js 在vue.config.js当中增加如下配置 devServer: {port: 3001,proxy: {/agent: {target: http://10.8.50.250:6666,ws: false, //true,开启ws, 如果是http代理此处可以不用设置changeOrigin: true, // 如果接口跨域,需要进行这个参…

Rust之包、单元包及模块

包:一个用于构建、测试并分享单元包的Cargo功能;单元包:一个用于生成库或可执行文件的树形模块结构;模块及use关键字:被用于控制文件结构、作用域及路径的私有性;路径:一种用于命名条目的方法&a…

【电商小知识】7个步骤让你快速了解跨境电商!

近几年来,随着互联网的发展,国内外的商业贸易越来越流畅,直播电商的火爆也带动着一大批相关的产业链发展,其中跨境电商就是尤为突出的一个。尽管在国内做跨境电商的企业数量非常之多,但仍有许多新人争相入局&#xff0…

安防监控视频汇聚平台EasyCVR修改录像计划等待时间较长是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…

Ceph部署方法介绍

Ceph部署方法介绍 Installing Ceph — Ceph Documentation Ceph环境规划 admin是一个部署节点

计算机视觉:图像质量评价指标之 PSNR 和 SSIM

1. PSNR (Peak Signal-to-Noise Ratio) 峰值信噪比 由上可见,PSNR相对MSE多了一个峰值,MSE是绝对误差,再加上峰值是一个相对误差指标 一般地,针对 uint8 数据,最大像素值为 255,;针对浮点型数据&#xff…

低代码开发重要工具:jvs-flow(流程引擎)审批功能配置说明

流程引擎场景介绍 流程引擎基于一组节点与执行界面,通过人机交互的形式自动地执行和协调各个任务和活动。它可以实现任务的分配、协作、路由和跟踪。通过流程引擎,组织能够实现业务流程的优化、标准化和自动化,提高工作效率和质量。 在企业…

Python(Web时代)——初识flask

flask简介 介绍 Flask是一个用Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务。它是BSD授权的,一个有少量限制的免费软件许可。它使用了 Werkzeug 工具箱和 Jinja2 模板引擎。 Flask 的设计理念是简单、灵活、易于扩展&a…

Java后端程序员不得不知道的 API 接口常识

说实话,我非常希望自己能早点看到本篇文章,大学那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写。 至今我仍清晰地记得,那个电商教程是怎么定义接口的: 管它是增加、修改、删除、带参查询&…

【Hammerstein模型的级联】快速估计构成一连串哈默斯坦模型的结构元素研究(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 💥1 概述 在许多振动应用中,所研究的系统略微非线性。Hammerstein模型的级联可以方便地描述这样的系统。Hammerstein提供了一种基于指数正弦…

关于在虚拟机CentOS7的Docker下安装Oracle

这不三阶段了,要上Oracle了,感觉这个班卷的程度到位。二阶段我就上了ElementUI和MyBatis,项目也是用这些技术写的,整体钻研程度还行。于是布置了两个任务:在windows下安一下Oracle,在windows下安装Oracle那…

需求管理全过程流程图及各阶段核心关注点详解

分析报告指出,多达76%的项目失败是因为差劲的需求管理,这个是项目失败的最主要原因,比落后的技术、进度失控或者混乱的变更管理还要关键。很多项目往往在开始的时候已经决定了失败,谜底就在谜面上,开始就注定的失败&am…