当前位置: 首页 > news >正文

3dgs涉及的基本概念:球谐系数(SH 系数)等

1.球谐系数(SH 系数)
────────────────────────────────────────

1.1 什么是球谐函数 (Spherical Harmonics,缩写为 SH)
球谐函数是一组定义在单位球面上的一组正交函数,类似于在二维平面上进行傅里叶变换时所使用的正弦和余弦基函数。
• 球谐函数可以看作三维空间中的“傅里叶基底”,专门用于在球面坐标(θ, φ)上传递或表达函数信息。
• 在计算机图形学和视觉计算领域,人们常用球谐函数来表征与方向相关的各种函数,例如光照分布、反射函数、环境贴图、视角相关颜色等。

1.2 球谐系数 (SH 系数) 的含义
• 当我们把一个球面上的函数(例如一个光照分布或者视角相关的颜色函数)展开到球谐基底上时,就能得到一系列的球谐系数。
• 直观地说,这些系数描述了该函数在每个球谐基函数上的“权重”或“贡献”大小,从而实现用有限个基函数近似一个更复杂的球面分布。
• 由于球谐函数具有良好的正交性和带限特性,通常只需要保留较低阶的球谐系数,就能对平滑或低频信号进行较为准确的描述。

1.3 为什么在 3D 高斯 Splatting 中使用 SH 系数
• 在 3DGS 中,每个高斯点(3D 高斯)需要为不同观察方向提供颜色信息,这本质上是一个“方向到颜色”的映射。
• 如果直接存储所有可能方向的颜色值,会占用非常多的内存,并且难以在渲染和优化中高效操作。
• 将方向相关的颜色用球谐系数来表达,可以在存储和计算之间取得较好的平衡,同时也能更轻松地进行插值与优化。

────────────────────────────────────────
2. 码本(Codebook)
────────────────────────────────────────

2.1 码本的基本概念
码本 (Codebook) 通常在数据压缩,尤其是“向量量化 (Vector Quantization, VQ)”技术中使用。
• 想象我们有很多“向量数据”(例如一系列特征向量、参数向量等),为了减小存储体积或传输带宽,需要进行压缩。
• 向量量化的基本思想是先事先构建一个“有限大小的向量集合” —— 这就是“码本”。
• 将每个要压缩的向量近似匹配到码本中最相似的那个向量(称为码字),只需记录它所匹配的“码字索引”而非原向量本身。

2.2 码本的构建
• 在实际应用时,往往会收集一批“训练数据”,通过聚类或优化算法(如 k-means)来得到一组典型向量,用于构造码本。
• 每个典型向量就是“码字 (codeword)”。码本中包含若干个码字,覆盖了训练数据或应用场景中常出现的向量分布。
• 在压缩时,“向量 → 码字索引”的映射就是数据量化的最核心步骤;在解压缩时,通过“码字索引 → 码字”就能近似重建原始向量。

2.3 在 3D 高斯 Splatting (3DGS)中的用途
• 在 3DGS 里,我们常需要同时存储一大批高斯分布的各项参数,比如“形状参数”(协方差矩阵相关信息)和“球谐系数”(或其他外观参数)。
• 若每个高斯都单独保留全部参数,会导致存储量巨大;利用码本,可将相似的参数“聚类”,“相似用一个码字表示”,从而减少整体存储。
• 在渲染或训练时,再根据索引查回对应的码字,并根据细微差异(或通过微调)来重现原本的参数分布。

────────────────────────────────────────
小结
────────────────────────────────────────

• 球谐系数 (SH 系数):
用球谐函数来表示一个球面上(或与方向相关)的函数时得到的系数。它能够紧凑且有效地表达平滑或低频信号,如光照或方向相关的颜色。

• 码本 (Codebook):
数据压缩中为减少存储成本而构建的“向量字典”。在向量量化中,用码博客观小批量代表向量,原向量被“映射”为一个索引以代替高维向量本身。

http://www.lryc.cn/news/573645.html

相关文章:

  • Python之数据容器
  • 【JavaScript】代码整理
  • vim学习流程,以及快捷键总结
  • Python 深度学习基础:TensorFlow 入门——从张量到神经网络的实战指南
  • 【2025年软考中级】第三章数据结构3.4 数组与矩阵
  • Flink作业三种部署模式:架构、配置与实战应用
  • rknn优化教程(三)
  • Bytemd@Bytemd/react详解(编辑器实现基础AST、插件、跨框架)
  • 【云原生】Docker 部署 Elasticsearch 9 操作详解
  • Git Worktree:高效开发的秘密武器
  • C# 数组(数组协变和数组继承的有用成员)
  • webpack+vite前端构建工具 - 8 代码分割
  • 【数据结构试题】
  • C#Halcon从零开发_Day13_几种阈值分割方法
  • 《高等数学》(同济大学·第7版)第五章 定积分 第四节反常积分
  • 目标检测neck算法之MPCA和FSA的源码实现
  • python实战项目77:足球运动员数据分析
  • React 18.2.0 源码打包
  • C++智能指针的知识!
  • 无人机表演越来越火,C端市场大爆发
  • Java基础八股文 - 面试者心理历程与标准答案
  • 微处理器原理与应用篇---常见基础知识(7)
  • 反无人机系统:技术利刃如何守护低空安全?
  • 啥是 SaaS
  • C# .NET多线程异步记录日声,队列LOG
  • docker镜像封装与发布微服务学习
  • NotePad++ 怎么没有找到插件管理?
  • Python打卡DAY34
  • 【科研绘图系列】R语言绘制论文组合图形(multiple plots)
  • Redis快的原因