mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-24 18:18:12 -06:00
A global 3x3 matrix can't follow the camera's hue-dependent rendering: on an ILCE-7M4 photo of a lime shirt among grey rocks the best matrix rendered the shirt olive (16 deg hue error), since the few saturated pixels carry little weight and a matrix fitted to them breaks the rest. After the matrix, fit a 72x5 hue/saturation table (DNG ProfileHueSatMap layout, linear ProPhoto) to the residual hue shifts and saturation ratios: kernel-weighted per node, shrunk to identity where samples are sparse, identity at saturation 0. It preserves luminance (the tone curve owns it) and is kept only when it lowers the held-out error. 28 local ILCE-7M4 ARWs: mean dE vs camera JPEG 4.74 -> 4.27, none worse overall; the shirt's hue error drops to 6-8 deg. Render cache v9. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>