Color Calibration
Derive reproducible channel scaling from catalog spectra, the imaging system response, and an explicit white reference instead of balancing color by eye.
schema 1 · revision 2Recognize it
- The linear image retains the camera/filter response rather than an intentional color reference.
- Star colors or background channel ratios show a broad systematic cast after gradient removal.
Intended output
A linear, astrometrically valid image with recorded calibration inputs, catalog matches, fit evidence, and channel coefficients that downstream linked operations preserve.
Required input state
- Linear, unstretched color data after accepted background extraction.
- A correct plate solution whose field center, scale, and orientation match the image.
- Known OSC/mono state, sensor response, filter or passband information, and chosen white reference.
What NOVA does
As of a 2026-09-02 policy change, NOVA attempts SSSC first for both broadband and LP/dual-band data, not PixInsight SPCC. A 17-target same-methodology comparison found SSSC tied PixInsight in every case where SSSC reached at least Stage 1 calibration (13 of 17 targets, zero exceptions); every real divergence happened at the weaker Stage 2, and even there SSSC's worst case was about 5% behind while its best cases were 3-8x better. PixInsight is therefore consulted as a second opinion only when SSSC's own solve lands at Stage 2 -- SPCC for broadband, PixInsight ColorCalibration for LP/dual-band (SPCC's broadband white reference is deliberately never applied there). The trigger is SSSC's solve stage, not a raw fit-residual threshold, because stage reflects how many usable calibration stars were available, which is what the evidence showed actually predicts reliability -- a legitimately-agreeing target can carry a higher residual than some Stage-2 disagreements. A sanity gate then checks the signal region's G/R ratio before and after calibration and discards a solve that moved sharply away from neutral, regardless of filter type; that check exists because a plausible-looking fit can still pair detected stars with the wrong catalog entries in dense fields.
Use when
- The linear image has trustworthy astrometry and documented sensor/filter response.
- The chosen calibration mode matches broadband or narrowband acquisition.
Skip when
- The image is stretched, monochrome without an intended color composition, or lacks valid astrometry.
- Required sensor/filter/passband information is unknown.
- An aesthetic false-color palette is the goal and physical line intensity is not the intended balance.
Limits
- A process-complete message does not prove that the WCS, sensor, filter, white reference, or fit was valid.
- Broadband SPCC and narrowband/dual-band calibration are not interchangeable prescriptions.
- Physically calibrated narrowband intensities do not automatically produce an aesthetic SHO/Hubble palette.
- Background neutralization is not a substitute for a valid spectrophotometric solve.
- NOVA's own choice not to apply broadband SPCC to LP/dual-band data is a project engineering decision about its white reference, not a claim that filter-aware SPCC implementations in general cannot support narrowband or dual-narrowband response models -- modern SPCC versions can.
- That the sanity gate did not reject a solve is evidence the result was not caught by that specific check, not evidence the calibration is physically correct; not rejected is not validated.
- The Experiment Mode `cc_sssc` candidate calls SSSC with the LP flag off and without the native LP curve, so it does not exercise the LP/dual-band path the production policy actually uses for LP targets; a recorded `cc_sssc` result is evidence about the broadband-only path only.
- SSSC's LP throughput curve is a real, hash-verified SeeStar S50 transmission curve, not a commercial-filter proxy -- but it remains a model of the filter's response, and any measured system-response solution built on it inherits that model's uncertainty.
Scientific and aesthetic notes
- Siril SPCC compares measured image flux ratios with Gaia DR3 spectra folded through the selected sensor and filters.
- White reference is an explicit rendering choice inside a physically grounded calibration; Average Spiral Galaxy is Siril's broad default, not a universal truth.
- A linked downstream stretch preserves established channel relationships; unlinked stretching can overwrite them.
Evidence and measurements
Cross-tool matrix
| Tool | Equivalence | Expected result | Evidence |
|---|---|---|---|
| nova | Exact replay | The selected route completes with valid fit evidence and produces channel balance appropriate to the acquisition mode. | nova-color-source, nova-m66-run-1.24.7 |
| pixinsight | Same engine, adapted host | The fit is defensible and star colors show a plausible range without a global cast. | m66-manual-verification |
| siril | Algorithmically equivalent | Robust catalog-to-image fits support the applied coefficients and downstream linked operations preserve them. | siril-spcc-1.4.4, m66-manual-verification |
| saspro | Functional alternative | A documented system-response solution calibrates the linear image without being mislabeled as SPCC. | saspro-source-1.18.0, nova-color-source |
NOVA Python pipeline 1.24.7
- Verify or repair WCS and record acquisition/filter state before calibration runs.
- Let SSSC attempt first for both broadband and LP/dual-band data; do not treat PixInsight SPCC as the default route.
- Record SSSC's solve stage, whether a PixInsight second opinion was consulted, the sanity-gate's before/after G/R values, and any fallback.
Controls and starting ranges
- default route
- SSSC first, both broadband and LP/dual-band
- PixInsight second opinion
- consulted only when SSSC's solve lands at Stage 2 -- SPCC for broadband, PixInsight ColorCalibration for LP/dual-band
- sanity gate
- reject when the signal-region G/R ratio moves sharply away from neutral after calibration, applied regardless of filter type
Mask behavior: Calibration is global; background/white reference selection and catalog-star rejection are engine-specific safeguards.
Failure modes
- Stale or malformed WCS allows a misleading run or forces fallback.
- Broadband SPCC's white reference is applied to LP/dual-band data, which the current policy deliberately avoids.
- A fallback or second-opinion result is described as if SSSC's own solve had succeeded outright.
Recovery
- Restore the linear input, repair astrometry/configuration, and rerun while preserving the failed-route record.
PixInsight SPCC M66 validation environment; exact version not recorded
- Confirm the image is linear and its astrometric solution is correct.
- Select the SeeStar S50 sensor, actual filter/LP mode, and intended white reference.
- Apply SPCC, then record catalog, matched-star/fit evidence, coefficients, and whether any fallback occurred.
Controls and starting ranges
- white reference
- Average Spiral Galaxy for the verified M66 broadband run
- filter mode
- match acquisition; do not infer broadband from image appearance
- M66 LP mode
- disabled
Mask behavior: Global calibration; use the process's source-detection and fit-rejection controls rather than a decorative image mask.
Failure modes
- Wrong WCS or response profile produces invalid matching or misleading balance.
- Fallback is not disclosed.
Recovery
- Undo, correct WCS/sensor/filter/reference inputs, and repeat from the linear post-background image.
Siril SPCC 1.4.4
- Run only on linear data and plate-solve with correct center, scale, and orientation first.
- Select OSC mode, the closest valid SeeStar sensor/filter response, broadband or narrowband mode, and an explicit white reference.
- Inspect and record the R/G and B/G fit plots, matched-star count, and resulting coefficients.
Controls and starting ranges
- catalog
- Gaia DR3; local catalog supported in Siril 1.4+
- M66 white reference
- Average Spiral Galaxy
- M66 result
- 33 stars; R 0.837, G 0.759, B 1.000
Mask behavior: SPCC uses detected/catalog-matched stars and robust fitting; it is not ordinarily applied through an image mask.
Failure modes
- The remote Gaia service is unavailable and no local catalog is configured.
- Existing but inaccurate WCS is trusted without checking image scale and field.
- SHO data are expected to become an aesthetic Hubble palette through physical SPCC alone.
Recovery
- Use the local Gaia catalog or repair astrometry/configuration; for aesthetic SHO balance, use a documented manual palette workflow.
Seti Astro Suite Pro SSSC 1.18.0 source-inspected
- Use SSSC on a linear, plate-solved color image when the field supplies enough spectrum-bearing calibration stars.
- Provide valid astrometry and record Gaia-XP matches, solved response, coefficients, and fallback behavior.
- Label SSSC as a related physical calibration approach, not the identically implemented SPCC process -- even though it is now NOVA's first-attempted route for both broadband and LP/dual-band data.
Controls and starting ranges
- catalog
- Gaia-XP spectra
- NOVA integration minimum
- 20 enriched spectrum-bearing stars; otherwise explicit fallback
- SASpro solution stages
- scalar below 50 stars; color model at 50+; full response at 200+ with adequate color span
Mask behavior: Global calibration based on matched stellar spectra; no ordinary image-mask claim is established.
Failure modes
- Too few matched spectra produce fallback or an unstable solution.
- SSSC and SPCC are described as exact equivalents.
Recovery
- Repair astrometry, use a star-richer field where appropriate, or fall back explicitly to a validated SPCC route.
Validation status
Not yet Jeff-validated. Use this as sourced guidance, not a certification.
Sources
- M66 manual recipe verification feedback
M66_Manual_Recipe_Verification_Feedback.md— Jeff validated - NOVA SPCC/SSSC selection, fallback logic, and ontology
nas_server/seti_astro.py:4150; nas_server/processing_ontology.json:492— NOVA source-confirmed - M66 workflow 1.24.7 execution record
critiques/20260802_045251_seestar_galaxy.json— NOVA execution record - Siril 1.4.4 spectrophotometric color calibration documentation — Vendor-documented
- Installed Seti Astro Suite Pro 1.18.0 processing source
saspro/pedestal.py; saspro/numba_utils.py; saspro/stacking_suite.py; saspro/abe.py; saspro/sssc.py— Artifact-confirmed
Related evidence
The M66 recipe and Jeff-validation ledger will link here when their static exports are available. Until then, this article remains explicitly unvalidated.

