---
title: 'DN-Splatter: Depth & Normal Priors for 3D Reconstruction'
url: https://www.emergentmind.com/topics/dn-splatter
type: topic
---

# DN-Splatter: Depth & Normal Priors for 3D Reconstruction

DN-Splatter (Depth and Normal Priors for Gaussian Splatting and Meshing) is a 3D scene reconstruction framework designed to address the limitations of 3D Gaussian splatting for novel view synthesis and mesh extraction, particularly in the context of challenging indoor environments. By incorporating geometric priors—specifically, depth and surface normal cues—DN-Splatter enhances the physical plausibility and fidelity of Gaussian-based reconstructions and enables efficient conversion to watertight triangle meshes. The method leverages photometric, depth, and normal supervision, utilizing sensor data or monocular predictions, and achieves state-of-the-art geometric accuracy while maintaining the real-time efficiency of 3D Gaussian splatting [2403.17822].

## 1. Scene Representation and Rendering Pipeline

DN-Splatter models a scene via a set of $N$ 3D Gaussian primitives, each parameterized by:
- $\mu_i \in \mathbb{R}^3$: mean (geometry center)
- $\Sigma_i \in \mathbb{R}^{3 \times 3}$: covariance, decomposed as $s_i \in \mathbb{R}^3$ (axis lengths) and $q_i \in \mathbb{R}^4$ (orientation quaternion)
- $o_i \in \mathbb{R}$: opacity (density scaling)
- $c_i \in \mathbb{R}^3$: color via spherical harmonics

Rendering proceeds by projecting each 3D Gaussian onto the image plane, yielding a 2D Gaussian. For a pixel $p$ along a camera ray, the alpha contribution is computed as:
$$
\alpha_i(p) = o_i \exp\left(\frac{1}{2}(p - \mu_i)^\top \Sigma_i^{-1}(p - \mu_i)\right)
$$
Gaussians are sorted along the viewing direction by mean $z$-depth and composited in a front-to-back order using discrete volume rendering:
$$
\hat{C}(p) = \sum_{i=1}^N c_i \, \alpha_i(p) \, T_i, \quad T_i = \prod_{j < i} (1 - \alpha_j(p))
$$

## 2. Loss Functions and Geometric Regularization

The DN-Splatter loss function is a weighted sum of photometric, depth, and normal terms, with additional smoothness regularization:
$$
\mathcal{L} = \mathcal{L}_{\mathrm{rgb}}
+ \lambda_{\mathrm{depth}} \left( \mathcal{L}_{\hat{D}} + \lambda_{\mathrm{smooth}} \mathcal{L}_{\hat{D}_{\mathrm{smooth}}} \right)
+ \lambda_{\mathrm{normal}} \left( \mathcal{L}_{\hat{N}} + \mathcal{L}_{\hat{N}_{\mathrm{smooth}}} \right)
$$

- $\mathcal{L}_{\mathrm{rgb}}$: per-pixel photometric loss between rendered and observed color
- Depth rendering (approximate):
  $$
  \hat{D}(p) = \sum_{i=1}^N d_i \alpha_i(p) T_i
  $$
  with $d_i = \mu_{i,z}$
- Gradient-aware, logarithmic depth loss:
  $$
  \mathcal{L}_{\hat{D}} = \frac{1}{|\hat{D}|} \sum_{p} \exp\left(-\|\nabla I(p)\|\right) \log\left(1 + \lvert \hat{D}(p) - D(p) \rvert\right)
  $$
- Depth smoothness (total variation):
  $$
  \mathcal{L}_{\hat{D}_{\mathrm{smooth}}}
  = \frac{1}{|\hat{D}|}\sum_{i,j} \left| \hat{D}_{i,j} - \hat{D}_{i+1,j} \right| + \left| \hat{D}_{i,j} - \hat{D}_{i,j+1} \right|
  $$
- Gaussian-based surface normals:
  $$
  \hat{n}_i = R(q_i) \, \mathrm{OneHot}\bigl(\arg\min(s_i)\bigr)
  $$
  Rendered per-pixel normal:
  $$
  \hat{N}(p) = \sum_{i} \hat{n}_i \alpha_i(p) T_i
  $$
- Normal supervision (L1 loss):
  $$
  \mathcal{L}_{\hat{N}} = \frac{1}{|\hat{N}|} \sum_p \| \hat{N}(p) - N(p) \|_1
  $$
- Normal smoothness (total variation):
  $$
  \mathcal{L}_{\hat{N}_{\mathrm{smooth}}} = \frac{1}{|\hat{N}|} \sum_{i,j} \| \hat{N}_{i,j} - \hat{N}_{i+1,j} \| + \| \hat{N}_{i,j} - \hat{N}_{i,j+1} \|
  $$

Typical weights: $\lambda_{\mathrm{depth}} = 0.2$, $\lambda_{\mathrm{smooth}} = 0.5$, $\lambda_{\mathrm{normal}} = 0.1$.

## 3. Integration of Monocular Depth and Surface Normal Priors

DN-Splatter enhances geometric supervision by incorporating monocular depth and normal prediction when sensor data is absent.
- Monocular depth (e.g., ZoeDepth, DepthAnything) outputs are aligned to sparse SfM depths via affine scale and shift:
  $$
  (a^*, b^*) = \arg\min_{a,b} \sum_p (a D_{\rm sparse}(p) + b - D_{\rm mono}(p))^2
  $$
- The aligned monocular depth $D_{\rm mono}$ serves as the ground truth for $\mathcal{L}_{\hat{D}}$.
- Surface normal priors are produced with a pretrained Omnidata network, providing pseudo-ground truth $N(p)$ for normal supervision.

*This suggests DN-Splatter is robust to the lack of dense sensor depth and can utilize learned scene priors from monocular predictors without additional hardware.*

## 4. Training Pipeline and Optimization

The DN-Splatter optimization follows a multi-stage iterative protocol:
1. Input: calibrated RGB images, poses, optionally sensor depths.
2. Initialization via COLMAP SfM:
    - $\mu_i$: 3D points, $c_i$: nearest pixel colors, $s_i$: average neighbor distance, $q_i$: local normals.
3. Precompute monocular depths and normals; align as required.
4. Iterative optimization loop:
    - Randomly sample a training view.
    - Render $\hat{C}_t$, $\hat{D}_t$, $\hat{N}_t$.
    - Compute all loss terms.
    - Backpropagate and update all Gaussian parameters ($\mu_i, s_i, q_i, o_i, c_i$) using Adam.
    - Maintenance: periodically cull low-opacity Gaussians, split high-gradient Gaussians, and optionally adapt learning rate.

## 5. Mesh Extraction from Gaussian Representations

DN-Splatter bypasses the need for explicit signed distance fields or occupancy grids for mesh extraction. Instead, the system back-projects rendered depth and normal maps from all training views into world coordinates, generating a set of oriented 3D points $(X_j, n_j)$. These points are then fused into a watertight triangle mesh via a single Poisson surface reconstruction:

```python
oriented_points = []
for each training view t:
  for each valid pixel p:
    d = D_hat_t(p)
    x_cam = unproject(p, d)
    n_cam = N_hat_t(p)
    oriented_points.append((x_cam, transform(n_cam)))
mesh = PoissonReconstruct(oriented_points, depth=9)
```

*A plausible implication is that this approach retains physical correctness while enabling direct meshable representations, even in textureless scenes.*

## 6. Experimental Results and Comparative Performance

Evaluation on multiple indoor datasets (MuSHRoom, ScanNet++, Replica, Tanks & Temples) demonstrates notable improvements in both view synthesis and geometric accuracy. 

| Method               | Chamfer-L₁ ↓ | F-score ↑ |
|----------------------|--------------|-----------|
| Splatfacto           | 4.72         | 71.84     |
| SuGaR-coarse         | 3.90         | 80.18     |
| SuGaR-refined        | 3.94         | 79.39     |
| DN-Splatter (ours)   | **1.94**     | **93.10** |

Additional key results:
- Novel view synthesis on MuSHRoom: PSNR=24.40, SSIM=0.8424, LPIPS=0.1338 for DN-Splatter (vs. Splatfacto: 24.21/0.8375/0.1421).
- Depth metrics (MuSHRoom): Abs Rel reduced from 0.0826 (Splatfacto) to 0.0294, RMSE log from 0.0956 to 0.0300.
- ScanNet++ (mesh metric): Chamfer-L₁=6.80 (vs. 17.19 Splatfacto), F-score=69.41 (vs. 17.90).

DN-Splatter achieves competitive novel-view synthesis performance while producing meshes with substantially lower Chamfer-L₁ distance and higher F-score compared to Splatfacto and SuGaR variants. When compared to SDF-based (MonoSDF) and NeRF-based (Depth-Nerfacto) techniques, DN-Splatter is competitive on photometric metrics, significantly superior on geometric metrics, and retains the real-time rendering and fast training (∼30 k iterations) characteristic of Gaussian-based methods.

## 7. Advantages, Limitations, and Future Directions

Key advantages include:
- Enforcing real-world depth and normal priors during Gaussian splatting
- Avoiding complex SDF or occupancy grids while supporting direct mesh extraction
- Fast training and real-time inference

Limitations:
- Depth rendering is approximate due to global Gaussian sorting
- Performance relies on moderately dense camera trajectories; highly dynamic or sparse captures are more difficult
- Mesh quality remains sensitive to depth noise; the joint optimization of mesh and Gaussians is an open question

*This suggests further progress may require integrated mesh-Gaussian optimization and advancements in depth denoising for even higher fidelity reconstructions* [2403.17822].

Source: https://www.emergentmind.com/topics/dn-splatter