SplaTAM

Keetha 2024 · Paper

One-line summary — Among the first SLAM systems to use 3D Gaussian Splatting as the map (concurrent with GS-SLAM and MonoGS): an RGB-D splat-track-map loop through a differentiable rasteriser, with a rendered silhouette guiding both pose optimisation and Gaussian densification.

Problem

Dense SLAM methods were “often hampered by the non-volumetric or implicit way they represent a scene”: handcrafted explicit maps (points, surfels, SDFs) track reliably only with rich 3D features and explain only observed surfaces, while implicit radiance-field SLAM (NICE-SLAM, Point-SLAM) needs expensive per-ray volumetric sampling, forcing losses over a sparse set of pixels. 3D Gaussian Splatting rasterises at up to 400 FPS but had always required known poses. SplaTAM (CVPR 2024, CMU/MIT) shows “for the first time that representing a scene by 3D Gaussians can enable dense SLAM using a single unposed monocular RGB-D camera”.

Method & architecture

Simplified Gaussian map. The scene is a set of isotropic, view-independent Gaussians — 8 parameters each (RGB colour c\mathbf{c}, centre μR3\boldsymbol{\mu}\in\mathbb{R}^3, radius rr, opacity oo) — each influencing space as f(x)=oexp(xμ22r2)f(\mathbf{x}) = o\exp\bigl(-\tfrac{\|\mathbf{x}-\boldsymbol{\mu}\|^{2}}{2r^{2}}\bigr). Colour, depth, and a silhouette are all rendered by sorting Gaussians front-to-back and alpha-compositing their 2D splats:

C(p)=i=1ncifi(p)j=1i1(1fj(p)),D(p)=i=1ndifi(p)j=1i1(1fj(p)),S(p)=i=1nfi(p)j=1i1(1fj(p)),C(\mathbf{p})=\sum_{i=1}^{n}\mathbf{c}_{i}f_{i}(\mathbf{p})\prod_{j=1}^{i-1}\bigl(1-f_{j}(\mathbf{p})\bigr), \quad D(\mathbf{p})=\sum_{i=1}^{n}d_{i}f_{i}(\mathbf{p})\prod_{j=1}^{i-1}\bigl(1-f_{j}(\mathbf{p})\bigr), \quad S(\mathbf{p})=\sum_{i=1}^{n}f_{i}(\mathbf{p})\prod_{j=1}^{i-1}\bigl(1-f_{j}(\mathbf{p})\bigr),

where fi(p)f_i(\mathbf{p}) uses the projected centre μ2D=KEtμ/d\boldsymbol{\mu}^{2D} = K\,E_{t}\boldsymbol{\mu}/d and radius r2D=fr/dr^{2D} = fr/d with d=(Etμ)zd=(E_{t}\boldsymbol{\mu})_{z}. The silhouette SS says how much map evidence each pixel has — the map’s epistemic uncertainty.

Each frame runs three steps:

  1. Camera tracking. The new pose is initialised by constant-velocity propagation, Et+1=Et+(EtEt-1)E_{t+1}=E_{t}+(E_{t}-E_{t\text{-}1}), then refined by gradient descent through the rasteriser with Gaussians frozen, using only well-mapped pixels: Lt=p(S(p)>0.99)(L1(D(p))+0.5L1(C(p))).L_{t}=\sum_{\mathbf{p}}\Bigl(S(\mathbf{p})>0.99\Bigr)\Bigl(\mathrm{L}_{1}\bigl(D(\mathbf{p})\bigr)+0.5\,\mathrm{L}_{1}\bigl(C(\mathbf{p})\bigr)\Bigr).
  2. Gaussian densification. A mask picks pixels the map does not yet explain — low silhouette, or true geometry in front of the rendered geometry: M(p)=(S(p)<0.5)+(DGT(p)<D(p))(L1(D(p))>50MDE),M(\mathbf{p})=\Bigl(S(\mathbf{p})<0.5\Bigr)+\Bigl(D_{\mathrm{GT}}(\mathbf{p})<D(\mathbf{p})\Bigr)\Bigl(\mathrm{L}_{1}\bigl(D(\mathbf{p})\bigr)>50\,\mathrm{MDE}\Bigr), with MDE the median depth error. Masked pixels each spawn a Gaussian with the pixel’s colour, centre at the unprojected depth, opacity 0.5, and one-pixel radius r=DGT/fr = D_{\mathrm{GT}}/f.
  3. Map update. With poses frozen, Gaussian parameters are optimised over kk keyframes (current frame, latest keyframe, and the k2k-2 keyframes with highest frustum overlap with the current depth point cloud), warm-started from the existing map, using the colour+depth loss without the silhouette mask plus an SSIM term; near-transparent or oversized Gaussians are culled.

Results

Why it matters for SLAM

SplaTAM helped launch the 3DGS SLAM research line, showing an explicit, differentiable, volumetric map can beat NeRF-style SLAM on tracking, mapping, and view synthesis at interactive rates — and that dense per-pixel losses become affordable when rendering is rasterisation instead of ray marching. Its silhouette mask became a standard densification and uncertainty-gating tool, and its alternating track-then-map loop through a differentiable rasteriser is the template that Photo-SLAM, RTG-SLAM, GS-ICP SLAM, and many follow-ups build on.