Skip to content

GALOSH v0.5.0 — YUV blind estimation fixed: the envelope estimator lands

Choose a tag to compare

@luxgrain luxgrain released this 20 Jul 06:17
· 7 commits to main since this release

The headline is a correction. The YUV pipeline's blind (α, σ²) noise fit had been a simplified global-Laplacian-MAD + synthetic α since an early rewrite — not the lower-envelope estimator the paper describes as shared with the RAW pipeline. The simplification was never recorded or validated; it shipped by mistake. v0.5.0 restores the canonical estimator across CPU, OpenCL and Vulkan, and corrects the record.

Highlights

  • Canonical envelope estimator for YUV: a single-plane variant of the RAW lower-envelope fit (16×16 block stats, exact rank-n/2 Laplacian medians, 32-bin p5–p20 lower envelope, Huber-WLS ×5, dark-pixel σ² refinement), one shared switch for every YUV route. Legacy MAD stays available as GALOSH_YUV_NOISE_EST=mad (output-identical to v0.4.0).
  • Validated twice: ablation (54 cells × 8 lanes) = +0.39 dB / −0.056 LPIPS vs MAD, beating even oracle variance-fit injection; full bench rerun (1,656 cells) = AWGN-420 +1.19 dB, PG +0.11–0.24 dB, CRVD +0.32/+0.36 dB, LPIPS improves on all 32 track × variant rows. CRVD-444 ISO25600 vs σ-oracle BM3D widens from +3.2 to +3.9 dB.
  • Two v0.4.0 GPU bugs fixed (found by the parity work): the 420 re-encode adapter's [0,1] clip destroyed sub-black/super-white noise excursions (dark-frame blind σ collapsed 0.0266 → 0.0142 → chroma under-denoise), and the OpenCL 420 chroma lane was missing the noise-adaptive LOESS radius.
  • Three-engine parity on Intel Arc A310 / RTX 4070 Ti / AMD gfx1036 (estimates bit-near ≤0.3 %; the degenerate→MAD fallback fires identically; Vulkan resolves it on-device to keep zero mid-frame readbacks). 4K fit: OpenCL −6 ms, Vulkan +6 ms; hold frames untouched — every v0.4.0 video speed number stands. RAW pipelines completely unchanged.

Downloads

  • GALOSH_YUV_win64.zip — sRGB PNG in → denoised PNG out (drag & drop or CLI). Rebuilt with the envelope estimator; README now documents the measured strength guidance (-l 0.7 for light-to-moderate noise, default 1.0 for high-ISO).
  • GALOSH_RAW_win64.zip — DNG in → denoised DNG out (unchanged from v0.3.0).

SHA256:

f04cea42368bb9bd633b149ab5541b1ab3d373f59eabb54ed94ea55d53c85fb3  GALOSH_YUV_win64.zip
99730d51aae71bcb5d3e08f480a03f9874b31a39c4844d788149c177ba2a2573  GALOSH_RAW_win64.zip

See CHANGELOG.md for the complete list.