Spherical Harmonics (SH)球谐函数的原理及应用【3DGS】

news2024/12/12 19:57:09

Spherical Harmonics (SH)球谐函数的原理及应用【3DGS】

  • 前言
  • 球谐函数(Spherical Harmonics, SH)
    • 球谐函数不同阶的表达式以及有什么不同?
    • 具体介绍
      • 球谐函数
      • 基函数
      • 球谐函数

前言

高斯泼溅Gaussian Splatting (GS) GS 模型采用一组 3D 高斯函数来表示 3D 场景。每个高斯分布都由一组参数来表征,即指定其中心的位置(平均值)、定义高斯分布的形状和方向的协方差矩阵、控制透明度级别的不透明度及其颜色由球谐函数 (SH) 表示。

GS 通过优化所有 3D 高斯参数来表示辐射场。此外,GS算法的计算效率源于其渲染过程,它利用了高斯分量的投影特性。这种方法依赖于用一组密集的高斯函数来表示场景,在数学上表示为:
G = { ( N ( m i , Σ i ) , σ i , c i ) } i = 1 n , \mathcal{G} = \{ (\mathcal{N}(\mathcal{m}_i,\Sigma_i), \sigma_i, c_i) \}_{i=1}^{n}, G={(N(mi,Σi),σi,ci)}i=1n,其中 m i \mathcal{m}_i mi是位置, Σ i \Sigma_i Σi代表协方差, σ i \sigma_i σi是不透明度, c i c_i ci是第 i i i个分量的SH用于颜色表示。

GS 优化算法通过迭代图像合成过程并与训练视图进行比较来运行。该过程面临的挑战是由于 3D 到 2D 投影固有的维数降低导致高斯组件放置可能不准确。为了缓解这些问题,该算法结合了创建、删除和重新定位高斯分量的机制。这使得 GS 能够实现与 NeRF 相当的视觉质量,同时可能表现出更快的训练和推理时间。

本文主要介绍球谐函数的原理及应用。

球谐函数(Spherical Harmonics, SH)

球谐函数(Spherical Harmonics, SH)是数学中的一类特殊函数,它们在三维空间中用于描述依赖于方向的物理现象。这些函数在物理学、地球物理学、天文学、计算机图形学、量子力学等领域有着广泛的应用。

球谐函数是一组正交函数,定义在单位球面上。它们可以被看作是二维傅里叶级数在球面坐标系中的等价物,用来表示球面上的任何平方可积函数。球谐函数通常用 Y l m ( θ , φ ) Y_l^m(θ, φ) Ylm(θ,φ)表示,其中l是度(degree),m是阶(order),而θ和φ分别是极角(从z轴测量的角度)和方位角(从x轴测量的角度)。

球谐函数的形式如下:

Y l m ( θ , ϕ ) = K l m P l m ( cos ⁡ θ ) e i m ϕ Y_l^m(\theta, \phi) = K_l^m P_l^m(\cos\theta) e^{im\phi} Ylm(θ,ϕ)=KlmPlm(cosθ)eimϕ

这里:

  • K l m K_l^m Klm是一个归一化因子。
  • P l m P_l^m Plm是关联勒让德多项式(Associated Legendre Polynomials)。
  • e i m ϕ e^{im\phi} eimϕ表示复指数函数,它提供了方位角φ的周期性。

球谐函数有以下特性:

  1. 正交性:不同l或m值的球谐函数之间是正交的。
  2. 完备性:所有可能的球谐函数构成一个完备集,意味着任何一个定义在球面上的平方可积函数都可以通过球谐函数的线性组合来表示。
  3. 对称性:球谐函数具有不同的对称性质,这取决于它们的m和l值。

在实际应用中,球谐函数常用于:

  • 在计算机图形学中模拟光照效果,因为光照强度通常是方向性的。
  • 地球科学中,用于描述地球的引力场和磁场。
  • 量子力学中,原子轨道可以用球谐函数来描述。
  • 天文学中,用于分析宇宙微波背景辐射的各向异性。

球谐函数的使用能够极大地简化涉及到球面对称系统的计算,并且由于其良好的数学性质,使得许多问题的解析解成为可能。

球谐函数不同阶的表达式以及有什么不同?

球谐函数(Spherical Harmonics, SH)的不同阶和度( l l l m m m)对应于不同的表达式,这些表达式的形状和对称性随着 l l l m m m 的变化而变化。具体来说:

  • l l l 是度(degree),也称为球谐函数的总角动量量子数,在物理上它决定了波函数的能量水平以及角动量的大小。在数学上,它控制着函数的多项式部分的复杂程度。
  • m m m 是阶(order),或磁量子数,在物理上它与角动量的z分量相关联。在数学上,它决定了函数沿方位角方向的周期性和相位。

对于每个 l l l 值, m m m 的取值范围是从 − l -l l + l +l +l 的整数值。这意味着对于给定的 l l l,共有 2 l + 1 2l + 1 2l+1 个不同的 m m m 值。球谐函数的显式表达式通常涉及到关联勒让德多项式 P l m ( x ) P_l^m(x) Plm(x) 和复指数 e i m ϕ e^{im\phi} eimϕ,其中 x = cos ⁡ ( θ ) x = \cos(\theta) x=cos(θ)

一些低阶球谐函数的显式形式如下:

  • l = 0 l = 0 l=0 时,只有 m = 0 m = 0 m=0,这是常数项:
    Y 0 0 ( θ , ϕ ) = 1 2 1 π Y_0^0(\theta, \phi) = \frac{1}{2} \sqrt{\frac{1}{\pi}} Y00(θ,ϕ)=21π1

  • l = 1 l = 1 l=1 时,有三个 m m m 值 ( − 1 , 0 , + 1 -1, 0, +1 1,0,+1),分别对应于:
    Y 1 − 1 ( θ , ϕ ) = 1 2 3 2 π sin ⁡ ( θ ) e − i ϕ Y_1^{-1}(\theta, \phi) = \frac{1}{2} \sqrt{\frac{3}{2\pi}} \sin(\theta) e^{-i\phi} Y11(θ,ϕ)=212π3 sin(θ)eiϕ
    Y 1 0 ( θ , ϕ ) = 1 2 3 π cos ⁡ ( θ ) Y_1^0(\theta, \phi) = \frac{1}{2} \sqrt{\frac{3}{\pi}} \cos(\theta) Y10(θ,ϕ)=21π3 cos(θ)
    Y 1 + 1 ( θ , ϕ ) = − 1 2 3 2 π sin ⁡ ( θ ) e i ϕ Y_1^{+1}(\theta, \phi) = -\frac{1}{2} \sqrt{\frac{3}{2\pi}} \sin(\theta) e^{i\phi} Y1+1(θ,ϕ)=212π3 sin(θ)eiϕ

随着 l l l 的增加,球谐函数变得越来越复杂,包含了更高阶的多项式项,并且在球面上呈现出更复杂的图案。例如,当 l = 2 l = 2 l=2 时,会有五个不同的球谐函数,它们表现出类似于“四极子”的模式;而当 l = 3 l = 3 l=3 时,则会有七个球谐函数,表现出更复杂的“八极子”模式等。

不同阶的球谐函数的主要区别在于它们的空间分布特征、频率成分以及对称性。较高的 l l l 值意味着更复杂的空间结构,更多的节点(即函数值为零的地方),以及更高的频率成分。此外, m m m 的值影响了函数在方位角方向上的对称性:当 m = 0 m = 0 m=0 时,函数是关于z轴对称的;当 m ≠ 0 m \neq 0 m=0 时,函数具有螺旋状的不对称性。

在实际应用中,选择合适的 l l l m m m 取决于所研究现象的具体性质和所需的精度。例如,在计算机图形学中,较低的 l l l 值用于捕捉场景光照的大尺度特征,而较高的 l l l 值则用于表示细微的变化。

具体介绍

球谐函数

球谐(Spherical Harmonics)函数是一组基函数,通常用于表示球面上的函数。在计算机图形学中,球谐函数被广泛应用于光照和反射模型中,用来表示光照或反射的强度分布。

基函数

基函数其实是一个相对的概念,类似于空间中的基向量,基向量可以通过组合表示张成的空间中的所有向量。同理,基函数也可以通过线性or非线性组合来表示其张成的函数空间的函数, 傅里叶变换、球面谐波都是常见的基函数线性组合为原函数。

比如多项式基函数:
y 0 = 1 y 1 = x y 2 = x 2 y 3 = x 3 … . \begin{align} \begin{aligned} &y_{0} = 1 \\ &y_{1} = x \\ &y_{2} = x^2 \\ &y_{3} = x^3 \\ &…. \end{aligned} \end{align} y0=1y1=xy2=x2y3=x3.

球谐函数

SH,球谐函数,归根到底只是一组基函数,至于这组基函数是怎么来的,不管他。

说白了有了基函数,就可以把任意一个函数,描述成几个基函数的加权和了。

例如
y ≈ 0.1 y 0 + 0.3 y 1 + 0.8 y 2 + 0.001 y 3 + … y \approx 0.1 y_0 + 0.3 y_1 + 0.8 y_2 + 0.001 y_3+… y0.1y0+0.3y1+0.8y2+0.001y3+这时候,就相当于是把一个原始函数

变成了一组系数:

0.1, 0.3, 0.8, 0.001, …

一般的,能用的基函数个数越多,表达能力就越强。

本质上是一个有损压缩。有点像个密码本,你一本我一本,上面写了基函数的定义,这样传密码的时候只要传几个系数就可以了,系数传到我这儿,我能复原出y = f(x),只是没那么准确了。

以下面这个方波函数为例,黑色的这个方波函数不能准确的用几个正弦基函数的加权描述,但是当基函数用的个数越多,跟方波函数本身也就越接近。
在这里插入图片描述
球面坐标系的基长这样:
r 0 = f 0 ( θ , φ ) r 1 = f 1 ( θ , φ ) r 2 = f 2 ( θ , φ ) … . \begin{align} \begin{aligned} &r_0 = f_0(θ,φ) \\ &r_1 = f_1(θ,φ) \\ &r_2 = f_2(θ,φ) \\ &…. \end{aligned} \end{align} r0=f0(θφ)r1=f1(θφ)r2=f2(θφ).
最有名的球面基函数就是球谐函数了。球谐函数有很多很好的性质,比如正交性,旋转不变性(这边就不介绍了)。正交性说明每个基函数都是独立的,每个基函数都不能用别的基函数加权得到。

SH的基函数长这样(其中蓝色表示正数,黄色表示负数),一般尝试了解过SH的同学都见过这个图:
在这里插入图片描述
表达式长这样:
在这里插入图片描述
其实退化到二维来看,还是很简单的,二维的SH差不多长这样,蓝色表示正数,黄色表示负数:

(具体系数不太准确仅用于示意…)
在这里插入图片描述
像这样是不是就特别简单了,em,看这个波瓣长得似乎有点三维SH的意思了嘛。

(可以思考一个小问题:为啥二维情况下第三排的基函数只有cos平方,没有sin平方呢?)

假如有一个极坐标的函数长这样:
在这里插入图片描述
他可以表示为
r = 0.5 + 0.1 c o s θ + 0.07 s i n θ + 0.05 c o s θ s i n θ + 0.3 ( 2 c o s 2 θ − 1 ) r = 0.5 + 0.1 cos θ + 0.07 sin θ + 0.05 cos θ sin θ + 0.3(2cos^2θ - 1) r=0.5+0.1cosθ+0.07sinθ+0.05cosθsinθ+0.3(2cos2θ1)

只记系数,这个函数就压缩为了:

0.5, 0.1, 0.07, 0.05, 0.3

回到三维的情况这几个数字其实就是SH系数啦。

当SH的系数用的越多,那么表达能力就越强,跟原始的函数就越接近
在这里插入图片描述
当用来描述不同方向光照的SH基函数我们一般用到二阶或者三阶,二阶是4个系数:

在这里插入图片描述
拓展到rgb,就是4 * 3 = 12个系数

三阶是9个系数:

在这里插入图片描述
拓展到rgb,就是9 * 3 = 27个系数

空间中的每个Probe带一组SH系数,就可以描述这个位置的大致光照情况了。

为啥不用更高阶的SH?一方面是因为更多的系数会带来更大的存储压力、计算压力,而一般描述变化比较平滑的环境漫反射部分,用3阶SH就足够了;另一方面则是因为SH的物理含义不是特别好理解,高阶SH容易出现各种花式Artifact,美术同学一般都会认为这种表现属于bug。


创作不易,观众老爷们请留步… 动起可爱的小手,点个赞再走呗 (๑◕ܫ←๑)
欢迎大家关注笔者,你的关注是我持续更博的最大动力


原创文章,转载告知,盗版必究



在这里插入图片描述


在这里插入图片描述
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java版-图论-拓扑排序与有向无环图

拓扑排序 拓扑排序说明 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列…

如何在 Odoo18 视图中添加关联数据看板按钮 | 免费开源ERP实施诀窍

文 / 开源智造 Odoo亚太金牌服务 引言 关联数据看板按钮乃是 Odoo 当中的一项强效功能&#xff0c;它容许用户顺遂地访问相关记录&#xff0c;或者直接从模型的表单视图施行特定操作。它们为用户给予了对重要信息的疾速访问途径&#xff0c;并简化了工作流程&#xff0c;由此…

TCP客户端服务器端通信(线程池版)

1、什么是监听套接字&#xff0c;和UDP相比&#xff0c;TCP为什么文件描述符变多了&#xff1f; 在网络编程中&#xff0c;TCP和UDP是两种常见的传输协议&#xff0c;它们之间最大的不同之一在于连接的管理方式。为了更好地理解这个区别&#xff0c;我们可以用一个生动的比喻来…

【Linux】通过crond服务设置定时执行shell脚本,实际执行时间却延迟了8小时

一、问题描述 通过使用crond服务设置定时任务&#xff0c;在每天凌晨的2:00执行脚本&#xff0c;但检查结果时发现&#xff0c;实际执行时间却在上午10点。 检查shell脚本执行结果发现&#xff0c;实际执行脚本时间在上午10:00&#xff0c;延迟了8小时。 检查系统时间&#xf…

Git基础笔记

目录 1.Git 常用命令 2.Git 分支操作 3.远程仓库操作 Git 概述 Git 是一个免费的、开源的 分布式版本控制系统 &#xff0c;可以快速高效地处理从小型到大型的各种 项目 1.Git 常用命令 1.设置用户签名 git config --global user.name 用户名 2.设置用户签名 git config…

PADS系列:绘制RTL8306原理图的过程

大家好&#xff0c;我是山羊君Goat。 在所有相关的元件都被创建到了原理图库之后&#xff0c;就可以正式开始原理图的绘制了。不过绘制过程中也是会按照一定的顺序来进行的&#xff0c;这样可以达到事半功倍的效果。 首先就是主芯片的放置&#xff0c;这里有三个主芯片&#x…

GCP Case:MountKirk Games

游戏后端 根据游戏活动动态放大或缩小。 连接到托管的nos0l数据库服务。 运行定制的linux发行版。 游戏分析平台 根据游戏活动来扩大或缩小规模直接处理来自游戏服务器的传入数据。 处理由于移动网络缓慢而迟到的数据。 通过sql查询来访问至少10tb的历史数据 处理由用户…

OpenCV相机标定与3D重建(10)眼标定函数calibrateHandEye()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算手眼标定&#xff1a; g T c _{}^{g}\textrm{T}_c g​Tc​ cv::calibrateHandEye 是 OpenCV 中用于手眼标定的函数。该函数通过已知的机器人…

【CSS in Depth 2 精译_072】第 12 章 CSS 排版与间距概述 + 12.1 间距设置(上):究竟该用 em 还是 px

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 12 章 CSS 排版与间距】 ✔️ 12.1 间距设置 ✔️ 12.1.1 使用 em 还是 px ✔️12.1.2 对行高的深入思考12.1.3 行内元素的间距设置 文章目录 第 12 章 排版与间距…

数据结构代码归纳

1.线性表 线性表的顺序表示 定义与初始化 typedef struct SqList{ElemType data[MaxSize];//ElemType *data 开动态数组 int length; }Sqlist; void InitList(SqList &L){L.length0;//若静态数组//若动态数组 //L.data(ElemType*)malloc(sizeof(ElemType)*MaxSize); }…

数据结构 (36)各种排序方法的综合比较

一、常见排序方法分类 插入排序类 直接插入排序&#xff1a;通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。希尔排序&#xff1a;是插入排序的一种改进版本&#xff0c;先将整个待排序的记录序列分割成为…

SpringMVC全局异常处理

一、Java中的异常 定义&#xff1a;异常是程序在运行过程中出现的一些错误&#xff0c;使用面向对象思想把这些错误用类来描述&#xff0c;那么一旦产生一个错误&#xff0c;即创建某一个错误的对象&#xff0c;这个对象就是异常对象。 类型&#xff1a; 声明异常&#xff1…

【高中生讲机器学习】28. 集成学习之 Bagging 随机森林!

创建时间&#xff1a;2024-12-09 首发时间&#xff1a;2024-12-09 最后编辑时间&#xff1a;2024-12-09 作者&#xff1a;Geeker_LStar 嘿嘿&#xff0c;你好呀&#xff01;我又来啦~~ 前面我们讲完了集成学习之 Boooooosting&#xff0c;这篇我们来看看集成学习的另一个分支…

springSecurity权限控制

权限控制&#xff1a;不同的用户可以使用不同的功能。 我们不能在前端判断用户权限来控制显示哪些按钮&#xff0c;因为这样&#xff0c;有人会获取该功能对应的接口&#xff0c;就不需要通过前端&#xff0c;直接发送请求实现功能了。所以需要在后端进行权限判断。&#xff0…

李飞飞的生成式3D场景,对数字孪生的未来影响几何?

大家好&#xff0c;我是日拱一卒的攻城师不浪&#xff0c;致力于技术与艺术的融合。这是2024年输出的第47/100篇文章。 前言 这两天&#xff0c;AI界的教母李飞飞团队重磅发布了空间智能生成式AI大模型。 仅通过一张图片就能够生成一个可操作和交互的3D空间场景。 空间智能的…

意图识别模型使用 基于BERT的对话意图和槽位联合识别 CPU运行BERT模型-亲测成功

意图识别模型使用 基于BERT的对话意图和槽位联合识别 CPU运行BERT模型-亲测成功 我们在开发AI-Agent智能体时&#xff0c;通常会使用提示词工程设置场景的带入&#xff0c;在实际项目中会有很多场景&#xff0c;如果所有提示词都放一起就会超过Token限制&#xff0c;则不得不拆…

OSG开发笔记(三十七):OSG基于windows平台msvc2017x64编译器官方稳定版本OSG3.4.1搭建环境并移植Demo

​若该文为原创文章&#xff0c;未经允许不得转载 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/144258047 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 长沙红胖子Qt…

《毛泽东思想和中国特色社会理论概述》课程报告Latex版本

所需要的图片: 源码(可运行): \documentclass[12pt]{article} \usepackage{ctex} \usepackage{graphicx} \usepackage{booktabs} \usepackage{titlesec} \usepackage{geometry} \usepackage{float} \usepackage{tabularx} \usepackage{enumitem} …

2024.12.6——攻防世界PHP2

知识点&#xff1a;目录扫描 代码审计 传参知识点补充&#xff1a; 后缀名为.phps的文件出现在无法使用web浏览器查看php源代码的情况下&#xff0c;.phps文件就是php的源代码文件&#xff0c;通常用于提供给用户&#xff08;访问者&#xff09;查看php代码&#xff0c;因为用…

OSI模型及各层缺陷

1&#xff0e;TCP/IP概述 &#xff08;1&#xff09;TCP/IP基本结构 TCP/IP是一组Internet协议&#xff0c;不但包括TCP和IP两个关键协议&#xff0c;还包括其他协议&#xff0c;如UDP、ARP、ICMP、Telnet和FTP等。TCP/IP的设计目标是使不同的网络互相连接&#xff0c;即实现互…