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):
數據壓縮中為減少存儲成本而構建的“向量字典”。在向量量化中,用碼博客觀小批量代表向量,原向量被“映射”為一個索引以代替高維向量本身。