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

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.rhkb.cn/news/486981.html

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

相关文章

spring boot之@Import注解的应用

我们知道spring boot会通过ComponentScan定义包扫描路径进行业务定义的bean的加载,但是对于很多不在此包路径下定义的bean怎么办呢?比如其他jar包中定义的。这时候import就发挥作用了,通过它也可以实现bean的定义。具体是怎么做的呢&#xff…

python数据分析之爬虫基础:requests详解

1、requests基本使用 1.1、requests介绍 requests是python中一个常用于发送HTTP请求的第三方库,它极大地简化了web服务交互的过程。它是唯一的一个非转基因的python HTTP库,人类可以安全享用。 1.2、requests库的安装 pip install -i https://pypi.tu…

linux安装docker和mysql

1.下载安装doker 1. 更新系统,确保系统是最新的 sudo yum update -y2.安装 Docker 所需的依赖包: sudo yum install -y yum-utils 2. 设置 Docker 仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 3. 安装 Dock…

【MFC】vs2019中使用sqlite3完成学生管理系统

目录 效果图list Contral 控件的简单使用使用sqlite3 效果图 使用sqlite3完成简单的数据库操作。 list Contral 控件的简单使用 本章只介绍基本应用 添加表头:语法: int InsertColumn(int nCol, LPCTSTR lpszColumnHeading, int nFormat LVCFMT_LEFT…

Linx下自动化之路:Redis安装包一键安装脚本实现无网极速部署并注册成服务

目录 简介 安装包下载 安装脚本 服务常用命令 简介 通过一键安装脚本实现 Redis 安装包的无网极速部署,并将其成功注册为系统服务,开机自启。 安装包下载 redis-7.0.8.tar.gzhttp://download.redis.io/releases/redis-7.0.8.tar.gz 安装脚本 修…

mysql笔记——索引

索引 InnoDB采用了B树索引结构。 相比于二叉树,层级更少,搜索效率高。 B树中叶子节点和非叶节点都会存储数据,导致段页式存储中一页存储的键值减少,指针也会减少,要同样保存大量数据,只能增加树的高度&a…

AI大模型赋能医学诊疗与药学服务——课题基金申请辅导项目成功举办

2024年11月23日,北京整合医学学会在线上成功举办了“AI大模型赋能医学诊疗与药学服务——课题基金申请辅导项目”。此次会议吸引了来自全国各地的医学、药学及人工智能领域的专家学者和科研人员积极参与,共同探讨AI大模型在医学诊疗与药学服务中的应用&a…

【C语言】编译和链接总结

系列文章目录 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…

PyQt信号槽实现页面的登录与跳转 #页面进一步优化

将登录框中的取消按钮使用信号和槽的机制,关闭界面。 将登录按钮使用信号和槽连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,当前界面关…

安防视频监控平台Liveweb视频汇聚管理系统管理方案

智慧安防监控Liveweb视频管理平台能在复杂的网络环境中,将前端设备统一集中接入与汇聚管理。国标GB28181协议视频监控/视频汇聚Liveweb平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、…

Ubuntu中配置交叉编译工具的三条命令的详细研究

关于该把下面的三条交叉编译配置语句加到哪里,详情见 https://blog.csdn.net/wenhao_ir/article/details/144326545 的第2点。 现在试解释下面三条交叉编译配置语句: export ARCHarm export CROSS_COMPILEarm-buildroot-linux-gnueabihf- export PATH$…

C#实时监控指定文件夹中的动态,并将文件夹中生成的新图片显示在界面上(相机采图,并且从本地拿图)

结果展示 此类原理适用于文件夹中自动生成图片,并提取最新生成的图片将其显示, 如果你是相机采图将其保存到本地,可以用这中方法可视化,并将检测的结果和图片匹配 理论上任何文件都是可以监视并显示的,我这里只是做了…

计算机毕业设计SpringBoot+Vue.js知识图谱课程推荐系统 课程预测系统 mooc慕课课程爬虫 课程大数据 课程数据分析大屏 大数据毕业设计 大

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

day05-开发接口-学习记录和学习计划

1. 查询用户的课程学习记录 1.1 代码实现 Controller层: package com.tianji.learning.controller;import com.tianji.api.dto.leanring.LearningLessonDTO; import com.tianji.learning.service.ILearningLessonService; import com.tianji.learning.service.IL…

【C++】指针与智慧的邂逅:C++内存管理的诗意

文章目录 RAII 智能指针auto_ptrunique_ptr shared_ptr模拟实现定制删除器循环引用 和 weak_ptr RAII RAII(Resource Acquisition Is Initialization)是一种广泛应用于 C 等编程语言中的编程范式,它的核心思想是:资源的获取和释放…

Elasticsearch vs 向量数据库:寻找最佳混合检索方案

图片来自Shutterstock上的Bakhtiar Zein 多年来,以Elasticsearch为代表的基于全文检索的搜索方案,一直是搜索和推荐引擎等信息检索系统的默认选择。但传统的全文搜索只能提供基于关键字匹配的精确结果,例如找到包含特殊名词“Python3.9”的文…

探索ai一键生成PPT的未来

在当今快节奏的工作环境中,如何高效地完成PPT制作任务,已经成为了许多人追求的目标。无论是职场精英,还是创业者,每个人都希望通过智能工具来提高工作效率。而AI生成PPT,尤其是利用一些先进的自动生成PPT技术&#xff…

vue-router查漏补缺

一、动态路由匹配 1.带参数的动态路由匹配 import User from ./User.vue// 这些都会传递给 createRouter const routes [// 动态字段以冒号开始{ path: /users/:efg, component: User }, ]这种方式的路由会匹配到/users/abc或者/users/123,路径参数用冒号:表示,并…

013路由协议-OSPF

OSPF具有更适用于规模较大的网络环境,收敛更快速、依据带宽来计算路径成本等。 计算方式: 100M/当前端口的带宽 如果小于1就按照1来计算 例如: 当前端口的带宽是1.54M 路径成本 100/1.54 65 当前端口的带宽是 1000M 路径成本 100/100 0.…

快捷构建AI大模型,源码自取可直接运行

Node.js 和 WebSocket 实现一个基于kimi(Moonshot 月之暗大模型)的AI工具 前端:前端界面比较容易,只需要简单的额css js即可,本文使用vue作为作为demo。 后端:我java很垃圾,写不出好的代码&am…