Skip to main content

2D Gaussian Splatting

2D Gaussian Splatting (2DGS) は、3DGS の primitive を 3D 楕円体から 2D oriented disk に置き換えることで、surface reconstruction の精度を高める手法です。

何が違うのか

3DGS の楕円体は、view-dependent rendering には強いものの、surface 抽出には弱いという問題がありました。Gaussian が薄く広く分布し、normal や depth が不安定だからです。

2DGS では、各 primitive を 平面上の 2D Gaussian diskとして扱います。

各 disk が surface の局所平面に対応するため、

  • Surface normal が一意に定まる
  • Depth に sharp な edge が出る
  • Mesh 抽出が安定する

という利点があります。

Training

2DGS でも基本は photometric loss ですが、surface 一貫性を高めるために

  • Depth consistency loss
  • Normal consistency loss

が追加されます。これにより、view を変えても整合する surface が学習されます。

用途

  • 高品質な mesh 抽出
  • Relighting
  • Physical simulation 用の clean surface
  • Photogrammetry alternative

3DGS との使い分け

用途推奨
Real-time novel view synthesis3DGS / Mip-Splatting
Surface reconstruction、mesh 化2DGS
Editing、relighting2DGS
Dynamic scene4DGS (3DGS ベース)

数式で見る 2D Gaussian の surface 表現

2D Gaussian Splatting では、各 primitive を三次元の楕円体ではなく、局所的な surface patch として扱います。中心を μi\boldsymbol{\mu}_i、局所 tangent basis を Ti=[ti1,ti2]\mathbf{T}_i=[\mathbf{t}_{i1},\mathbf{t}_{i2}]、二次元座標を uR2\mathbf{u}\in\mathbb{R}^2 とすると、patch 上の点は次のように表せます。

x(u)=μi+Tiu\mathbf{x}(\mathbf{u})=\boldsymbol{\mu}_i+\mathbf{T}_i\mathbf{u}

Patch 内の重みは、二次元 Gaussian として書けます。

Gi(u)=exp(12uΣi,2D1u)G_i(\mathbf{u})=\exp\left(-\frac{1}{2}\mathbf{u}^\top\boldsymbol{\Sigma}_{i,2D}^{-1}\mathbf{u}\right)

この式の気持ちは、「volumetric な雲を置くのではなく、surface に沿った薄い楕円 disk を置く」というものです。Surface reconstruction では、厚みのある 3D Gaussian よりも surface normal や geometry が解釈しやすくなることがあります。

関連ページ

主なソース