ZeSeestarStacker – Technical Overview - tinystork/zeseestarstacker GitHub Wiki

ZeSeestarStacker – Technical Overview

Introduction

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.

Processing Pipeline

ZeSeestarStacker processes data in the following sequence:

  1. Image Loading

    • Automatic detection of FITS structure and Bayer pattern (e.g., GRBG, RGGB).

    • Float32 normalization (0–1 range) and channel alignment for RGB.

  2. 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).

  3. 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.

  4. Batch Stacking

    • Kappa-sigma or winsorized-sigma rejection.

    • Weighting by SNR and star count (optional).

    • Stack results stored in temporary float32 arrays.

  5. 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.

  6. 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.

Approximations and Limitations

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.

Quantitative Example – 20,000 FITS Frames

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)

When and Why to Use ZeSeestarStacker

  • 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.

Conclusion

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.

⚠️ **GitHub.com Fallback** ⚠️