ZeSeestarStacker – Technical Overview - tinystork/zeseestarstacker GitHub Wiki
ZeSeestarStacker is a fast and scalable image stacking application for astrophotography, specifically designed for FITS images from the Seestar S50 smart telescope. It aligns, stacks, and enhances thousands of raw frames in a memory-efficient and calibration-free workflow. This section is aimed at power users and contributors who wish to understand the internal logic, assumptions, and tradeoffs made by the software.
ZeSeestarStacker processes data in the following sequence:
-
Image Loading
-
Automatic detection of FITS structure and Bayer pattern (e.g., GRBG, RGGB).
-
Float32 normalization (0–1 range) and channel alignment for RGB.
-
-
Defect Correction
-
Hot pixel detection and correction (CPU or CUDA accelerated).
-
Optional filtering of blurry or low-SNR frames.
-
Basic satellite trail detection (in development).
-
-
Batch-Based Alignment
-
Intelligent batch sizing based on available RAM (estimated with
psutil
). -
ORB or phase-correlation alignment depending on SNR.
-
Reference frame selection is either manual or auto-optimized.
-
-
Batch Stacking
-
Kappa-sigma or winsorized-sigma rejection.
-
Weighting by SNR and star count (optional).
-
Stack results stored in temporary float32 arrays.
-
-
Global Fusion via SUM/WHT
-
SUM: cumulative sum of all normalized pixel values.
-
WHT: total weight map (image count or weighted sum).
-
Both stored using numpy
memmap
for infinite scalability.
-
-
Post-Processing
-
Chromatic balance, CLAHE, SCNR (green noise suppression), background neutralization.
-
Final drizzle resampling (optional, x2/x3/x4 with various kernels).
-
Preview generation via downsampled, normalized stack.
-
ZeSeestarStacker is designed to scale — and with scale come minor compromises:
-
No dark/flat calibration: Fixed-pattern noise is statistically suppressed, not explicitly removed.
-
Intra-batch normalization only: Inter-batch differences are not equalized, which may cause negligible gradients.
-
Float32 precision: Ensures speed and memory efficiency; signal loss < 0.01% even for 100,000 images.
-
No full per-frame rejection: Badly aligned frames are filtered at batch level but not globally reviewed.
Parameter | Value |
---|---|
Exposure per frame | 10 seconds |
Number of frames | 20,000 |
Total exposure time | ~55 hours |
Per-frame average SNR | ~5 |
Final stacked SNR (theoretical) | ~700 |
Processing time (USB HDD, 16 GB RAM) | 8–12 hours |
Processing time (SSD, 64 GB RAM) | 5–7 hours |
Estimated signal loss | < 1% (overall) |
-
You want to process tens of thousands of frames from your Seestar S50.
-
You don’t have (or want to use) darks, flats, or bias frames.
-
You prefer automation, batch processing, and memory efficiency over pixel-perfect calibration.
-
You want fast previews and integrated stretch/histogram tools to evaluate your data live.
ZeSeestarStacker is not a replacement for PixInsight or Siril in scientific workflows — but for massive uncalibrated datasets (like those from Seestar), it offers an unparalleled combination of reliability, automation, and quality.
Advanced users can dig into the codebase and even adapt the stacking logic (e.g., normalization, masking, drizzle integration) for their own needs. And thanks to the GUI, even beginners can start stacking thousands of images in just a few clicks.