Processing log · September 2026
The Dark Shark (LDN 1235)
How the final was made

Linear
- Per-night stacking in Siril, each night on its own calibration, then merged by inverse variance (
tools/combine_nights.py). - Crop to true common coverage, 6248×4176 → 6158×4082 (offset dy 45, dx 37), Gaia plate solution attached.
- SPFC — Antlia V-Pro R/G/B, IMX455 QE, Generic UV-IR-CUT for luminance.
- MGC at gradient scale 1536, not the 768 inherited from Wolf's Cave. Measured over 24 trials: at 768 the ~2048 px band loses 10% of its signal and on a dark nebula that band is the dust; at 1536 it loses 2%. Scale is the only MGC control that matters — the scale factor k, including per-channel values, changed nothing.
- SPCC — limit magnitude 15 with Automatic OFF, min detection SNR 25.
- Star cores repaired from the 1 s shorts (
tools/pm_star_cores.py), k per channel R 52.9 / G 38.1 / B 57.9 / L 100.5, then rescaled so nothing clips. - Gradient polish —
tools/sky_flatten.pydegree 3, sky found by iterative sigma clipping. Luminance 1.79% → 0.92%, colour 1.21/1.61/2.06% → 1.09/1.09/1.22%, 92.7% of object contrast kept. This is what makes the large MGC scale free. - BlurX (correct-only off) then MLDenoise 0.90 colour / 0.60 luminance.
Stretch
- GHS on each: SP at the measured sky, b 2, D 7; black point; then HistogramTransformation to land the sky exactly on 0.15. A GHS result is only reproducible from the same file with the same settings — never carry a midtone between sessions.
- StarX on BOTH the colour and the luminance. Both sides of a CIELab combine must be starless; the stars go back at the end and the colour star layer already carries their luminance.
- CIELab combine, NoiseX (colour + frequency separation, scale 2), four curves on L and S, BlurX non-stellar 0.25 / stars 0.00.
Colour — nothing subtracted
tools/hue_boost.py— amber, centre 30°, width 30, gain 3.5; then blue, centre 220°, width 45, gain 4.0 withprotect=0.999. A raised-cosine hue window with a hard guard that forces the green band to zero weight, so green and magenta finish exactly where the data left them. The blue pass is headroom-limited per pixel, which kept its colour while dropping blown cores from 13,345 to 417.tools/local_contrast.py— radius 600, strength 1.0, luminance only, channels rescaled equally so hue and saturation survive.- Stars screened back:
1 − (1−starless)(1−stars).
No SCNR and no Selective Colour. SCNR was tried and dropped: it does not remove a tint, it converts green into magenta (green 0.39% → 0.14% of the dust, magenta 0.04% → 0.34%). My rule — scale a whole effect back rather than subtract a component.
What the audit says was lost
Measured with tools/process_audit.py, stretch against final: every hue band gained, but unevenly — yellow +1616%, orange +972%, against cyan +166% and azure +149%. The reflection-nebula colours were outvoted rather than removed. 4,938 pixels (0.0196% of the frame) clipped to black, from the contrast pass having a ceiling guard but no floor guard. Star core colour rose from 0.002 to 0.037. Detail up at every scale.
Known and accepted: chroma mottle at 64 px, green 0.37% and magenta 0.10% of the lit dust. Six approaches failed to remove it; the cure is more blue integration — b had 1.90 h against r's 3.02 h.
The image → The Dark Shark — full size, with the story of the object