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