Background Extraction
Model and remove unwanted large-scale background variation while preserving faint astronomical signal that occupies the same image.
schema 1 · revision 2Recognize it
- Representative empty-sky regions differ systematically across the linear image.
- Light pollution or moonlight produces an additive slope, dome, or color-dependent wash.
- Residual vignetting produces a multiplicative center-to-edge brightness pattern after calibration.
Intended output
A still-linear image with a more spatially uniform sky and a saved or inspected background model that contains the unwanted gradient but not the target.
Required input state
- Linear, unstretched data with registration borders and low-coverage edges cropped away.
- Representative sky regions identified away from stars, target structure, and stacking artifacts.
- Before-operation corner/region statistics and the intended correction mode recorded.
What NOVA does
NOVA's ontology exposes seven selectable background-extraction variants; M66's recorded run used GraXpert AI subtraction (smoothing 0.50). The other six are real, code-confirmed alternatives NOVA can select but did not use for M66: GraXpert division (vignetting), PixInsight's native GradientCorrection, and three SASpro ADBE presets (default, cubic, polynomial-only). A 'none' baseline is also selectable. Do not present the M66-selected path as the only one NOVA runs.
Use when
- Empty-sky measurements show a coherent large-scale spatial trend.
- The modeled background can be separated from the target without absorbing real extended signal.
Skip when
- The apparent gradient is actually uncropped stacking overlap, calibration failure, or target structure filling the field.
- No representative sky region or defensible model can be established.
- A prior extraction already produced uniform sky and a clean background model.
Limits
- Background extraction cannot replace correct flat-field calibration; Siril specifically recommends a master flat for vignetting.
- A flatter background metric does not prove that faint galaxy halo or nebulosity survived.
- Subtraction is appropriate for additive gradients; division is reserved for genuinely multiplicative effects.
- Background neutralization is a later channel-balance decision, not another name for spatial gradient removal.
- Smoothing scales are not comparable across engines: GraXpert's smoothing runs 0.0 (aggressive) to 1.0 (gentle); PixInsight's native DynamicBackgroundExtraction smoothing is a different, larger-range control (NOVA's own DBE call uses 5.0). Copying a GraXpert number into DBE's field is not a translation.
Scientific and aesthetic notes
- The evidence artifact is the model as well as the corrected image: a plausible-looking result can still be overfit.
- Large nebulae and galaxy halos are the adversarial case because real signal can resemble a smooth background trend.
- M66 validates one GraXpert subtraction configuration, not a universal smoothing value or model choice.
- The project's own history is a warning here: an earlier version of this guidance pointed at PixInsight DynamicBackgroundExtraction/GradientCorrection as the reference path before Jeff's hands-on M66 verification established GraXpert as what NOVA actually runs. DBE and GradientCorrection are real, code-confirmed NOVA alternatives, not fabricated -- they were simply never M66's selected path, and an earlier draft implied they were without checking.
Evidence and measurements
Cross-tool matrix
| Tool | Equivalence | Expected result | Evidence |
|---|---|---|---|
| nova | Exact replay | The large-scale sky trend decreases while target structure is absent from the background model. | nova-background-source, nova-m66-run-1.24.7 |
| pixinsight | Same engine, adapted host | The M66-style additive gradient is reduced without the target appearing in the model. | m66-manual-verification |
| pixinsight | Exact replay | A multiplicative vignetting pattern flattens without a smooth subtraction-style residual. | nova-background-source |
| pixinsight | Functional alternative | A modeled background comparable in intent to GraXpert's, produced by PixInsight's own classical algorithm rather than GraXpert's AI model. | nova-background-source |
| pixinsight | Functional alternative | A modeled/corrected background using PixInsight's modern classical gradient-removal process. | nova-background-source |
| siril | Same engine, adapted host | Matches the PixInsight/NOVA GraXpert result closely; same engine, different host. | m66-manual-verification |
| siril | Functional alternative | Representative sky regions converge and the background model contains no target imprint. | siril-background-1.4.4 |
| saspro | Functional alternative | The spatial gradient decreases without subtracting extended target signal. Fastest of the three ADBE presets. | saspro-source-1.18.0, saspro-synthetic-2026-08-14 |
| saspro | Functional alternative | A more flexible background model that still excludes target structure; more prone to overfitting than the default preset. | saspro-source-1.18.0 |
| saspro | Functional alternative | A gentler, faster correction than the RBF-enabled presets; less able to follow irregular gradients. | saspro-source-1.18.0 |
NOVA Python pipeline 1.24.7
- Crop invalid borders before evaluating the gradient.
- Select subtraction for an additive gradient and division only with evidence of a multiplicative residual.
- Save or inspect the modeled background and compare representative sky statistics before accepting.
Controls and starting ranges
- M66 recorded path
- graxpert_sub -- GraXpert AI subtraction, smoothing 0.50, model 1.0.1
- other selectable variants
- graxpert_div, pi_gc (PixInsight GradientCorrection), adbe_default, adbe_cubic, adbe_poly_only, none
Mask behavior: Model protection is engine-specific; acceptance still requires model inspection and target-region comparison.
Failure modes
- The model reproduces the galaxy halo, nebula, or dense stellar structure.
- Uncropped borders bias the fit.
- A division correction is used to hide missing or incorrect flats.
- Presenting the M66-recorded variant as NOVA's only background-extraction behavior.
Recovery
- Revert to the unchanged linear input, correct the crop or calibration, and rerun with a simpler or better-protected model.
GraXpert AI (Subtraction) via PixInsight M66 validation environment; exact version not recorded
- Use the verified GraXpert route on the cropped linear image.
- Choose Subtraction for an additive gradient (light pollution, moonlight) and inspect the generated model before accepting.
- Record the installed GraXpert process/model version, smoothing, correction mode, and before/after statistics.
Controls and starting ranges
- M66 correction
- Subtraction
- M66 smoothing
- 0.50 (GraXpert's own 0.0-1.0 scale)
- generic range
- none established beyond M66; tune from the image and model
Mask behavior: Use host/process structure protection where available; exact mask behavior was not established by the M66 recording.
Failure modes
- Treating the M66 smoothing value as universal.
- Accepting a clean-looking image without inspecting the extracted background.
Recovery
- Undo, simplify or protect the model, and repeat from the original linear image.
GraXpert AI (Division) via PixInsight not independently confirmed in this repo
- Use only when a residual center-to-edge brightness pattern is genuinely multiplicative (vignetting), not an additive light-pollution slope.
- Same route as the Subtraction variant, with Division selected instead.
- Prefer fixing the flat-field calibration first; Division here is a correction, not a substitute for a missing or wrong master flat.
Controls and starting ranges
- correction
- Division; smoothing 0.5 is NOVA's code default, not M66-recorded
Mask behavior: Same as the Subtraction variant; not independently characterized.
Failure modes
- Using Division to mask a missing or incorrect master flat instead of fixing calibration.
Recovery
- Revert and re-derive/apply a correct master flat before repeating.
Native DynamicBackgroundExtraction (DBE) not independently confirmed in this repo
- A real, selectable NOVA alternative to GraXpert, not the M66-recorded path -- run it directly in PixInsight on the linear image if you specifically want this route.
- Set the correction mode (Subtraction or Division) to match the gradient type.
- Compare against a GraXpert result on the same image before treating DBE as equivalent.
Controls and starting ranges
- smoothing
- 5.0 (NOVA's code default) -- DBE's own scale, not comparable to GraXpert's 0.0-1.0
- useRollingPenaltyTerm
- enabled
- correction
- subtraction or division, matching the gradient type
Mask behavior: DBE supports manual sample-point placement in PixInsight's UI; not exercised through NOVA's automated call.
Failure modes
- Assuming DBE and GraXpert produce the same model because both are called 'background extraction'.
Recovery
- Undo and fall back to the M66-verified GraXpert route.
Native GradientCorrection not independently confirmed in this repo
- A real, selectable NOVA alternative to GraXpert, not the M66-recorded path.
- Run PixInsight's GradientCorrection process on the linear image with its own default settings -- NOVA's call exposes no tunable parameters for this process.
- Compare against a GraXpert result on the same image before treating GradientCorrection as equivalent.
Controls and starting ranges
- parameters
- none exposed by NOVA; PixInsight's own process defaults apply
Mask behavior: Not exposed through NOVA's automated call.
Failure modes
- Assuming this and GraXpert are interchangeable because both target the same symptom.
Recovery
- Undo and fall back to the M66-verified GraXpert route.
GraXpert AI via Siril's Python integration Siril interface v2.1.0, GraXpert model 1.0.1, verified in Siril 1.4.4
- Open Scripts > Python Scripts > Processing > GraXpert AI on the cropped linear image.
- Use Subtraction for the demonstrated additive gradient; leave Keep Background off.
- Record the GraXpert interface/model version shown, since it is not bundled with stock Siril.
Controls and starting ranges
- M66 verified
- Background Extraction operation, model 1.0.1, smoothing 0.50, Subtraction, Keep Background off, batch size 4, GPU acceleration enabled when available
Mask behavior: Model-driven, same as the PixInsight GraXpert route; not independently characterized beyond that.
Failure modes
- Treating this as a stock Siril feature -- it is a separate Python integration.
Recovery
- Undo and re-run with adjusted smoothing, or fall back to native Background Extraction.
Native Background Extraction (RBF/polynomial) 1.4.4
- Open Image Processing > Background Extraction on the linear image.
- Set samples per line to about 20 and raise Tolerance so samples land off nebulosity and stars.
- Use RBF for busy, irregular gradients; use a low-degree polynomial (degree 4 is a ceiling, not a starting point) only for a simple, smooth trend.
- Choose Subtraction for additive gradients; inspect the generated model before accepting.
Controls and starting ranges
- RBF smoothing
- 0.50 vendor starting point; adjust from the model
- polynomial degree
- low degree for a simple trend; 4 is a documented maximum, not a default
- correction
- Subtraction for light pollution; Division reserved for genuine vignetting
Mask behavior: Manual sample placement can exclude target regions.
Failure modes
- Samples land on nebulosity or the galaxy halo.
- A high polynomial degree overcorrects the image.
- Division is used for vignetting that should have been corrected by a master flat.
Recovery
- Restore the original image, revise samples/model complexity, or repair calibration before retrying.
ADBE default (polynomial degree 2 + RBF) 1.18.0 source-inspected; ADBE execution tested on a synthetic linear array
- Run ADBE on the cropped linear image with the default preset.
- Inspect the background model and compare representative sky regions and target structure.
- Record which preset was used because this is a functional alternative, not a replay of GraXpert AI.
Controls and starting ranges
- degree
- 2 (quadratic) -- typical for ordinary SeeStar gradients
- num_samples
- 100 auto-placed background sample points
- use_rbf
- true -- RBF refinement after the polynomial stage
- rbf_smooth
- 0.1 (0.01 very tight to 1.0 very smooth)
Mask behavior: Tool-specific protection was not independently characterized; rely on model and difference inspection.
Failure modes
- Assuming ADBE and GraXpert produce equivalent models because both flatten backgrounds.
Recovery
- Revert to the original linear input and try adbe_poly_only for a gentler pass, or use the verified GraXpert path.
ADBE cubic (polynomial degree 3 + RBF) 1.18.0 source-inspected
- Use in place of the default preset only when the gradient is visibly more complex than a simple quadratic trend -- a busier or multi-directional gradient.
- Inspect the background model for overfitting; a higher-degree polynomial can start absorbing real structure.
- Compare against the default preset's model on the same image before preferring this one.
Controls and starting ranges
- degree
- 3 (cubic) -- more flexible for complex gradients
- num_samples
- 120
- use_rbf
- true
- rbf_smooth
- 0.15
Mask behavior: Not independently characterized.
Failure modes
- The higher-degree polynomial fits real extended structure as if it were background.
Recovery
- Revert to the linear input and use the default or poly-only preset instead.
ADBE polynomial-only (degree 2, no RBF) 1.18.0 source-inspected
- Use for a faster, gentler pass when the gradient is simple and RBF refinement risks pulling in faint extended signal.
- Inspect the background model the same way as the other presets.
Controls and starting ranges
- degree
- 2
- num_samples
- 100
- use_rbf
- false -- no RBF refinement stage
- rbf_smooth
- 0.1 (unused with RBF disabled)
Mask behavior: Not independently characterized.
Failure modes
- Using this preset on a genuinely irregular gradient that needs RBF's local flexibility.
Recovery
- Revert and switch to the default or cubic preset for a more flexible model.
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 background-extraction implementations (GraXpert, ADBE, native PixInsight DBE/GradientCorrection) and ontology
nas_server/seti_astro.py:934 (GraXpert background_extract), nas_server/seti_astro.py:457 (ADBE); nas_server/pixinsight.py:188-190 (dbe/dbe_correction/gradient_correction params); nas_server/pi_postprocess.js:361-395 (DynamicBackgroundExtraction and GradientCorrection PJSR calls); nas_server/processing_ontology.json:354 (experiment_variants: graxpert_sub, graxpert_div, pi_gc, adbe_default, adbe_cubic, adbe_poly_only, none)— NOVA source-confirmed - M66 workflow 1.24.7 execution record
critiques/20260802_045251_seestar_galaxy.json— NOVA execution record - Siril 1.4.4 background extraction documentation — Vendor-documented
- Siril 1.4.4 GraXpert interface 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 - SASpro 1.18.0 synthetic-array operation checks
2026-08-14 local validation: pedestal, cosmetic correction, and ADBE— Tool-tested
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.

