3D高斯潑濺和4D高斯

1.高斯函數

想象你往平靜的湖水里扔一塊石頭,水波會以石頭落點為中心向外擴散,形成一個逐漸衰減的圓形波紋。高斯函數的形狀就和這個波紋類似:

  • 中心最高(石頭落點,波峰最強)。
  • 越往外,高度(強度)越低(波紋逐漸減弱)。
  • 對稱且平滑(圓形波紋,沒有突兀的棱角)。

高斯函數就是一個對稱的、平滑的“波包”,用來描述自然界的許多現象。它的核心特點是:

  • 中心最強,越遠越弱。
  • 用標準差(c)控制“胖瘦”。
  • 多維時能處理圖片、3D數據等。

一維高斯函數

其中,a、b、c為實數常數,且a>0。b控制峰值位置,c(標準差)控制曲線寬度,形狀呈對稱的鐘形。

二維高斯函數(像一座圓頂山):

用于圖像處理和概率模型。在圖片處理方面,比如“模糊濾鏡”就是用一個微型高斯函數對每個像素點做平滑處理,讓圖片看起來更柔和。

三維高斯函數(像一團云霧):其中σ為標準差,控制函數的寬度。
三維高斯函數是二維高斯函數在三維空間中的自然擴展,廣泛應用于圖像處理、計算機圖形學、物理模擬等領域。在3D建模中,可以用多個“云霧團”(高斯函數)組合起來表示物體(比如火焰、煙霧),渲染效率很高。

2.球諧函數

球諧函數(Spherical Harmonics,SH)是一組定義在球面上的正交函數,廣泛應用于物理學、計算機圖形學、量子力學等領域。球諧函數是拉普拉斯方程在球坐標系下的角度部分解,形式為:

  • 參數:l(度數,非負整數)控制函數的復雜度,m(階數,?l≤m≤l)決定方位角周期性。θ 是極角(從 0 到 π),? 是方位角(從 0 到 2π)。
  • P_{l}^{m}:連帶勒讓德多項式;K_{l}^{m}:歸一化因子。
  • 正交性:不同 (l,m) 的球諧函數在球面上積分乘積為零,構成完備基。

(1)通俗解釋

核心比喻:球面上的“樂高積木”

想象你要用積木拼出一個球形燈籠,但積木的形狀不是方塊,而是不同圖案的曲面片(比如純色片、波浪片、花瓣片等)。

  • 每種基礎曲面片就是一個球諧基函數。
  • 你通過調整每種曲面片的數量(權重),就能組合出復雜的燈籠圖案。
  • 球諧函數就是這些“基礎曲面片”的數學定義。

每個球諧函數都可以看作是一個“基礎曲面片”。這些曲面片在球面上有不同的形狀和分布。通過調整每個球諧函數的權重(即系數),可以將這些基礎曲面片組合起來,形成復雜的球面圖案。這類似于用不同形狀的積木拼出復雜的結構。

  • 例如,當 l=0 時,球諧函數是一個常數函數,表示一個均勻的球面。
  • 當 l=1 時,球諧函數可以表示球面上的簡單方向性變化,比如一個“極帽”(在北極或南極有突出的部分)。
  • 當 l 增大時,球諧函數可以表示更復雜的形狀,比如多個“花瓣”或“波浪”形狀。

? ? ? ?每個球諧函數 Y_{l}^{m}是定義在球面上的一種特定的模式或分布,而不是一個完整的球體。通過調整不同球諧函數的權重,可以組合出復雜的球面上的分布。這種組合在許多科學和工程領域中都有廣泛的應用。

球諧函數可視化代碼:

import numpy as np
import matplotlib.pyplot as plt
from scipy.special import sph_harm
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.colors import Normalize
from matplotlib.cm import ScalarMappabledef plot_spherical_harmonics(l_max=3, resolution=100):"""繪制美觀的球諧函數可視化圖參數:l_max: 最大階數(非負整數)resolution: 網格分辨率"""# 創建球面網格theta = np.linspace(0, np.pi, resolution)  # 極角phi = np.linspace(0, 2 * np.pi, resolution)  # 方位角theta, phi = np.meshgrid(theta, phi)# 將球坐標轉換為笛卡爾坐標x = np.sin(theta) * np.cos(phi)y = np.sin(theta) * np.sin(phi)z = np.cos(theta)# 創建圖形fig = plt.figure(figsize=(18, 12), facecolor='black')fig.suptitle('Spherical Harmonics Visualization',fontsize=20, color='white', y=1.02)# 創建顏色映射cmap = plt.cm.coolwarm  # 使用冷暖色區分正負值# 計算所有球諧函數的值,確定統一的范圍all_values = []for l in range(l_max + 1):for m in range(-l, l + 1):Y_lm = sph_harm(m, l, phi, theta).realall_values.append(Y_lm)vmin, vmax = np.min(all_values), np.max(all_values)norm = Normalize(vmin=vmin, vmax=vmax)# 計算需要的行數和列數rows = l_max + 1cols = 2 * l_max + 1# 創建網格布局grid = plt.GridSpec(rows, cols + 1, figure=fig,width_ratios=[1] * cols + [0.1],  # 為顏色條留出空間hspace=0.3, wspace=0.1)for l in range(l_max + 1):for m in range(-l, l + 1):# 計算球諧函數的值Y_lm = sph_harm(m, l, phi, theta).real# 計算子圖位置ax_pos = (l * cols) + (m + l_max) + 1ax = fig.add_subplot(grid[l, m + l_max],projection='3d', facecolor='black')# 繪制球面surf = ax.plot_surface(x, y, z,facecolors=cmap(norm(Y_lm)),rstride=2, cstride=2,alpha=1.0,linewidth=0.1,edgecolor='k',antialiased=True,shade=True)# 設置視角和光照ax.view_init(elev=25, azim=45)ax.set_box_aspect([1, 1, 1])# 美化設置ax.set_facecolor('black')ax.grid(False)ax.xaxis.pane.fill = Falseax.yaxis.pane.fill = Falseax.zaxis.pane.fill = False# 設置標題ax.set_title(f"Y$_{{{l}}}^{{{m}}}$",fontsize=14, color='white', pad=0)# 隱藏坐標軸ax.set_xticks([])ax.set_yticks([])ax.set_zticks([])# 添加顏色條cax = fig.add_subplot(grid[:, -1])sm = ScalarMappable(cmap=cmap, norm=norm)sm.set_array([])cbar = fig.colorbar(sm, cax=cax, orientation='vertical')cbar.set_label('Function Value', color='white', fontsize=12)cbar.ax.yaxis.set_tick_params(color='white')plt.setp(cbar.ax.get_yticklabels(), color='white')cax.set_facecolor('black')# 調整整體布局plt.subplots_adjust(left=0.05, right=0.9, top=0.95, bottom=0.05)# 調用函數繪制球諧函數
plot_spherical_harmonics(l_max=3, resolution=200)
plt.show()

(2)在光照渲染中的應用

核心作用:用少量系數高效存儲和計算復雜光照。傳統方法(如環境光貼圖)需要逐像素存儲光照數據,而SH將光照壓縮成系數,實時渲染時快速還原。

1)SH的本質:數學壓縮工具

① 核心思想
SH是一組定義在球面上的正交基函數(類似傅里葉變換的基),可將任意球面函數(如光照分布)分解為不同頻率的加權組合。

  • 低頻基函數:描述大范圍平滑變化(如天空漸變)
  • 高頻基函數:描述銳利細節(如太陽光斑)

②階數與精度

三階SH(9個系數)可表達90%的漫反射光照

五階SH(25個系數)可捕捉更復雜光照,但存儲和計算成本翻倍

數學表達:
光照函數,𝑐𝑙𝑚是SH系數,𝑌𝑙𝑚是基函數。

2)SH→RGB轉換的四個關鍵步驟

以三階SH(每通道9個系數)為例:

①方向輸入
給定表面法線方向?𝑛=(𝑥,𝑦,𝑧),歸一化為單位向量。

②基函數計算
預計算該方向對應的SH基函數值(共9個):

# 三階SH基函數示例(方向n的取值)
Y00 = 0.282095                      # 零階(直流分量)
Y1[-1] = 0.488603 * n.y             # 一階
Y1[0] = 0.488603 * n.z
Y1[1] = 0.488603 * n.x
...                                  # 更高階類似

③加權求和
將SH系數與基函數逐項相乘并累加:

R = Σ (SH_coeff_red[i] * Y[i])  
G = Σ (SH_coeff_green[i] * Y[i])  
B = Σ (SH_coeff_blue[i] * Y[i])

④范圍修正
結果可能超出[0,1],需通過Sigmoid等函數約束到合理范圍。

3)應用

①環境光模擬

問題:真實環境光來自各個方向,逐方向采樣計算量大。

SH方案

  • 原理:將環境光投影到球諧函數基函數上,存儲為系數。球諧函數是一種正交函數基,能夠有效地將復雜的光照分布分解為一組系數。
  • 優勢:渲染時通過系數加權求和,可以快速得到任意方向的光照強度,大大減少了計算量。
  • 示例:天空盒的光照可以壓縮為9個系數(三階SH)。在實時渲染時,無需讀取整張貼圖,從而提高渲染效率。
  • 補充:球諧函數的階數越高,能夠表示的光照細節就越豐富,但計算和存儲成本也會相應增加。三階SH(9個系數)是一個常用的平衡點,能夠較好地平衡計算效率和光照效果。

②動態物體光照問題

問題:移動的物體需要實時更新光照信息。

SH方案

  • 原理:在場景中預埋“光探頭”(Light Probe),每個探頭存儲周圍環境的球諧系數。物體移動時,只需讀取最近探頭的系數,快速計算當前光照。
  • 優勢:這種方法可以有效減少動態物體的光照計算量,提高渲染效率,同時保證光照效果的連貫性。
  • 補充:光探頭的數量和分布會影響光照的精度。如果光探頭分布稀疏,可能會導致光照過渡不夠平滑。在實際應用中,需要根據場景的復雜度和性能要求合理安排光探頭的位置和數量。

③顏色與視角依賴效果顏色壓縮

  • 原理:RGB顏色通過球諧系數轉換(如RGB = SH系數 × C0 + 0.5),將顏色分布與方向關聯,支持視角相關的漸變效果。
  • 優勢:優化存儲。一個RGB顏色原本需要3個通道的貼圖,用球諧系數可以壓縮到12~27個浮點數(三階SH)。這大大減少了存儲空間,同時能夠實現視角相關的漸變效果,使物體在不同視角下呈現更真實的光照效果。
  • 補充:這種顏色壓縮方法適用于對顏色精度要求不是極高的場景。在一些高精度的渲染任務中,可能需要采用更復雜的顏色表示方法來保證顏色的準確性。

④物理意義與限制

  • 低頻優勢:球諧函數擅長表達低頻光照(如柔和的漫反射),能夠很好地模擬環境光的柔和效果。
  • 高頻限制:球諧函數無法精確還原高頻細節(如銳利陰影)。這是因為球諧函數是一種低頻函數,對于高頻的光照變化(如銳利的陰影邊緣)表示能力有限。
  • 計算效率:三階SH(9個系數)是一個常用的平衡點。高階系數雖然能夠提升精度,但存儲和計算成本會劇增。在實際應用中,需要根據場景的需求和性能限制選擇合適的階數。

總結
球諧函數在計算機圖形學中是一種非常有效的光照表示方法,特別適用于環境光的模擬和動態物體的光照更新。它通過將復雜的光照分布分解為一組系數,大大減少了計算量和存儲空間。然而,球諧函數也有其局限性,主要體現在對高頻細節的表示能力不足。在實際應用中,需要根據具體需求和性能限制合理選擇球諧函數的階數和應用場景。

3.高斯潑濺點

1)定義

高斯潑濺點是 3D Gaussian Splatting 場景建模的基本單元,它就像“一個有形狀和顏色的點”,但比傳統點云更智能:

它不是普通的點,而是:

“一個具有體積、方向、不透明度、顏色和形變信息的三維橢球體,通過高斯函數來建模。”

你可以理解為在空間中放置了許多微小“彩色霧團”,它們像墨水滴一樣一起混合,最終形成逼真的3D圖像。

2)核心參數組成

參數名稱含義
位置 μ橢球體的中心點坐標,即它在 3D 空間中的位置 (x,y,z)(x, y, z)
協方差 Σ控制橢球的形狀、大小、方向——即“它拉長還是扁平、朝哪個方向”
顏色 c點的顏色,可以是 RGB,也可以是球諧系數(SH),用于表達視角相關的顏色變化
不透明度 α控制該點的透明程度,決定它在混合渲染中的視覺權重

3)數學本質:三維高斯分布

高斯潑濺點是一個三維的各向異性高斯分布(Anisotropic 3D Gaussian),公式如下:

  • μ:中心位置(空間中點的坐標)

  • Σ:協方差矩陣,決定形狀和方向

  • α:整體強度/透明度

  • x:空間中的任意采樣點

直觀含義:越接近中心點,值越高;離得遠就快速衰減,形成“霧狀”的視覺效果。

4)協方差矩陣 Σ 的含義與分解

協方差矩陣 Σ 是控制“橢球形狀”的核心:

  • 如果它是單位矩陣 ? 就是一個球體;

  • 如果它的三個主軸不同 ? 就是橢球;

  • 它可以分解為:

其中:

  • R:旋轉矩陣 ? 控制橢球的朝向;

  • S:縮放矩陣 ? 控制每個方向上的大小。

5)顏色表示:RGB vs 球諧系數 SH

  • 如果使用 RGB:表示一個固定顏色;

  • 如果使用 SH 系數(Spherical Harmonics)

    • 可以表示顏色隨著視角改變而變化,比如金屬反光、塑料表面;

    • 更真實、更先進,但也更復雜;

    • 渲染時根據視角方向計算 SH 展開,得到最終顏色。

6)高斯潑濺點在渲染中怎么用?

  • 所有高斯點分布在空間中,形成稠密的“體積點云”;

  • 在渲染時:

    • 每個點根據它的 α、顏色、位置、形狀被投影到圖像上;

    • 多個點在圖像上重疊融合,形成高質量畫面;

    • 類似“體積渲染”或“透明油墨混合”;

  • 使用 逐像素 rasterization + alpha blending 技術實現高效可微渲染。

通俗易懂的理解:

目標是:把這些高斯點“畫”成一張真實的圖像,

你可以想象:

  • 你手上有一堆彩色小水滴(這些就是高斯點);

  • 你拿著攝像機對著這些水滴拍照;

  • 鏡頭中,水滴重疊、融合、透明混合,最終形成了一個栩栩如生的畫面。

①相機投影(投影到屏幕)

每個高斯潑濺點都有一個位置(μ)——它在 3D 空間中。當我們用一個虛擬相機(Camera)去“看”這些點時,我們會把每個點投影到攝像機的圖像平面上(也就是屏幕上的像素)。這就像把每個小水滴的“投影”打到畫布上。

②在屏幕上生成“高斯模糊小斑點”

  • 每個點本質上是一個三維高斯分布(模糊的彩色橢球體),

  • 投影到屏幕后,它就變成一個模糊的彩色斑點;

  • 越靠近斑點中心,像素值越強(越亮);越遠,越淡;

  • 不同的點,形狀大小不同,顏色也可能不同;

  • 所以屏幕上的每個像素,會受到多個高斯點的影響。

💡 類比:就像很多顏料點落在紙上,每個都有一定大小和透明度,它們在紙上融合,顏色疊加,最后形成畫面。

③alpha blending(透明度疊加)

這個過程關鍵在于“不透明度 α”:

  • 如果某個點很透明(α小),它的影響就輕;

  • 如果它很不透明(α大),它對圖像的貢獻就強;

  • 通過將所有點的投影結果按照透明度進行加權融合(混合),最終合成一張圖像。

這種混合方式叫:

  • Gi(x):第 i 個高斯點在該像素位置的值(根據距離中心點的遠近);

  • αi:透明度;

  • colori:顏色,甚至可以是視角相關的 SH 展開結果。

④一次渲染就是所有高斯點 → 所有像素的疊加

這個過程是:

  1. 遍歷所有高斯點;

  2. 把它們投影到攝像機坐標下;

  3. 對于每一個像素,計算它被哪些高斯點影響;

  4. 所有影響加起來,得到像素的最終顏色。

用專業術語說就是:

  • 基于高斯分布的 rasterization(柵格化)

  • alpha compositing(透明合成)

? 它是一個顯式渲染過程,不像 NeRF 那樣“射光線采樣”,效率更高。

整幅圖是如何“繪制”出來的:有幾萬個微小的橢球彩色霧團,在虛擬空間中漂浮;?一臺虛擬攝像機將它們投影到二維屏幕上;?每個點變成一個模糊的斑點,顏色和透明度疊加在圖像中;所有點疊加之后,呈現出一個清晰、真實、有體積感的3D場景!

7)3DGS中高斯點的完整應用流程

總覽

階段名稱主要目的核心操作
1?? 初始化建立初始場景表示從 SfM 點云生成高斯點,初始化其參數
2?? 優化提升渲染真實感可微渲染 + 反向傳播 + 梯度下降,擬合真實圖像
3?? 自適應密度控制控制點的數量和分布分裂細節區域點,合并/刪除平坦區域點
4?? 渲染生成可視圖像將3D高斯點按深度投影、混合顏色和透明度,輸出最終圖像

詳細分步驟講解

①初始化(Initialisation)

📥 把真實照片 → 轉化為可優化的高斯點場景表示。

  • 使用 SfM(Structure-from-Motion) 從多張照片中恢復相機位姿和稀疏點云。

  • 每個 SfM 點變成一個 高斯潑濺點,初始化參數如下:

    • 位置 μ:來自 SfM 點云;

    • 協方差 Σ:設為單位矩陣(球形);

    • 顏色:用多圖平均;

    • 不透明度 α:初始化為中等值;

    • 球諧系數 SH(可選):初始化為常數。

📌 目的:搭建一個粗略但可優化的場景框架。

②優化(Optimization)

🔧 訓練這個“場景”,讓它畫出來的圖像盡可能接近真實圖像。

原理:使用 可微分光柵化(Differentiable Rasterization) 使渲染過程可導 → 通過梯度下降優化每個高斯點的參數。

過程:

  • 采樣訓練圖像;

  • 對每張圖,用當前高斯集合進行渲染;

  • 計算渲染圖像和真實圖像之間的差異(比如 L2 loss);

  • 使用反向傳播,更新:

    • 每個點的位置(μ)

    • 大小/方向(協方差 Σ)

    • 顏色或 SH 系數

    • 不透明度 α

📌 目標函數通常是重建損失(重建越像真實圖越好)
📌 可加正則化項,比如懲罰無效點、鼓勵分布稠密等

③自適應密度控制(Adaptive Density)

🔄 讓點云結構更“聰明”:哪里需要點多就多,不需要就少。

核心思想:

場景中并非所有區域都需要同樣多的點。例如:

  • 細節區域(比如樹葉、邊緣)→ 需要更多點 ? 拆分/復制點;

  • 平坦區域(比如天空、墻面)→ 不需要那么多 ? 刪除點。

操作方式:

  • 每隔若干迭代:

    • 計算每個點的梯度大小 / 貢獻度;

    • 貢獻高的點 ? 分裂為多個子點;

    • 貢獻低的點 ? 刪除;

  • 分裂時新點的參數基于父點微調。

📌 目的:提高效率,減少冗余,同時提升視覺質量。


④渲染(Rendering)

🖼? 最終將優化好的高斯點生成真實圖像。

步驟如下:

  1. 把所有 3D 高斯點投影到相機視角下的 2D 圖像平面

  2. 為每個點在屏幕上生成模糊“斑點”(高斯核);

  3. 將所有斑點按 深度順序排序

  4. 使用 alpha blending(透明度疊加)合成最終像素值;

  5. 輸出最終渲染圖像。

📌 與 NeRF 不同:它不走射線積分,而是 逐像素 rasterization,效率更高,可用于實時應用。

可視化類比

類比過程實際操作
SfM搭建骨架類似打草稿,先勾勒出大概場景
點的優化調整類似“涂改修正”,讓圖像逐漸精細
自動加點刪點類似畫畫中“多畫細節”和“刪掉多余線條”
渲染出圖最后上色、混色,讓整幅畫看起來真實自然

8)總結與類比

特性含義
類比傳統點高斯點是“可擴張 + 可旋轉 + 有顏色 + 不透明度 + 方向感”的“智能點”
類比體素/網格高斯點是連續分布的,不需要規則網格,更靈活、更稀疏
類比 NeRF 點樣本但高斯點是顯式幾何 + 顯式顏色 + 透明疊加,比 NeRF 更快更真實
渲染方式利用 rasterizer(柵格化器)和 GPU 并行處理,實現實時可微渲染

4.高斯橢球體

1)高斯橢球體是什么?

高斯橢球體其實就是我們在 3DGS 中使用的 三維高斯分布 的幾何形態。

它不是普通的“球”或“橢球殼”,而是一個模糊的概率霧團,用來表示某個位置的“顏色影響范圍”。

📌 數學表達

三維高斯分布函數如下:

含義解釋:

  • x:任意一個空間位置(你眼前的一個點)

  • μ:高斯的中心位置(霧團的中心)

  • Σ:協方差矩陣,控制它在三維空間中“朝哪個方向胖”,“多胖”

  • G(x):表示在 x 位置上的概率密度值(數值越高,說明越靠近中心)

當 G(x)?取一個常數(比如 0.5)時,它就形成了一個等密度面 —— 這就是一個橢球形狀的等值面

2)為什么它是“橢球體”?

因為協方差矩陣 Σ 會控制:

  • 高斯霧團在不同方向上延伸的距離(特征值);

  • 霧團的方向朝哪(特征向量);

我們可以把 Σ進行分解:

  • R:旋轉矩陣(決定朝哪轉);

  • S:縮放矩陣(對角矩陣,控制三個主軸上的尺度);

所以這個高斯在空間中就像一個可以隨意旋轉、拉伸、扭曲的橢球體。

? 這個“橢球霧團”就叫高斯橢球體,它是我們高斯潑濺點的空間形狀模型

3)高斯橢球體 vs 高斯潑濺點:誰是誰的“外殼”?

對象含義
高斯橢球體用來描述潑濺點“長什么樣”,是其幾何外形(數學)
高斯潑濺點包含位置、形狀(橢球)、顏色、透明度的完整渲染單元
二者關系橢球體是潑濺點的“空間外殼”;潑濺點是“有生命的像素”

🔁 橢球體只是形狀,潑濺點才是“帶顏色、能發光、會變化”的實體。

4)高斯潑濺點的完整屬性

每一個潑濺點,不僅有個“霧團的形狀”,還有:

屬性解釋
位置 μ潑濺點中心位置,在3D空間中的坐標
形狀 Σ(=RS2R?)協方差矩陣,定義橢球大小和方向(即幾何外殼)
不透明度 α控制它渲染時有多透明,用于多點融合時的深度混合
顏色/球諧系數 SH支持視角相關顏色變化,不僅僅是RGB,而是更“智能”的方向敏感顏色編碼

5)類比總結

類比含義
橢球體就像一個模糊的燈罩,定義光/顏色的范圍
潑濺點就像一個燈泡,能發光,顏色會變,影響周圍
渲染攝像機對著這些“燈泡”拍一張圖,通過疊加

總結一句話

高斯橢球體是高斯潑濺點的數學形狀,而高斯潑濺點是一個功能完整的渲染粒子單元,包括了位置、形狀、顏色、不透明度等,它們共同構成了 3DGS 的基礎。

5.高斯濺射技術的原理

1)什么是“高斯濺射”?

高斯濺射(Gaussian Splatting)最初是一種體繪制技術(volume rendering),核心思想是:

用一堆“模糊的小霧點”來還原一個真實世界的三維場景。

這些“霧點”在 3D 空間中不是一顆顆實心的點,而是像帶顏色和厚度的半透明泡泡 —— 它們的數學基礎是三維高斯函數。

2)什么是 3D 高斯濺射技術?

3DGS 是把上面這種“霧點”思想,和 真實圖像訓練、光照建模、GPU渲染優化結合起來的一種新一代實時渲染技術。它的應用目標是:

  • 給我幾張不同角度的照片;

  • 我就能還原出場景的真實 3D 結構;

  • 而且可以從任意新角度生成真實的圖像(→ 新視圖合成)。

3)3DGS 的五大核心流程

1?? 輸入數據:圖像 + 相機位姿 + 稀疏點云

  • 拍攝一堆照片,知道每張照片的相機角度(→ SfM計算相機矩陣);

  • 從中估計出稀疏點云(場景中的稀疏幾何);

這一步是“把多張2D照片變成初步的3D點”。


2?? 用 3D 高斯函數表示場景(用模糊小泡泡建場景)

  • 每個點用一個高斯函數表示,變成一個“模糊的半透明橢球體”;

  • 每個高斯攜帶:

    • 位置 μ:泡泡中心;

    • 形狀 Σ:泡泡的大小方向;

    • 顏色信息:不是固定顏色,而是視角相關顏色(球諧函數SH編碼)

    • 透明度 α:可調節的霧度;

? 場景最終就被建成了一堆這種“能變色的霧泡泡”的組合。


3?? 使用優化算法來訓練這些泡泡的參數(擬合真實圖像)

  • 讓這些泡泡渲染出來的圖像與真實照片進行比對;

  • 用**反向傳播 + 隨機梯度下降(SGD)**優化泡泡的參數(位置、顏色、方向...);

  • 目標是:泡泡組合出的渲染圖像盡量貼近真實拍攝的圖像。

? 這是類似“神經網絡訓練”的過程,但優化的不是網絡參數,而是每個高斯泡泡的屬性。


4?? 自適應密度控制(控制泡泡多少、合并或分裂)

  • 在細節多的區域:增加泡泡數量(更精細);

  • 在平滑區域:合并泡泡(減少資源);

這種方法可以在保證質量的同時節省大量渲染成本。


5?? 實時渲染:光柵化器+混合

  • 把所有 3D 泡泡投影到攝像機圖像平面,變成模糊的橢圓;

  • 使用**圖塊級并行渲染(tile-based rasterization)**對它們排序、混合;

  • 通過累加顏色與不透明度,形成真實圖像(視角一致)。

? 所有計算都可以在 GPU 上高效并行處理,實現了“實時新視圖生成”。

4)核心亮點歸納

技術點解釋
顯式表示每個泡泡是清晰定義的幾何和顏色單元,不像NeRF那樣黑盒
支持視角變化顏色編碼為球諧系數(SH),能擬合不同角度看到的顏色
可微渲染使用可微光柵化器,可以做梯度優化
渲染超快不需要光線追蹤,只需 GPU 混合泡泡投影圖就行
可擴展可以用于視頻、動態場景、多相機輸入等

6.高斯濺射技術的應用

1)3D重建(3D Reconstruction)

💡 定義:

多張不同角度的圖像中,還原出一個真實的、立體的三維場景(包括幾何 + 外觀)。

? 高斯濺射怎么做?

  • 每張圖片給出了不同角度的信息;

  • 3DGS會根據這些圖像,生成一堆“高斯泡泡”來填滿三維空間;

  • 每個泡泡的位置和顏色都經過訓練優化,最終構成一個真實場景的三維表示。

🔍 為什么比傳統方法強?

  • 傳統方法如 NeRF 渲染慢、不透明,難以修改;

  • 高斯濺射是顯式表示,支持直接編輯、移動;

  • 重建速度快,渲染快,可直接用于可視化與后續應用。

? 應用場景:

  • VR/AR 內容生成(建一個虛擬展館)

  • 無人機測繪、數字孿生城市

  • 游戲中的場景掃描和復刻

2)新視角合成(Novel View Synthesis)

💡 定義:

給你一些已有角度的照片,合成出“從沒拍過的角度”看到的圖像。

? 高斯濺射怎么做?

  • 每個泡泡都攜帶“視角相關的顏色模型”(通常是球諧函數SH);

  • 渲染時根據你站的角度,計算出每個泡泡的顏色和形狀;

  • 最終合成出一個新視角下的圖像,真實感強,過渡平滑。

🔍 優勢在哪?

  • 不用訓練神經網絡(不像 NeRF);

  • 不需要花很多時間推理;

  • 渲染實時,甚至可以“視頻級”速度運行!

? 應用場景:

  • 視頻會議(多人攝像頭生成自由視角)

  • 虛擬導覽(如博物館漫游)

  • 影視制作(從單鏡位合成多鏡位素材)


3)實時渲染(Real-Time Rendering)

💡 定義:

在用戶操作時(如轉動視角、縮放),系統能實時輸出圖像畫面,保持流暢互動體驗。

? 高斯濺射怎么實現?

  • 所有泡泡都已經優化好,儲存在顯存中;

  • 視角一變,只需要快速“投影這些泡泡”并混合顏色;

  • 完全基于 GPU 并行渲染,效率極高。

🔍 相比其他方法:

方法實時性成像質量訓練復雜度
NeRF? 慢? 高? 復雜
Mesh? 快? 較差? 簡單
3DGS? 極快? 高? 簡潔

? 應用場景:

  • 游戲實時渲染(尤其是動態景深、特效)

  • VR/AR頭顯內容(低延遲要求)

  • 智能汽車或機器人視覺系統(需要實時反饋)


? 總結記憶口訣:

重建準(準確還原),合成快(多視角),渲染爽(實時畫)!

7.什么是3DGS(3D高斯潑濺)?

3DGS是一種全新的3D場景表示方式,不再使用傳統的網格模型(Mesh),也不像NeRF那樣用隱式神經網絡來表示場景,而是用數以萬計的高斯函數(像點云一樣)顯式建模場景的幾何和外觀。

  • 每個高斯就像是一個小的“發光粒子”,有自己的:

    • 位置(空間坐標)

    • 方向和大小(形狀和姿態由協方差矩陣控制)

    • 顏色(RGB或球諧函數建模視角相關的顏色變化)

    • 透明度(決定它的視覺權重)

這些“高斯粒子”像噴濺墨水一樣,覆蓋在3D空間中,通過疊加和融合,生成平滑真實的圖像。

核心技術流程

  1. 輸入數據

    • 多張從不同角度拍攝的圖像

    • 相機的位姿信息(通過SfM估計)

  2. 點云生成

    • 使用Structure-from-Motion(SfM)技術獲取稀疏點云。

  3. 高斯點構建

    • 將每個點轉換為一個3D高斯(帶有空間和外觀參數)。

  4. 可微渲染優化

    • 使用可微高斯光柵器,把高斯點“投影”為圖像。

    • 使用真實圖像做監督,通過梯度下降不斷優化高斯參數(位置、大小、顏色等)。

  5. 渲染輸出

    • 實現實時、高質量的新視角圖像合成(不同于NeRF的慢速采樣渲染)。

與NeRF的對比

對比項NeRF3DGS
表示方式隱式函數(MLP)顯式點云(高斯)
訓練時間慢(數小時)快(幾十分鐘)
渲染速度慢(fps < 1)快(實時級)
可編輯性難編輯易編輯(顯式結構)
應用局限實時任務困難更適合SLAM、AR等實時應用

總結一句話:3DGS不是NeRF的升級,而是換了一個“思維模型”來建模和渲染場景。

技術突破:Niantic SPZ 格式

Niantic推出的 .SPZ 文件格式是對3DGS的進一步優化:

  • 壓縮率高:把原本幾百MB的PLY文件壓縮為十分之一大小;

  • 幾乎無質量損失:可視效果和原始3DGS一致;

  • 適合移動設備傳輸:更快加載、更適合AR應用;

  • 支持創作平臺:可以導入Niantic Studio做3D創作或AR展示。

技術細節如:

  • 每個高斯點從 236 字節壓縮到 64 字節;

  • 使用固定點量化、對數編碼等方式優化。

總結(通俗理解)

  • 把一個真實世界的場景“潑灑”為一堆高斯光點;

  • 每個光點都有位置、顏色、大小,組合起來形成完整圖像;

  • 不再訓練龐大的神經網絡,而是優化這堆“光點”的參數;

  • 渲染時像噴墨打印機一樣快速而高效;

  • 可直接用于 VR、AR、SLAM、影視等各種領域。

8.3DGS拍攝指南

3D Gaussian Splatting(3DGS)雖然不依賴神經網絡學習場景隱式表示,但它對 輸入圖像的質量、數量和拍攝策略要求較高。以下將從拍攝準備、拍攝角度、相機參數設置等幾個方面逐一說明。

① 拍攝設備建議

  • 推薦使用

    • 手機(iPhone、Pixel、三星等帶有良好圖像質量的手機)

    • 消費級相機或微單相機(如 Sony α 系列)

  • 要求

    • 相機穩定、不會自動模糊;

    • 盡量關閉圖像后處理(如 HDR、濾鏡);

    • 支持 EXIF 中記錄相機內參(有助于SfM恢復)。


② 拍攝場景要求

  • 建議選擇靜態場景(避免動態物體如人、車、動物進入);

  • 光照均勻:避免強烈光斑、高反差區域(影響SfM);

  • 避免反光/透明物體:如玻璃、鏡子、水面不適合用3DGS建模。


③ 拍攝角度與軌跡建議(非常關鍵?)

這是影響重建效果的重中之重:

拍攝方式說明建議
環繞拍攝(Orbit)繞物體水平拍攝保持視角重疊率大于70%,繞一圈至少拍20~50張
高低角度切換分別從低角度和高角度再繞拍避免模型頂部或底部模糊,最好換兩個仰視和俯視角度分別拍攝
避免純平面運動不能只從一個平面拍攝(如單一高度繞圈)需要多角度+高低視角交錯,SfM才能恢復完整深度關系
圖像間隔連續拍攝,圖像間重疊區域 > 60%圖像數量越多,點云越密集,模型越精細

④ 拍攝數量建議

場景大小推薦圖片數量舉例
小型物體(如雕像)30~100 張桌面尺寸或小型展品
房間級場景100~300 張一個廚房/客廳
建筑外觀或街景300~1000 張+整棟建筑或街道環境

?? 越復雜的場景、遮擋越多的角落,越需要多角度和更多張數。


⑤ 相機設置建議(如使用手動相機)

  • 分辨率:保持高清(如 1920×1080 以上,越高越好);

  • 曝光一致:不要拍一會兒亮一會兒暗;

  • 焦距固定:盡量使用固定焦距,不要拍攝過程中變焦;

  • 自動對焦可以開,但要保證每張圖都清晰;

  • 關閉 HDR 和濾鏡:防止圖像風格不一致。


⑥ 注意事項匯總

正確做法 ?錯誤示范 ?
多視角、高重疊、環繞拍攝單視角、幾張圖就想建模
靜態場景,光照均勻場景有移動的人、動物
有上下視角的拍攝只拍水平一圈
圖像清晰無模糊圖像抖動或對焦失敗
盡量避免反光/玻璃鏡面、水面、透明物體太多


⑦ 拍攝后處理建議

  • 可使用 COLMAP 或 instant-ngp 自帶的 SfM 工具做初步圖像去重;

  • 保留圖像數量 ≈ 提高稠密度 ≈ 更高建模精度;

  • 如果最終建模效果不理想,優先回到拍攝階段復查是否角度或數量不足。


📌 舉例說明:

假設你要重建一個花園雕像:

  1. 站在雕像周圍每隔 15° 拍一張(共 24 張一圈);

  2. 上下視角各一圈,再補 48 張;

  3. 繞近一圈+遠一圈(保證細節和整體);

  4. 總計約 100~150 張圖片,基本可以支持高質量 3DGS 重建。

9.點云生成

點云生成一般通過以下步驟進行。首先對拍攝數據進行預處理,通過圖片質量檢測,移除模糊圖片。之后,通過對應點檢索進行相機校準和照片對齊,完成相機位姿計算并獲得初始點云。隨后進行增量式重建,增量式重建主要利用SfM(Structure From Motion,從運動中恢復結構),SfM是一種從一組不同視角下拍攝的無序或有序影像中,同時恢復場景三維結構和相機姿態的技術。增量式SfM會選擇無序影像進行特征匹配,并進行幾何糾正、三角測量恢復稀疏點云結構,通過已有點云重新估計相對姿態,再進行局部和全局的BA優化,最后輸出全部的相機參數和稀疏三維點云。

一般在采集照片充足,質量高的情況下,獲取的相機位姿和實際采集位置相似,且初始點云形狀可明顯看出和采集場景一致。

光場重建

3DGS三維場景重建的大致流程如圖所示,包括:

  • 輸入:輸入是一組靜態場景的圖像,以及通過SfM算法得到的SfM點,以及所有圖像對應的相機位姿。

  • 初始化:對獲取的每個稀疏點云創建初始化3D高斯橢球,其由位置(平均值)、協方差矩陣(XYZ軸縮放因子、旋轉因子等)、不透明度和球諧函數系數(后文簡稱SH系數)所定義。該定義允許3D場景合理緊湊的表示,并通過調節參數緊湊化表示精細化場景結構。其中使用球諧函數來映射整個輻射場的方向性外觀分量(RGB顏色)。

  • 構建梯度流迭代優化:3D高斯橢球在對應的相機位姿下進行投影,獲取光柵化之后的圖像,與真實輸入圖像(真值圖像)進行比對優化,對初始化后的參數(位置、協方差矩陣、SH系數、高斯球密度的自適應控制)進行優化,同時通過自適應密度控制策略對高斯球進行拆分融合操作。

10.4D高斯

4D高斯 是在 3D高斯濺射(3D Gaussian Splatting) 的基礎上,引入時間維度(Temporal) 的一種新型表示方法。它不僅表示空間中的幾何和顏色信息,還能建模 場景隨時間變化的動態信息,實現對動態場景的連續建模與渲染。

維度含義
X, Y, Z表示物體在三維空間中的位置
T(時間)表示高斯基元在時間上的演變(如物體移動、變形)

因此,4D高斯可以被理解為:

“隨時間變化的3D點云 + 高斯參數”,用于建模和渲染動態場景。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/85300.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85300.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85300.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

comfyui插件和comfyui mac安裝

mac comfyui安裝包 ComfyUI.zip&#xff0c;官方最新0.3.40&#xff0c;如果后續官方有迭代&#xff0c;可以直接通過git更新源碼升級 comfyui插件下載&#xff0c;解壓放到custom_nodes目錄下&#xff0c;包含 comfyui-animatediff-evolved&#xff08;視頻插件&#xff09; 和…

面試題SpringCloud

SpringCloud有哪些特征&#xff1f; 分布式/版本化配置服務注冊與發現路由服務到服務的調用負載均衡斷路器領導選舉和集群狀態分布式消息傳遞 SpringCloud核心組件&#xff1f; Eureka 注冊中心Ribbon 客戶端負載均衡Hystrix&#xff1a; 服務容錯處理Feign:聲明式Rest客戶端Zu…

ASR-PRO語音識別可能出現的問題

ASR-PRO語音識別可能出現的問題 4月份有一天刷到牢大/愛麗絲語音自開關燈設備&#xff0c;心血來潮&#xff0c;博主也是淺嘗了一下&#xff0c;由此也總結一下&#xff0c;實現此項目會出現的問題。 在實現愛麗絲開關燈模塊時ASRPRO語音識別可能出現的問題如下&#xff1a; …

蒼穹外賣--緩存菜品Spring Cache

Spring Cache是一個框架&#xff0c;實現了基于注解的緩存功能&#xff0c;只需要簡單地加一個注解&#xff0c;就能實現緩存功能。 Spring Cache提供了一層抽象&#xff0c;底層可以切換不同的緩存實現&#xff0c;例如&#xff1a; ①EHCache ②Caffeine ③Redis 常用注解…

個人簡歷制作MarkDown模板

MarkDown制作個人簡歷的模板放在了github上&#xff0c;大家如有需求&#xff0c;請自取&#xff1a; https://github.com/QQQQQQBY/ResumeTemplate 介紹一下此模板的特點&#xff1a; &#x1f338;個人面試期間使用的、整理的簡歷格式&#xff0c;現在分享給大家。 ?簡歷采…

【MySQL數據庫 | 第五篇】DDL操作2

文章目錄 當前數據庫student的數據數據表操作 - 修改&刪除&#x1f4d6;修改操作增加字段&#x1f44f;案例&#xff1a;向數據表student中添加字段 id修改字段的數據類型【只能修改字段的屬性】&#x1f44f;案例&#xff1a;將student表中字段age的屬性由tinyint unsigne…

【瀏覽器插件】如何開發一個Chrome瀏覽器插件

這篇文章來介紹一下,如何開發一個自己的Chrome瀏覽器插件程序。 Chrome瀏覽器插件,其實是讓瀏覽器替我們執行我們自己寫的代碼,既然要讓瀏覽器執行代碼,那么首先,就需要定義一個規范,也就是說,需要讓Chrome瀏覽器知道,你寫的程序是一個插件。 這就需要介紹一下插件中…

詳細講解Redis為什么被設計成單線程

Redis 被設計成單線程的原因主要有以下幾點&#xff0c;這些原因涉及性能優化、復雜性控制、數據一致性以及適用場景等多個方面&#xff1a; 1. 簡化設計與實現 避免鎖競爭&#xff1a;多線程環境下&#xff0c;多個線程訪問共享資源時需要加鎖來保證數據一致性。鎖的使用會增…

Hive 邏輯優化器

Optimizer PointLookupOptimizer 作用&#xff1a;把符合條件的 OR 表達式轉為 IN。 參數hive.optimize.point.lookup 設置是否開啟 PointLookupOptimizer&#xff0c;默認為 true. 參數 hive.optimize.point.lookup.min 控制多少個 OR 表達式轉為 IN&#xff0c;默認 31。 例…

ZYNQ Petalinux實戰:PCIe直通NVMe固態硬盤,解鎖存儲性能新極限!

突破SD卡和SATA的速度枷鎖!本文將手把手教你如何在ZYNQ平臺上通過PCIe接口驅動NVMe固態硬盤。從硬件設計、Linux內核配置到創新性的DMA零拷貝優化,實現2000MB/s+ 的存儲性能飛躍,附完整代碼解析和性能實測對比。 一、為什么選擇PCIe NVMe?存儲性能革命 ZYNQ傳統存儲方案面…

05-mcp-server案例分享-用豆包大模型 1.6 手搓文生圖視頻 MCP-server發布到PyPI官網

1前言 上期給大家介紹過mcp-server案例分享-用豆包大模型 1.6 手搓文生圖視頻 MCP-server。當時部署的方式使用了一個私有云SSE的部署。當時缺少一個本地部署的方式&#xff0c;有的小伙伴給我留言能不能有一個本地話部署方式了。今天就給大家帶來一個本地化部署的方案。 話不…

MCP Parameters 增加描述

場景&#xff1a;本地MCP開發完后是否發現CLINE上顯示的Parameters 顯示No description 方法1 &#xff1a;使用參數元數據 (Annotated) 可以使用 Pydantic 的with 類提供有關參數的其他元數據Annotated。這種方法更受歡迎&#xff0c;因為它更現代&#xff0c;并且將類型提示…

STM32 GPIO 寄存器開發

&#x1f527; ?一、核心寄存器概覽? ?寄存器??功能??位寬??關鍵位域??GPIOx_CRL/CRH?配置引腳模式&#xff08;輸入/輸出/復用/模擬&#xff09;和輸出參數32位每4位控制1個引腳&#xff1a;CNF[1:0]&#xff08;模式&#xff09; MODE[1:0]&#xff08;速度&am…

powershell 獲取 用戶及進程列表

在PowerShell中獲取用戶的進程列表&#xff0c;可以通過幾種方法實現。以下是一些常見的方法&#xff1a; 方法1&#xff1a;使用Get-WmiObject Get-WmiObject命令可以用來查詢Windows Management Instrumentation (WMI)數據庫&#xff0c;從而獲取關于進程和用戶的信息。 # …

量化面試綠皮書:15. 假幣一

文中內容僅限技術學習與代碼實踐參考&#xff0c;市場存在不確定性&#xff0c;技術分析需謹慎驗證&#xff0c;不構成任何投資建議。 15. 假幣一 有 10個袋子&#xff0c;每個袋子里有 100個相同的硬幣。 在除一個以外的所有袋子中&#xff0c;每枚硬幣重10 克。 然而&#x…

Java求職者面試:Spring AI、MCP、RAG、向量數據庫與Embedding模型技術解析

Java求職者面試&#xff1a;Spring AI、MCP、RAG、向量數據庫與Embedding模型技術解析 第一輪&#xff1a;基礎概念問題 1. 請解釋Spring AI是什么&#xff1f;它與傳統Spring框架有何不同&#xff1f; Spring AI是Spring生態系統的一部分&#xff0c;專注于人工智能和機器學…

tp框架導出excel的時候報錯:unexcepted identifier “Closure“,excepting variable

記錄一個簡單的錯誤。 背景 用的是PhpOffice/PhpSpreadsheet 在本地環境下是可以正常導出excel的。但是線上就不行。 就會報錯unexcepted identifier “Closure”&#xff0c;好像是不能用匿名函數。 首先 本地可以正常導出&#xff0c;然后服務器上不可以。看了各種日志。ph…

[Java惡補day24] 74. 搜索二維矩陣

給你一個滿足下述兩條屬性的 m x n 整數矩陣&#xff1a; 每行中的整數從左到右按非嚴格遞增順序排列。 每行的第一個整數大于前一行的最后一個整數。 給你一個整數 target &#xff0c;如果 target 在矩陣中&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 …

解鎖VSCode:從入門到精通的全攻略

目錄 一、VSCode 初相識二、安裝與基礎設置2.1 下載安裝2.2 基礎設置三、核心功能深度剖析3.1 強大的代碼編輯3.2 高效的版本控制集成3.3 實用的調試工具四、插件擴展,拓展無限可能4.1 插件市場探秘4.2 必備插件推薦五、個性化定制,打造專屬開發環境5.1 快捷鍵設置5.2 用戶代…

RFC4291-IPv6地址架構

RFC4291 IP Version 6 Addressing Architecture Author&#xff1a;Once Day Date&#xff1a;2025年6月15日 本文翻譯自RFC 4291 - IP Version 6 Addressing Architecture 這篇文章總結了IPv6的基礎概念&#xff0c;屬于IPv6協議入門內容。 文章目錄 RFC4291 IP Version 6 …