3D高斯濺射(3D Gaussian Splatting )是一種基于顯式三維高斯分布的場景表示與渲染方法。與傳統的三維重建技術(如多邊形網格、點云或隱式神經輻射場NeRF)不同,3DGS將場景表示為大量帶有屬性的3D高斯橢球的集合,每個高斯橢球包含位置、形狀(協方差矩陣)、顏色(球諧系數)和不透明度等信息。
3DGS的核心思想源自計算機圖形學中的"濺射"(Splatting)技術,這是一種將離散的點數據轉換為連續圖像的方法。在3DGS中,每個3D高斯橢球被"濺射"到二維圖像平面上,通過可微分的渲染流程生成最終的圖像。這種方法結合了點云的直觀性和神經渲染的高質量,同時克服了傳統方法的諸多限制。
與傳統方法相比,3DGS具有幾個顯著優勢:
-
渲染效率高:支持實時渲染(30FPS以上),比NeRF快數百至數千倍
-
訓練速度快:通常只需幾分鐘到幾十分鐘即可完成一個場景的訓練
-
顯式表示:場景由明確的高斯橢球構成,便于編輯和控制
-
高質量細節:能夠捕捉場景的精細幾何和復雜外觀
什么是Splatting?
Splatting流程
選擇雪球
為什么選擇3D高斯橢球?
3d高斯為什么是橢球?
協方差矩陣?
-
μ表示高斯中心的位置(3D坐標)
-
Σ是協方差矩陣,控制高斯的形狀和方向
-
x是空間中的任意點
各向同性和各向異性?
協方差矩陣如何控制橢球形狀?
協方差矩陣為什么能用旋轉和縮放矩陣表達?
A是旋轉R乘以縮放S,已知協方差矩陣可以通過特征值分解來求R,S。
計算協方差矩陣代碼
左邊是CUDA代碼,右邊是用Python代碼重寫。mod是縮放,rot是旋轉。協方差矩陣可以控制橢球形狀,用旋轉和縮放控制協方差矩陣
如何參數估計?
3D到像素
觀測變換
投影變換
視口變換
光柵化
3D高斯的觀測變換
3D高斯投影變換
均值可以正常變到NDC的坐標系因為他是一個數,但協方差矩陣不行。
雅可比矩陣
投影變換的雅可比矩陣
對高斯核中心做視口變換
高斯中心變換:
觀測變換->投影變換->視口變換->光柵化
3D高斯球的顏色
合成圖片
-
不透明度(α):控制該高斯對最終圖像的貢獻程度
-
球諧系數(SH):用于表示視角相關的顏色,支持復雜光照效果的建模
-
顏色(c):基礎顏色值
nerf
為什么3dgs更快
機器學習與參數評估
?
3DGS的渲染流程是將3D高斯投影到2D圖像平面的過程,主要包括以下步驟:
-
投影變換:將3D高斯根據相機參數投影到2D圖像平面。投影后的2D高斯協方差矩陣Σ'可表示為:
Σ' = JWΣW^TJ^T
其中J是投影變換的雅可比矩陣,W是視圖變換矩陣 -
光柵化:對每個像素,收集所有重疊的2D高斯,按深度排序后,采用alpha混合公式計算最終顏色:
C = Σ(ci αi Π(1-αj))
其中ci是第i個高斯的顏色,αi是其不透明度,j遍歷所有前面的高斯 -
梯度回傳:渲染過程是完全可微分的,允許通過反向傳播優化所有高斯參數
3DGS的完整技術流程
3DGS的實現包含一系列精心設計的步驟,從數據準備到最終渲染。下面我們將詳細剖析3DGS的完整技術流程,幫助您理解這一技術如何從多視角圖像重建出高質量的三維場景。
1. 數據預處理與相機標定
3DGS流程的第一步是場景數據的準備和相機參數的標定。這一階段通常使用運動恢復結構(Structure from Motion, SfM)技術完成:
-
輸入數據:一組從不同視角拍攝的場景圖像(通常需要一定重疊度)
-
特征提取與匹配:檢測圖像中的特征點并在多視圖間建立對應關系
-
稀疏重建:通過多視圖幾何計算相機參數(位置、朝向、內參)和稀疏3D點云
-
輸出:校準后的相機參數和初始稀疏點云(如COLMAP格式)
這一步驟為后續的高斯初始化提供了幾何基礎和視角約束,對最終重建質量至關重要。相機標定的準確性直接影響3DGS的重建效果,因此在實際應用中常需要精心調整SfM參數或進行人工校驗。
2. 3D高斯初始化
基于SfM輸出的稀疏點云,3DGS開始構建初始的高斯表示:
-
高斯創建:為每個稀疏3D點創建一個初始高斯橢球
-
初始參數設置:
-
位置(μ):直接使用點云中的3D點坐標
-
協方差(Σ):初始化為各向同性小橢球(通常基于點云密度自動確定)
-
不透明度(α):初始設為中等值(如0.5)
-
顏色(c):從輸入圖像中采樣對應點的顏色
-
球諧系數(SH):初始化為產生視角無關的基礎顏色
-
初始高斯的數量通常與稀疏點云中的點數相同,但在后續優化過程中會通過自適應密度控制動態調整。
3. 可微分渲染與優化
初始化后,系統進入迭代優化階段,通過可微分渲染不斷調整高斯參數:
-
前向渲染:
-
對于每個訓練視角,將3D高斯投影到圖像平面
-
使用alpha混合光柵化生成預測圖像
-
計算預測圖像與真實圖像之間的差異(L1、SSIM等損失)
-
-
反向傳播:
-
通過可微分渲染管道回傳梯度
-
更新高斯的位置、形狀、顏色和不透明度等參數
-
采用類似Adam的優化器進行參數更新
-
-
自適應密度控制:
-
定期評估各高斯對最終渲染的貢獻
-
移除不重要的高斯(透明度高或視角一致性差)
-
在重建不足的區域分裂高斯(將一個大高斯分裂為多個小高斯)
-
在過度重建的區域克隆高斯(復制并略微偏移)
-
這一階段通常需要數萬次迭代,但在現代GPU上只需幾分鐘到幾十分鐘即可完成。
4. 場景渲染與后處理
優化完成后,3DGS場景可以高效渲染新視角:
-
實時渲染:使用優化后的高斯集合,任何新視角都可以通過GPU光柵化管道快速渲染
-
抗鋸齒處理:通過各向異性濾波或超采樣減少邊緣鋸齒
-
動態效果:支持運動模糊、景深等后處理效果
值得注意的是,3DGS的渲染不需要預先烘焙或復雜預處理,使得它特別適合交互式應用。
流程總結
3DGS的完整流程可以概括為:數據采集→相機標定→高斯初始化→可微分渲染優化→自適應密度控制→最終渲染。這一流程巧妙結合了傳統多視圖幾何與現代可微分渲染技術,實現了高質量且高效的三維重建
3DGS的關鍵技術與創新點
3DGS之所以能夠取得突破性進展,得益于其多項關鍵技術設計。這些創新點共同解決了傳統三維表示和渲染中的諸多難題,使3DGS在質量、速度和靈活性方面都達到了新高度。
1. 自適應密度控制
自適應密度控制是3DGS最核心的創新之一,它動態調整場景中高斯點的分布和密度,以平衡重建質量和計算效率:
-
高斯分裂:在重建不足的區域(如高頻細節處),將大高斯分裂為多個小高斯,提升局部細節表現
-
高斯克隆:在需要更多覆蓋的區域(如邊緣處),復制現有高斯并略微偏移,增強連續性
-
高斯修剪:定期移除對渲染貢獻小的高斯(透明度高于閾值或視角一致性差),提高存儲和計算效率
這一機制使3DGS能夠自動適應不同復雜度的場景區域,無需人工干預。與需要預設分辨率的網格或體素方法不同,3DGS的自適應密度控制使其在簡單區域節省資源,在復雜區域增加容量。
2. 可微分高斯濺射渲染
3DGS設計了完全可微分的濺射渲染管道,這是實現端到端優化的關鍵:
-
精確投影:將3D高斯準確投影到2D圖像平面,保持幾何一致性
-
高效光柵化:利用現代GPU的并行計算能力,快速計算各像素受哪些高斯影響
-
Alpha混合:沿深度方向正確混合重疊高斯的顏色和不透明度
-
梯度傳播:精心設計的導數計算,確保梯度能夠有效回傳到所有高斯參數
與傳統點云渲染不同,3DGS的濺射渲染考慮了高斯形狀和視角變化,避免了空洞和走樣問題。同時,其可微分特性使優化過程能夠同時考慮幾何和外觀因素。
3. 基于球諧函數的視角相關外觀
3DGS使用球諧函數(Spherical Harmonics, SH)建模視角相關的光照效果:
-
低階SH系數(通常2-3階)表示基礎顏色和簡單光照變化
-
高階SH系數捕捉更復雜的光照變化和材質特性
-
每個高斯存儲一組SH系數,在渲染時根據視角方向計算實際顏色
這種方法使3DGS能夠以相對緊湊的表示(相比存儲所有可能視角的顏色)實現真實的視角相關效果,如鏡面高光和漫反射變化。
4. 顯式與隱式表示的融合
3DGS巧妙結合了顯式和隱式表示的優勢:
-
顯式方面:高斯參數直接控制幾何形狀和空間分布,便于編輯和分析
-
隱式方面:通過可微分渲染和優化,隱式地編碼復雜外觀和光照效果
-
混合特性:自適應密度控制實現了類似隱式表示的連續適應性,同時保持顯式表示的效率
這種融合使3DGS既能像傳統點云一樣直接操控,又能達到神經渲染的視覺質量,開辟了三維表示的新范式
?