
1. 3DGS與NeRF的區別NeRFNeural Radiance Fields和3DGS3D Gaussian Splatting是當前三維場景重建與渲染領域的兩大主流技術它們在表示方式、渲染流程、性能和應用場景上存在顯著差異。1.1 表示方式NeRF采用隱式神經表示。場景被建模為一個連續函數輸入空間位置和觀察方向輸出該點的顏色和體密度。# NeRF隱式函數表示 (F_{\theta}(\mathbf{x}, \mathbfz0kepkf) \rightarrow (\mathbf{c}, \sigma))3DGS采用顯式3D高斯表示。場景由一組離散的、可學習的3D高斯橢球構成。每個高斯橢球由以下參數定義位置均值協方差矩陣控制橢球的形狀和方向不透明度顏色通過球諧函數SH系數表示1.2 渲染流程NeRF基于體渲染Volume Rendering。沿相機光線采樣多個點通過神經網絡查詢每個點的顏色和密度然后通過數值積分如分層采樣合成最終像素顏色。體渲染公式其中為透射率。3DGS基于可微光柵化Differentiable Rasterization。將每個3D高斯橢球投影到2D圖像平面形成2D高斯核然后通過alpha-blending按深度排序合成像素顏色。投影后的2D協方差矩陣其中為視圖變換矩陣為投影雅可比矩陣。像素顏色合成公式alpha-blending其中為按深度排序后覆蓋該像素的高斯集合。1.3 性能與特性對比特性NeRF3DGS表示方式隱式神經網絡顯式3D高斯集合渲染速度慢需多次網絡前向快可微光柵化實時訓練速度慢數小時至數天快數分鐘至數小時顯存占用較低網絡參數較高存儲大量高斯參數編輯性困難隱式表示容易顯式可增刪改高斯壓縮性一般網絡權重較好可量化、剪枝質量高連續細節好高近年已接近NeRF2. 3DGS優化全流程3DGS的優化是一個從稀疏點云初始化為起點通過可微渲染、損失計算、參數更新、自適應密度控制等步驟迭代優化的過程。2.1 初始化通常從運動恢復結構SfM得到的稀疏點云開始。每個點云點被初始化為一個各向同性的3D高斯位置點云坐標協方差初始為球體不透明度顏色SH系數初始為視圖無關的漫反射顏色2.2 可微渲染與損失函數每一輪迭代對訓練視圖進行可微渲染得到預測圖像并與真實圖像比較計算損失。常用損失函數為L1損失與SSIM損失的加權和其中。2.3 參數優化使用梯度下降法如Adam更新所有高斯的參數位置協方差矩陣實際優化縮放和旋轉四元數不透明度球諧系數協方差矩陣由縮放和旋轉參數重建其中為由四元數轉換的旋轉矩陣。2.4 自適應密度控制這是3DGS優化的核心機制用于動態增加克隆/分裂或刪除修剪高斯以更好地覆蓋場景幾何。克隆對于位置梯度大的高斯位于重建不足區域將其復制一份并沿位置梯度方向輕微擾動。分裂對于尺度過大協方差矩陣特征值過大的高斯將其分裂為兩個更小的高斯以增加局部細節。修剪定期移除不透明度低于閾值如0.005或體積過小的高斯以控制總數。2.5 優化流程偽代碼# 初始化 gaussians initialize_from_sfm(point_cloud) optimizer Adam(gaussians.parameters()) for iteration in range(max_iterations): # 1. 可微渲染 rendered_image differentiable_rasterization(gaussians, camera_pose) # 2. 計算損失 loss (1 - lambda) * L1_loss(rendered_image, gt_image) lambda * (1 - SSIM(rendered_image, gt_image)) # 3. 反向傳播 loss.backward() optimizer.step() optimizer.zero_grad() # 4. 自適應密度控制每N次迭代執行 if iteration % density_control_interval 0: # 克隆梯度大的高斯 clone_gaussians_with_large_gradients(gaussians) # 分裂尺度過大的高斯 split_large_gaussians(gaussians) # 修剪不透明度過低的高斯 prune_opaque_gaussians(gaussians, threshold0.005) # 5. 重置不透明度可選避免飽和 reset_opacity(gaussians)2.6 收斂與輸出優化完成后得到一組優化的3D高斯集合可用于實時渲染在新視角下通過光柵化快速生成圖像。場景編輯直接修改、添加或刪除特定高斯。壓縮與傳輸對高斯參數