Score exposure sweeps by LED spline quality

This commit is contained in:
Meta Vens 2026-05-31 02:12:17 +01:00
commit 2f1e5f856e
7 changed files with 296 additions and 6 deletions

View file

@ -393,6 +393,12 @@ a named invariant that the native runtime cannot protect yet.
correspondence requires coded or otherwise stable LED identity; uncoded
repeated lights remain curve constraints until the global residual solver
resolves them.
Exposure/gain sweeps must optimize recovered spline quality, not generic
contrast or brightness. `MimirLedSplineQualityScorer` scores each setting by
detected LED count, curve coverage, spacing coherence, smoothness, exposure
fitness, and saturation penalty. `--led-spline-quality-sweep-smoke` proves
the selector chooses the balanced setting over both underexposed missing-LED
detections and overexposed saturated halos.
Phase 6 program-output receipts are also structurally complete: Fensalir
publishes the final program surface through named shared D3D12 texture/fence
resources, the OBS plugin consumes that surface with an explicit D3D12-to-

View file

@ -33,6 +33,9 @@ flowchart TD
- Stable LED index identity requires temporal/color/address coding or another
correspondence source; uncoded identical lights are spline constraints, not
metric depth authority.
- Exposure/gain sweeps optimize recovered spline quality: detected LED count,
curve coverage, spacing coherence, smoothness, exposure fitness, and
saturation penalty. Bright clipped blobs are not good evidence.
- The first camera-rig solver fits bounded camera translation updates from a
scene-anchored LED curve by minimizing ray-to-curve distance. Rotation,
intrinsics, and distortion are future owners.