Table of Contents

Overview
#

3D Gaussian Splatting uses adaptive density control to refine scene representation. Gaussians are split or cloned based on specific conditions during optimization.

Split Conditions
#

Two Primary Criteria
#

1. Gradient Magnitude Threshold

When positional gradient exceeds threshold:

$$ \|\nabla_p L\| > \tau_{grad} $$

Indicates the Gaussian needs refinement to better represent the scene.

2. Size Threshold

When Gaussian scale exceeds limit:

$$ \max(s_x, s_y, s_z) > \tau_{size} $$

Large Gaussians should be split into smaller ones.

Adaptive Control Operations
#

Split (Over-reconstruction)
#

When Gaussian is too large with high gradient:

Parent Gaussian → 2 Child Gaussians
- Positions: Along principal axes
- Scale: 1/2 to 2/3 of original
- Opacity: Inherited, then adjusted
- Color: NOT inherited (re-learned)

Clone (Under-reconstruction)
#

When Gaussian is too small with high gradient:

Parent Gaussian → Parent + 1 Clone
- Clone positioned along gradient direction
- Same scale as parent

Prune
#

Remove Gaussians with:

  • Very low opacity: \(\alpha < \tau_{opacity}\)
  • Very large scale in world space

Algorithm
#

for gaussian in gaussians:
    grad = compute_gradient(gaussian)

    if norm(grad) > tau_grad:
        if gaussian.scale > tau_size:
            # Split: Too large
            split_gaussian(gaussian)
        else:
            # Clone: Too small
            clone_gaussian(gaussian)

    if gaussian.opacity < tau_opacity:
        prune_gaussian(gaussian)

Axis-Aligned Benefits
#

AdvantageDescription
Fast computationSimple matrix operations
GPU friendlyEfficient parallel processing
Easy samplingSimplified ray-casting
HierarchicalNatural octree integration
Fast convergenceQuick early training

Trade-offs
#

ProsCons
Computational efficiencyLess expressive for diagonal surfaces
Real-time renderingMay need more Gaussians
Simple implementationMemory overhead for complex scenes

Training Schedule
#

Typical adaptive control:

IterationOperation
0 - 500Densification disabled
500 - 15000Active split/clone
15000+Densification disabled

Opacity reset at iteration ~3000 to remove floaters.

Parameters
#

ParameterTypical ValueDescription
\(\tau_{grad}\)0.0002Gradient threshold
\(\tau_{size}\)World-dependentSize threshold
\(\tau_{opacity}\)0.005Prune threshold
Densify interval100 itersCheck frequency