新視角合成與 3DGS 的計算路徑 #
給定同一個靜態場景的多張照片,以及每張照片對應的相機內參和位姿,任務是在訓練數據之外生成新的觀察視角。這個問題稱為新視角合成(Novel View Synthesis,NVS)。完成這項任務需要先建立可供渲染的場景表示,再依照目標相機的位置與方向生成圖像。
NeRF 使用神經網絡表示連續的輻射場。渲染目標視角時,每個像素向場景發出一條光線,沿光線採樣多個空間位置,查詢各位置的顏色與密度,最後以體積渲染累積成像。這條路徑具有很強的表示能力,高分辨率圖像卻會帶來大量空間採樣與網絡推理。
3D Gaussian Splatting(以下簡稱 3DGS)沿用多視角圖像監督,場景表示改為一組可學習的三維高斯。渲染時,高斯由三維空間投影到目標相機的圖像平面,再經光柵化與 Alpha 混合合成像素。NeRF 的計算順序是「像素—光線採樣—場景查詢」,3DGS 則是「三維圖元—圖像投影—像素合成」;後者更適合 GPU 並行處理,也由此獲得實時渲染能力 [1, 2]。

原論文的總覽圖把這條路徑連同訓練時的梯度反傳放在同一張圖中:SfM 點雲提供初始幾何,高斯經投影與光柵化形成圖像,圖像誤差再經反向傳播送回投影、密度控制與高斯參數。

3DGS 將場景表示的基本單元直接納入優化:每個高斯的參數會連續更新,高斯數量也會隨訓練增減。渲染器在生成圖像的同時,還需要為局部基底的移動、縮小和增生提供梯度信號。後文的公式推導將沿著這條梯度鏈展開。
三維高斯的場景表示 #
3DGS 使用 SfM(Structure from Motion)估計相機位姿,並利用 SfM 附帶生成的稀疏點雲初始化高斯中心。對第
各部分的含義如下:
| 參數 | 含義 | 主要作用 |
|---|---|---|
| 三維中心 | 決定高斯在世界中的位置 | |
| 三個主軸尺度 | 決定橢球沿不同方向的大小 | |
| 旋轉四元數 | 決定橢球主軸朝向 | |
| 可學習不透明度 | 控制高斯對像素的遮擋與貢獻 | |
| 球諧係數 | 表示隨觀察方向變化的顏色 |
若使用三階球諧,也就是
四元數雖然存儲四個量,歸一化後只有三個旋轉自由度。以 FP32 計算,59 個量佔 236 bytes;一百萬個高斯僅模型參數就約為 225 MiB,尚未計入 Adam 的一、二階動量與光柵化器的臨時數據。這個簡單的估算已經說明,3DGS 的實時渲染速度不等於表示本身輕量,壓縮與結構化存儲會成為後續研究的重要分支。
以中心
式中省略了機率密度函數的歸一化係數。3DGS 將高斯核用作具有空間範圍的軟圖元:核函數描述影響力從中心向外衰減的方式,可學習不透明度
協方差的尺度—旋轉參數化 #
梯度更新若直接作用於任意
這種寫法便於實現,並從構造上保證了半正定性。對任意向量
只要尺度保持為正、旋轉四元數經過歸一化,這個矩陣就始終具有合理的橢球幾何意義。實現中令無約束變量
把
所以它的三個特徵值正好是
這裡有一個很實用的含義:
各向異性提高了表示的緊湊性。球形高斯只有一個尺度,覆蓋牆面時需要堆疊大量小球;可旋轉、可拉伸的橢球能貼近牆面、葉片、欄杆或物體邊界,用較少圖元描述具有方向性的局部結構。
原論文將收斂後的高斯縮小至原尺度的 60%,藉此顯露平時被 splatting 覆蓋的橢球輪廓。通風柵的細長葉片由方向一致的扁平高斯排列而成,直觀呈現了協方差對局部形狀的刻畫。

球諧係數與視角相關顏色 #
同一個位置從不同方向觀看時,顏色可能因高光等效應而改變。3DGS 為每個高斯保存球諧(Spherical Harmonics,SH)係數,將觀察方向
原文所稱的四個 SH bands 對應
個基底係數。訓練從零階的基礎顏色開始,再逐步加入更高階頻帶。這能降低角度觀測不足時,高階方向成分過早吸收誤差所造成的不穩定。
SH 描述的是外觀隨方向的變化。光源、材質與反射仍未被顯式建模,因此這些係數可以擬合一部分視角相關現象,卻不會自動給出物理正確的反照率或光照分解。
三維高斯的二維投影 #
渲染時,世界空間中的三維橢球會被投影成圖像平面上的二維橢圓。中心點遵循普通的相機投影,橢圓形狀則由協方差在透視投影下的變換決定。
設高斯中心經世界到相機變換後為
針孔相機的投影函數為
所以二維中心是
其中投影雅可比矩陣為
這個雅可比可以直接從透視除法的微分得到。以水平座標
垂直座標同理。它也揭示了深度的作用:相同的三維位移在近處產生更大的像素位移,沿深度方向的擾動還會被
把高斯中心附近的世界空間偏移記為隨機向量
相機空間偏移為
原論文將它寫成
該式採用圍繞高斯中心的局部仿射近似,未精確涵蓋整個橢球的非線性透視變換。
得到二維中心與二維協方差後,高斯在像素
其有效不透明度則是
「Splatting」即將一個三維高斯繪製成具有面積、方向和軟邊界的二維橢圓核,使其影響周圍一組像素。實現中不可能遍歷無限支撐域,因而會取馬氏距離閾值
這個橢圓在水平與垂直方向的最大半徑分別為
由
Alpha 混合與像素合成 #
一個像素通常被多個高斯覆蓋。將它們按相機深度由近到遠排列後,像素顏色為
其中
是光線到達第
實際計算時不需要反覆展開乘積,可以使用前向遞推:
每處理一個高斯,只更新一次顏色與透射率。當
這個式子與 NeRF 離散體積渲染的圖像形成模型非常接近。差別在於,NeRF 通常從體密度
3DGS 直接學習高斯的不透明度
高斯核對二維中心可微:
Alpha 混合對不透明度的梯度也能寫出很直觀的形式。令
對
這個式子比「整條鏈可微」更能說明訓練行為。前方圖元已接近不透明時,
圖像誤差仍可經過混合、二維 footprint、投影和協方差參數化,一路反向傳播至三維位置、尺度、旋轉、不透明度與 SH 係數。上面的梯度分析也預示了兩個常見問題:遮擋後方的幾何學得較慢,具有相似顏色的錯誤高斯則可能長時間留在場景中。
Tile-based 光柵化器與實時渲染 #
如果每個像素各自搜索所有高斯並排序,計算仍然會非常昂貴。3DGS 的 CUDA 光柵化器採用 tile-based 流程:
- 將圖像平面劃分成
像素的 tiles。 - 做視錐裁剪,只保留可能影響圖像的高斯;論文實現以高斯的 99% 置信區間判斷相交,並用 guard band 排除投影不穩定的極端高斯。
- 計算每個二維高斯覆蓋哪些 tiles;若跨越多個 tile,就為每個相交 tile 生成一份索引。
- 將 tile ID 與視空間深度組合成排序鍵,使用 GPU radix sort 一次完成分組與近似的深度排序。
- 每個 tile 由一個線程塊(thread block)處理。高斯數據分批載入共享內存(shared memory),tile 內的像素執行各自的 Alpha 混合。
- 當某個像素的不透明度已接近飽和,就停止處理更遠的高斯;當 tile 內所有像素都飽和,整個 block 可以提前結束。
令
這個估算說明渲染時間並非只由高斯總數決定。大 footprint 會同時推高
tile 層級排序會讓某些高斯交疊情況下的 Alpha 混合帶有近似性。原論文指出,當訓練收斂且 splat 接近像素尺度時,這類近似通常不會形成可見偽影。統一的 tile 列表同時帶來規則的內存訪問和大規模並行計算。
反向傳播會重用前向已排序的 tile 列表,從後向前遍歷並恢復所需的中間量,免去為每個像素保存任意長度混合歷史的開銷。3DGS 設計中容易被公式掩蓋的一點是,實時性來自表示、近似排序、內存布局與停止條件共同配合,單獨把高斯投影公式搬到 GPU 並不會自然得到同樣的速度。
渲染質量、速度與存儲開銷 #
原論文在 Mip-NeRF 360 數據集上同時報告圖像指標、訓練時間、渲染幀率與模型存儲 [1]:
| 方法 | SSIM ↑ | PSNR ↑ | LPIPS ↓ | 訓練 | FPS | 存儲 |
|---|---|---|---|---|---|---|
| Mip-NeRF 360 | 0.792 | 27.69 | 0.237 | 48 h | 0.06 | 8.6 MB |
| 3DGS-7k | 0.770 | 25.60 | 0.279 | 6 min 25 s | 160 | 523 MB |
| 3DGS-30k | 0.815 | 27.21 | 0.214 | 41 min 33 s | 134 | 734 MB |
Mip-NeRF 360 的三項質量數值由 3DGS 論文從原工作轉錄,效率數據也受實現與硬件影響,因此這張表更適合用來讀取數量級和方法內部的質量—成本曲線。若要比較當代實現,還需要統一 GPU、分辨率、渲染代碼與計時邊界。
高斯集合的優化與密度控制 #
3DGS 在更新高斯連續參數的同時,也會離散地調整高斯集合。兩類操作交錯進行,大致可以寫成:
初始化 #
3DGS 從 SfM 稀疏點的位置開始。每個初始高斯先設為各向同性,其尺度參考最近三個 SfM 點的平均距離。這提供了比完全隨機分布更可靠的幾何起點,但初始點仍遠不足以覆蓋完整表面,因此必須在訓練中增密。
Clone:欠重建區域的複製 #
論文以視空間位置梯度的平均幅值判斷哪些高斯仍在努力移動以降低誤差。若第
若
Clone 同時增加高斯數量與局部覆蓋體積,適合補上欠重建區域。不過
Split:大尺度高斯的分裂 #
位置梯度與高斯尺度同時偏大,通常說明單一圖元負責的範圍過廣。3DGS 以兩個較小高斯取代它:新中心從原高斯分布中採樣,尺度除以實驗設定的
Split 主要提高局部表示分辨率,使一個模糊的大橢球逐漸分工成數個能貼近細節的小橢球。這裡可以檢查「分裂後體積延續」的含義。若以一個協方差橢球的尺度體積
衡量,兩個 child 的三軸尺度都除以
所以論文所描述的體積延續,更適合解讀為兩個新中心對原空間覆蓋範圍的延續,協方差橢球體積並未嚴格守恆。
不透明度也有類似問題。若把一個有效不透明度
要求分裂前後立即保持相同遮擋量,應取
3DGS 的密度控制沒有把這類守恆式設為硬約束,分裂後仍交給圖像損失、不透明度重置與剪枝共同修正。從這個角度看,clone 與 split 更接近模型結構的啟發式搜索,並不保持某個連續場完全等價的解析細分。

Prune:剪枝與不透明度重置 #
持續增密會令高斯數量失控,也會留下漂浮點。3DGS 會移除不透明度低於閾值、世界空間尺度過大或屏幕 footprint 過大的高斯;訓練中還會周期性把不透明度重置到接近零,讓有穩定圖像貢獻的高斯重新獲得較高不透明度,其餘高斯則在後續剪枝中消失。
原論文的參考設定包括:預熱後每 100 次迭代做一次增密,以平均視空間位置梯度
3DGS 的完整管線 #
上述機制可分成三個彼此咬合的循環:
| 循環 | 輸入與輸出 | 解決的問題 |
|---|---|---|
| 表示循環 | 尺度、旋轉 | 讓高斯能貼合具有方向性的局部幾何 |
| 渲染循環 | 3D 高斯 | 以可微、可並行的方式生成訓練圖像與新視角 |
| 結構循環 | 梯度統計 | 讓圖元數量與空間分布跟著場景複雜度改變 |
令
其中
更合適的理解是把一組高斯看成可增刪的局部基底。位置、尺度、旋轉、SH 與不透明度是基底的係數和形狀,圖像梯度衡量現有基底能否解釋觀測,增密則在殘差較大的位置增加自由度。Prune 和 opacity reset 承擔近似的複雜度控制,儘管目標函數裡沒有顯式寫出
3DGS 的表示範圍 #
場景表示與物體表面 #
3DGS 的直接目標是新視角圖像質量,輸出為一組體積式高斯圖元,沒有三角網格所具備的拓撲連接關係。高斯中心和扁平橢球經常落在表面附近;可測量表面、法線或網格仍需要額外幾何約束或表面提取。
高斯的方向與外觀屬性 #
每個高斯除了位置,還有完整的方向性尺度、不透明度和視角相關顏色;投影後的二維 footprint 也會隨相機與深度改變。「帶半徑的點」不足以描述協方差投影與 Alpha 混合所帶來的行為。
與體積渲染的關係 #
3DGS 與體積渲染共享相近的 Alpha 合成形式。它直接光柵化顯式高斯圖元,沒有沿光線積分連續密度,渲染中還包含局部投影與 tile 級排序近似。
增密機制的判據 #
3DGS 根據視空間位置梯度選取候選,再由尺度區分 clone 與 split,並以剪枝和不透明度重置抑制冗餘。這套判據分別處理欠重建、過度粗糙的表示與無效圖元。
限制與適用範圍 #
3DGS 具備顯式結構、快速訓練、實時高分辨率渲染,以及比普通點雲更連續靈活的表示,同時受到以下條件限制 [2]:
- 它依賴已標定的多視角圖像與足夠可靠的 SfM 初始化;稀疏視角或錯誤位姿會直接影響結果。
- 優化目標以圖像重建為主,幾何可以被外觀補償,因而不保證表面精確。
- SH 能擬合視角相關顏色,但不會自然分離材質、光照、陰影與幾何誤差。
- 數十萬乃至數百萬個高斯會帶來存儲與顯存成本。
- 大型、近相機或交疊複雜的高斯會放大投影與排序近似造成的偽影。
- 3DGS 面向靜態場景,沒有直接處理物體運動、形變或時間一致性。
後續 3DGS 研究由此延伸出抗混疊、幾何正則、壓縮、大場景、稀疏輸入、動態建模、材質與光照解耦等方向。
結語 #
3DGS 最值得延續的思想,是讓場景基底、可微渲染與 GPU 執行模型彼此配合。協方差給局部基底以方向和尺度,投影雅可比把三維擾動傳到像素,Alpha 混合建立遮擋與梯度,tile 光柵化器再把這些計算整理成 GPU 能高效執行的數據流。高斯集合還能在訓練中改變規模,表示容量由殘差逐步長出來。
這條管線也留下了清楚的近似邊界:透視投影只在中心附近線性化,tile 共用排序不能涵蓋所有逐像素深度關係,圖像損失允許外觀補償幾何,clone 與 split 又依賴視空間閾值和經驗倍率。後續研究中的抗混疊、幾何正則、重新參數化與更穩定的密度控制,都可以追溯到其中某一處近似。
理解 3DGS 時,還需要追問每個公式向實現做了哪些讓步:協方差如何變成有限包圍盒,透射率何時讓梯度消失,分裂是否真的守恆,高斯數量又如何影響 tile 實例數。沿著這些問題往下走,後續方法的改動位置與代價會比單純記住一張流程圖清晰得多。