DiagSplat · first low-light mechanism check · 2 August 2026

Noise-adaptive transfer functions for low-light 3DGS

Vanilla 3D Gaussian Splatting versus NTF-GS v0 on RealX3D Lowlight / Ujikintoki. Both models use the same 30 noisy training views, five clean held-out views, camera poses, initialization, and 30k-iteration schedule.

30 noisy train views 5 clean test views full resolution 30,000 iterations densification unchanged
Fewer Gaussians at 30k−16.7%862k → 718k
Rendered-image PSNR−0.21 dB21.242 → 21.030
LPIPS, lower is better−0.00350.4607 → 0.4572
Training time−7.9%17:55 → 16:30

Result in one sentence

NTF-GS v0 produces a materially smaller and slightly faster representation while preserving perceptual quality, but it does not yet beat vanilla 3DGS on PSNR.

This is a useful mechanism signal: the noise-adaptive objective suppresses some noise-driven Gaussian growth. It is not yet a complete low-light reconstruction win.

What the first run establishes The representation shrinks by 143,907 Gaussians without an SSIM or LPIPS regression. The next experiment should tune the transfer threshold and confidence strength, then measure local high-frequency recovery and Gaussian scale distributions.

Five clean held-out views

All images below come from the final 30k checkpoints. Click any image to inspect it at full resolution. Frame IDs correspond to the RealX3D test split.

Held-out view 1

0031.JPG
Clean GT
Vanilla 3DGS
NTF-GS v0

Held-out view 2

0032.JPG
Clean GT
Vanilla 3DGS
NTF-GS v0

Held-out view 3

0033.JPG
Clean GT
Vanilla 3DGS
NTF-GS v0

Held-out view 4

0034.JPG
Clean GT
Vanilla 3DGS
NTF-GS v0

Held-out view 5

0035.JPG
Clean GT
Vanilla 3DGS
NTF-GS v0

Rendered-image metrics

Metrics are recomputed from the saved 30k renders with the standard Graphdeco evaluator. Bold values are better according to each metric.

MethodPSNR ↑SSIM ↑LPIPS ↓Gaussians ↓
Vanilla 3DGS21.24210.62890.4607862,369
NTF-GS v021.03050.62950.4572718,462
NTF − Vanilla−0.2116+0.0006−0.0035−143,907

The values printed during training differ slightly because the saved-image evaluator measures the final exported PNGs; this table is the consistent comparison used for the report.

Gaussian growth

NTF-GS remains smaller at both saved checkpoints. Densification code and thresholds are identical, so this difference is induced by the changed image-space gradients.

Vanilla 3DGS
862,369
NTF-GS v0
718,462
CheckpointVanilla 3DGSNTF-GS v0Reduction
7k667,333576,578−13.6%
30k862,369718,462−16.7%

What the model actually sees

The physical low-light frames are extremely dark. For this controlled first run, each frame receives one scalar exposure gain estimated in linear RGB from its paired clean training reference. No spatial denoising or clean pixels are used as the optimization target.

Training frame 0001

gain 164.6×
Physical low-light input
Exposure-aligned noisy target
Clean reference · alignment only

Training frame 0015

gain 171.9×
Physical low-light input
Exposure-aligned noisy target
Clean reference · alignment only

Training frame 0030

gain 169.8×
Physical low-light input
Exposure-aligned noisy target
Clean reference · alignment only

Method difference

Vanilla 3DGS

  • Standard sRGB-domain L1 + SSIM objective
  • Standard gradient-driven densification
  • 30k iterations at full image resolution

NTF-GS v0

  • Linear-radiance reconstruction
  • Two-slope logarithmic transfer function
  • Poisson–Gaussian SNR confidence weighting
  • Shot 0.01 · read 0.02 · threshold 0 dB · low-slope ratio 1/8
  • Densification itself remains unchanged

Interpretation and next check

Positive: the objective changes the densification trajectory in the desired direction and does not reduce SSIM or LPIPS on the clean test set.

Limitation: a 0.21 dB PSNR cost remains, and global image metrics cannot tell whether small noisy floaters or fine texture improved.

Next: sweep the SNR threshold and confidence gamma, render matched high-frequency crops, and report Gaussian scale/opacity histograms. A second-stage densification gate should only be added after selecting a loss-domain setting that closes the PSNR gap.