Back to Handbook

Four desktop stackers, five Seestar S50 mosaics

What changes when the same frames from five walking-mosaic nights go into four desktop stackers?

With mosaics, the settings mattered as much as the program. The biggest controlled win was one setting in NOVA’s own stacker: a 25 px feather with overlap normalisation. These are five nights and these versions, so it’s evidence for these datasets, not a law.

Version-specific comparison

Siril 1.4.3 (NOVA max-framing scripts) · WBPP 3.1.2 (PixInsight 1.9.5) · StackingWizard beta 2026-10-07 · SyQon 1.1.4 CPU · NOVA workflow 2.15.0

Engines and settings

This is a version-specific comparison. Siril used NOVA’s production max-framing scripts: seestar_register_maxframing.ssf and seestar_stack_only_maxframing.ssf. SyQon Fusion Stack ran CPU-only.

The default runs describe the configurations tested. A full-mosaic reference and different registration settings changed WBPP’s result; these results do not describe the limits or design intent of either product.

Engines and settings
EngineVersion / configuration
Siril1.4.3; NOVA max-framing scripts
PixInsight WBPPWBPP 3.1.2; PixInsight 1.9.5
StackingWizardbeta build 2026-10-07
SyQon Fusion Stack1.1.4; CPU-only
NOVAworkflow 2.15.0; overlap normalisation + 25 px feather default

Evidence section: Durability; C3, C7

The five walking-mosaic nights

All captures used a Seestar S50. Each night was a walking / multi-pointing session. After the quality checks, the exact same Round B frames went into every engine (C1).

M 42 had 90.9° of field rotation. This was a feature of that test, not a proven cause of a registration failure. Its Round B rerun excluded 4 wrong-target subs. M 31’s night total includes 26 manual exclusions.

The five walking-mosaic nights
TargetNight (UTC)FilterSubp95 pointing spreadNight totalEccentricity gate removedProduction cull removedRound B same frames
NGC 70002026-05-23LP30 s78.3′35315211190
IC 18482025-09-30LP30 s79.4′56520242321
M 422024-11-08LP10 s57.0′840231270 (+39 unsolved)296
Rosette (NGC 2244)2024-11-01LP10 s71.2′1,12317857888
M 312024-11-09IRCUT10 s68.6′1,144 (26 manual exclusions)133140 (+1 unsolved)844

Evidence section: Data and identity: the five mosaic nights; C1

How the outputs were compared

Every master was plate-solved and reprojected to one grid. Pair comparisons use only the area both stacks cover, with flux matched by the scorer’s flux_scale.

Seams are the median absolute step in σ at sub-count boundaries. Noise is signal-normalised band-limited noise; 2–4 px is the fine-scale band. This is not a depth metric: star widths must be comparable before a noise difference is read as depth.

Evidence section: Scoring method

Which configurations built the full mosaic?

Siril with maximum framing built a full mosaic on all five nights (C2). StackingWizard built four of the five. On the field-rotating M 42 night it kept 55 of 296 subs, covering 47% of the union (C4–C5).

StackingWizard’s stars were wider on every night: +0.12 to +0.22 px on the non-rotated mosaics, and +0.09 px on M 42 (C6).

With the settings used, default WBPP and SyQon built one panel: 12–13% of the union canvas on the two nights measured, NGC 7000 and the Rosette. These results describe those configurations, not what the programs can do, and are not generalised to the other nights (C3).

Evidence section: C2–C6

Tuned WBPP changed the result

The tuned run used maxStars 1500, local normalisation off, and a Siril union-canvas reference. It built the North America and Soul mosaics with Siril-level stars, lower fine-band noise, and somewhat stronger seams (C7).

Registration failed on rotated M 42 (84 of 296). M 31 registered 844 of 844 frames and the Rosette 836 of 888, but both ran out of memory during integration on this 47 GiB VM (C8–C9).

On this machine Siril completed all five mosaics. The tuned PixInsight run ran out of memory integrating Andromeda and the Rosette. We have not profiled how either program uses memory inside; no causal memory mechanism is claimed (C10).

Tuned WBPP changed the result
TargetRegisteredCoverage of union2–4 px noise vs SirilSeams: WBPP / Siril
NGC 70001820.993−10.8%0.246 / 0.157σ
IC 18483170.9997−16.3%0.218 / 0.183σ

Evidence section: C7–C10

The controlled win: a narrower feather

Where panels overlap, Siril blends their edges over a band of pixels: the feather. Keeping overlap normalisation on and narrowing NOVA’s previous 100 px feather to 25 px reduced fine-band noise on all five nights, using the same frames (C11).

Panel offsets versus production were only 0.03–0.06σ across the five nights. This is the 5–95% spread of the σ32 px large-scale difference from production, in sky-noise units. The pinned record supplies this range, not individual per-night offsets (C12).

Small offsets do not prove there are no new seams. In close-ups centred on the strongest sub-coverage boundary in empty sky, chosen from footprints rather than by eye, we couldn’t see one at the chosen stretch (C12).

The rejected control used 25 px without overlap normalisation: noise was no better and panel offsets reached 0.5–1.0σ. Its M 42 noise measurement is unreliable and is omitted (C14).

Overlap normalisation with a 25 px feather is now NOVA’s default; the 100 px option remains available (C15).

The controlled win: a narrower feather
Night / target2–4 px noise change vs 100 pxPanel offsets vs production
NGC 7000−12.3%Five-night range 0.03–0.06σ
IC 1848−15.3%Five-night range 0.03–0.06σ
M 42−19.5%Five-night range 0.03–0.06σ
Rosette−15.6%Five-night range 0.03–0.06σ
M 31−17.6%Five-night range 0.03–0.06σ

Evidence section: C11–C15

NGC 7000: the Pelican failure and the clean restack

Run #304, with the Pelican, showed hard-edged rectangular patches and a band of extra fine-scale noise along the Pelican side (C23).

Run #305, with the same settings but without the Pelican, improved on #300 on all 70 aligned tiles over the common area: median 2–4 px noise −19.4%, with no patches (C24). Two things changed at once: the 25 px feather with overlap normalisation, and 276 extra subs from 0% culling. This pair cannot tell us which one did it. The five same-frame tests are the controlled evidence for the blend (C25; comparability caveat).

The tile comparison measured noise in each stack’s own pixels; an interpolated comparison overstated the fine-band gain and was discarded. Tiles were aligned by phase correlation after the plate solutions, with flux scaling from aligned signal pixels.

We are still working out why the Pelican night breaks the mosaic (#1235). Siril picked a Pelican sub as reference, but a smaller subset test using that reference did not reproduce the patches. The cause remains open (C26, C32).

Evidence section: C23–C26, C32; Comparability caveat

Seestar on-device stacking: a separate comparison

As a separate on-device comparison, the same Round B frames were copied back to the S50, with their hashes verified. It built all five mosaics, covering 88–94% of the area Siril covered. On every night its stars were a little wider, by +0.15 to +0.21 px (C27–C28).

Noise is not compared. The scope saves a 16-bit file; where its signal is faint, quantisation dominates the measurement (C29). There is no on-device noise or overall quality ranking here, and no claim about its internal processing.

Evidence section: C27–C29

What we cannot claim

  • Five nights and these versions support findings about these datasets, not a general winner.
  • No internal memory mechanism was measured; completion and out-of-memory failures are observed outcomes only (C10).
  • M 42’s rotation is a feature of that test, not a proven cause of failure.
  • The #300→#305 gain cannot be split between the 25 px feather with overlap normalisation and 276 extra subs from 0% culling (C25). The added Pelican panel also confounds #300→#304, even over their common area.
  • No S50 noise ranking: the 16-bit saved file makes that comparison unreliable (C29).
  • Default WBPP and SyQon coverage results describe these configurations on the two measured nights, not general product capability (C3).

Reproduce it

  • Use the scripts/stackexp/ harness on main, including score.py and mosaic_metrics.py for common-grid, common-coverage scoring.
  • The companion figure builder is scripts/episode/build_mosaics_assets.py on the episode branch; use it once merged. Figures are a separate follow-up and are not required to read these results.
  • Request the mosaic experiment archive from Jeff Henry: per-night inventories, manifests, score JSONs, chain logs and derived feather / seam comparisons. The native Seestar mosaic archive holds the separate on-device comparison. These are descriptive archive references, not public download links.
  • The restack archive includes native-pixel tile comparisons for the Pelican run and the clean run. Reproduce with each stack’s own pixels; do not measure fine-band noise after interpolation.
  • Input data and licensed engines are not distributed by this page.

Pinned evidence record: docs/episodes/mosaics_evidence.md at 25a4cd9cf6dd69526862fc8420ca7953c71e9dff · content revision 1. Evidence and archive access are by request.