Skip to content

v1.2.0 — SH Wigner rotation · exposure compensation · render ladder · pose covariance

Choose a tag to compare

@Archerkattri Archerkattri released this 10 Jun 03:49
· 22 commits to main since this release

splatreg 1.2.0 — the correctness release.

Spherical harmonics now rotate correctly. Real-basis Wigner-D rotation (any degree; Ivanic–Ruedenberg recurrence with the 1998 erratum corrections, conjugated into the 3DGS f_rest sign convention) is baked into apply_transform, merge, and the align CLI. Verified renderer-free to 2.4e-15: evaluating rotated coefficients at d equals evaluating the originals at R⁻¹d, plus closed-form l=1, composition, and PLY round-trip tests. To our knowledge splatreg is the only splat registrar that rotates view-dependent color correctly. Also exported standalone: splatreg.rotate_sh / sh_rotation_matrix.

Photometric refine upgrades

  • Per-pair exposure compensation (closed-form gain/bias, clamped, alternated with the pose LM, default ON): a ×1.3 tint that silently corrupted the recovered Sim(3) scale (0.10% → 3.99% error) is absorbed back to 0.47%, harmless on clean pairs.
  • Coarse-to-fine render ladder (refine_kwargs["ladder"]): at equal budget, 5.61° (single rung) → 2.55°.

New API

  • RegisterResult.info["information"] / ["covariance"] — JᵀWJ and σ̂²(JᵀWJ)⁻¹ at convergence (6×6 SE(3) / 7×7 Sim(3)); None when singular, never faked. Unlocks pose-graph / submap fusion use.
  • apply_transform() — align scans without merging: bake the recovered transform into the source and save each scan as its own PLY (mirrors splatreg align).
  • validate_recovery.py --fast (6 cells, ~41 s CPU).

Test suite: 105 → 126 passed. Docs updated throughout.

pip install -U splatreg