Gaussian Splatting
Rendering novel views with Gaussian Splatting, with the mathematics behind the technique.
Overview
3D Gaussian Splatting represents a scene with learned Gaussians for novel-view rendering. The 2023 method by Kerbl and colleagues starts with calibrated images and sparse points, then optimizes the scene representation with a fast splat renderer.
Steps of Gaussian Splatting
1. Data Collection
Collect overlapping images of the scene. Estimate camera parameters and a sparse point cloud, typically using Structure from Motion.
2. Preprocess the Point Cloud
- Check the camera poses and remove unreliable points.
- Use the remaining points to initialize Gaussian centers.
3. Define the Gaussian Function
Each Gaussian has a center and covariance, along with learned opacity and view-dependent color. Its spatial shape is:
- μ is the mean or center of the Gaussian (the location of the data point).
- Σ is the covariance matrix that determines the shape of the Gaussian (how spread out or narrow it is).
- x is the 3D point in space.
The covariance matrix controls the width and orientation of the Gaussian splat. If the covariance is small, the splat will be narrow and sharp; if it is large, the splat will be broader and softer.
4. Splatting Process
Project each visible 3D Gaussian onto the image plane as a 2D footprint.
5. Blending Overlapping Gaussians
Sort contributions by depth and use alpha compositing. With contributions ordered front to back:
Here, c_i is color and α_i combines the Gaussian footprint with learned opacity. Earlier contributions reduce the visibility of later ones.
6. Rendering the Scene
The visibility-aware rasterizer evaluates these contributions to produce the image. The original method uses splat rasterization rather than tracing a ray through every Gaussian.
7. Optimization
Optimize Gaussian parameters against the training images, with density control to add or remove Gaussians as needed.