Lunar Image Processing Workflow

When I first purchased my SeeStar S30 Pro, I was primarily interested in deep sky objects — galaxies, nebulae and star clusters. It wasn’t until I pointed it at the Moon one evening that I realised just how capable this little telescope was for lunar imaging. The detail visible even in a single frame was impressive, but it didn’t take long before I started wondering whether I could push the results further.

That curiosity led me to video stacking — a technique where instead of taking a single photograph, you record a short video of the Moon and extract the best frames from it. The Earth’s atmosphere is never truly still, and even on a clear night, turbulence causes the image to constantly shift and blur. By capturing hundreds of frames in a short burst, you catch brief moments of atmospheric stillness that a single exposure would simply miss. Stack those sharp frames together and you end up with a final image that is cleaner, sharper and more detailed than anything a single shot could produce.

The workflow below is what I finally arrived at after watching multiple instructional YouTube videos and wresting back and forth with Google and Claude Ai to optimise the process. The intention is to get the best possible result from the SeeStar S30 Pro’s 30mm aperture by taking a raw video and processing it though a chain of specialist tools to arrive at a final image.

Capture, Stacking & Sharpening

The goal here is to go from raw video footage to a single, noise-free, well-aligned stacked image. Each tool in the chain handles one specific job, and the output of each feeds directly into the next.

Capture approximately 90 seconds of video with the SeeStar S30 Pro

PIPP

PIPP (Planetary Imaging PreProcessing) is a free tool for preparing planetary and lunar video. It can crop, quality-filter, debayer and convert video files, but in this workflow it has two jobs: converting the SeeStar S30 Pro’s MP4 colour capture to an AVI that AutoStakkert! 4 can read, and, less often, joining multiple RAW AVI files into one. Frame selection, debayering and stacking are all left to AutoStakkert! 4.

Job 1: Converting the MP4 colour capture to AVI

The colour layer comes from the SeeStar’s MP4 video. AutoStakkert! 4 can’t load a compressed MP4 directly (it only reads compressed video when an FFmpeg executable is available to it), so PIPP converts it to an AVI first. The MP4 is already debayered colour video, so there is no Bayer pattern to protect and nothing to debayer. The conversion changes the container only. It doesn’t add detail and it doesn’t lose any.

Settings

  1. Source Files tab: load the MP4 file.
  2. Input Options: untick both Debayer Raw image files and Debayer Monochrome Frames. The MP4 is already in colour, so there is nothing to debayer.
  3. Processing Options: leave Enable Cropping unticked, unless the Moon fills only a small part of the frame. A large background relative to the lunar disc can make PIPP crash, and cropping avoids this. Cropping is safe here because there is no Bayer grid to shift.
  4. Output Options: leave at the defaults (AVI).
  5. Do Processing: click Start Processing.

Load the resulting AVI into AutoStakkert! 4 and stack it to a colour TIFF. No drizzle and no LuckyStackWorker are needed, because this layer only supplies colour.

Job 2 (less common): Joining multiple RAW AVI files

If a single RAW AVI has been captured for the luminosity layer, skip this job and load the file straight into AutoStakkert! 4. PIPP is only needed when several RAW captures (around 90 seconds each) have to be joined and stacked as one set.

For these files, PIPP must not debayer or crop. The SeeStar’s RAW AVI contains undebayered Bayer data. The pattern is GBRG, embedded in the file metadata and detected automatically by AutoStakkert! (reported as “bayer gbrg (ai)”). If PIPP crops the frames first, the crop shifts the Bayer pixel grid. The red, green and blue channels then come out almost identical, and no amount of later saturation will bring back the Moon’s mineral colour. Letting AutoStakkert! debayer the full, uncropped frame preserves genuine colour separation. This rule applies to the RAW files only.

Settings

  1. Source Files tab: confirm that all the files have loaded, then select Join Mode to combine them into a single video.
  2. Input Options: untick both Debayer Raw image files and Debayer Monochrome Frames. AutoStakkert! does the debayering later.
  3. Processing Options: untick Enable Cropping, so the Bayer grid stays intact.
  4. Output Options: set the Output Format to SER.
  5. Do Processing: click Start Processing.

Processing normally takes under a minute for a joined file. The Test Options button can be used while changing settings to check for problems.

Once PIPP has exported the .ser file, load it into AutoStakkert! 4. On opening, the Bayer pattern should be detected as gbrg. If it is not, the file has been altered upstream.

AutoStakkert! 4

AutoStakkert! 4 (AS!4) is a free application developed by Emil Kraaikamp, and is one of the most widely used tools for stacking planetary, lunar, and solar images. It is available for Windows and can be downloaded from www.autostakkert.com.

The core idea behind stacking is straightforward: when filming the Moon through a telescope, atmospheric turbulence causes the image to constantly blur and distort. By capturing a long video — typically thousands of frames — you end up with a mixture of sharp and blurry frames. AS!4 analyses every frame, ranks them by sharpness, and then aligns and combines only the best ones. The result is a single master image with significantly better detail and a much higher signal-to-noise ratio than any individual frame could provide.

The workflow follows three steps: Open, Analyse, and Stack.

1) Open

Click the Open button and load your video file. AS!4 supports .ser files (the preferred format for planetary imaging) as well as common video formats such as .avi.

Before moving to the next step, configure the following settings on the left panel:

  • Stabilisation mode: For lunar imaging always select Surface. This tells AS!4 to track the texture of the lunar surface rather than a single bright point, which is how it would track a planet. Using the wrong mode here will produce a blurry stack.
  • Noise Robust: Set this to 2 for typical high-quality lunar video. Higher values can help with very noisy data but may reduce sharpness.

2) Analyse

Click 2) Analyse to begin frame analysis. AS!4 will scan every frame in the video and assign each one a quality score based on sharpness and atmospheric conditions. This may take a minute or two depending on the size of your video file.

Once analysis is complete, you will see a quality graph appear. The x-axis represents each frame in the video and the y-axis shows its quality score. Ideally you want to see a graph with clear peaks and troughs — this indicates good variation in atmospheric seeing, meaning the best frames are noticeably sharper than the worst ones.

Next, place the Alignment Point (AP) grid:

  • Click Place AP grid to automatically distribute alignment points across the image. Aim for around 150 APs for a full lunar disc.
  • Alignment points work by tracking small patches of lunar detail independently. This corrects for the fact that atmospheric distortion is not uniform across the whole image — one part of the Moon may be sharp while another is blurry at any given moment.
  • Set Min Bright to around 30% to prevent APs from being placed on the dark sky background, where there is no detail to track. APs placed on dark areas will degrade your stack.
  • Set AP Size to around 48px as a good starting point. Smaller APs capture finer detail but are more sensitive to noise; larger APs are more stable but less precise.

3) Stack

Before clicking 3) Stack, configure the Stack Options panel on the right:

  • Frame percentage to stack: Start with 25% — this keeps only the sharpest quarter of your frames. If your seeing conditions were poor, you may need to increase this to 50% or more to have enough frames for a clean result. If seeing was excellent, dropping to 10–15% can yield exceptional detail.
  • Output format: Select TIF for maximum bit depth and quality. Avoid JPEG at this stage as it is a lossy format and will discard fine detail.
  • Blend RAW for 50%: Enabling this produces a second output file alongside your stack — an unsharpened version that is useful as a reference and can also be used in subsequent processing steps in applications like Siril or LuckyStackWorker.
  • Super Resolution: Leave this off unless you are specifically experimenting with it. It upscales the image using sub-pixel information from the stack but can introduce artefacts if not used carefully.

Click 3) Stack to begin. AS!4 will align all selected frames using the AP grid and combine them into a single output image, saved to the same folder as your input file.

The resulting stacked TIF file is your starting point for the next stage of processing — sharpening and detail enhancement using wavelets in Siril or LuckyStackWorker.


LuckyStackWorker

LuckyStackWorker (LSW) is a free, open-source application designed for planetary and lunar image processing. It combines frame selection, alignment and deconvolution sharpening, but in this workflow it is used for deconvolution and structural restoration only. Frame selection and alignment have already been handled by AutoStakkert! 4. Run immediately after stacking, LSW extracts fine micro-detail and crisp crater rim highlights from the drizzled master file (either 1.5x or 3x drizzle works well) and passes an un-stretched, noise-controlled 16-bit TIFF on to Affinity Studio. Its deconvolution pass replaces the wavelet sharpening previously performed in Siril, which proved redundant.

LSW can be downloaded from github.com/wkasteleijn/luckystackworker.

The workflow in LSW has two steps: defining the Point Spread Function (PSF) and applying deconvolution sharpening.

1) Point Spread Function (PSF)

The PSF describes how a perfect point of light, such as a star, is blurred by the optical system and the atmosphere. Once LSW knows the shape of this blur, it can mathematically reverse it and recover detail the blur has obscured. This process is called deconvolution.

For lunar imaging, a Synthetic PSF is used rather than one measured from the image itself:

  • PSF Type: Synthetic
  • Airy disk radius: 10, with a working range of 8 to 12. Values in this range span the effective pixel scale of the SeeStar S30 Pro’s drizzled data and bite into fine crater detail without under-correcting. Increasing the value widens the PSF and applies stronger deconvolution; decreasing it applies less.
  • Diffraction intensity: 60. This controls how strongly the Airy disk rings are weighted in the PSF model. Higher values account for more prominent diffraction rings; lower values give a simpler, more Gaussian-shaped PSF.
  • Seeing index: 4. This adds an atmospheric blur component on top of the optical PSF, with 4 representing moderate seeing. It is increased on nights of poor seeing and decreased when conditions were exceptional.

The PSF preview window updates in real time as the sliders are adjusted.

2) Deconvolve & Sharpen

With the PSF defined, the Deconv. & Sharpen tab is used to configure the sharpening pass:

  • Methods: enable Deconvolve (Lucy-Richardson). This is the primary sharpening method and uses the PSF above to reverse optical and atmospheric blur.
  • Suppress clipping: 0. This is left at zero unless highlights are blowing out.
  • Deconv. iterations: 5 to 10, starting at around 5. A conservative count sharpens micro-detail effectively while avoiding noise amplification and white ringing along the limb. Values towards 10 increase the risk of ringing.
  • Blend raw: 10. This blends a proportion of the original unsharpened image back into the result, which suppresses ringing and keeps the output natural. Higher values give a softer result; lower values give more aggressive deconvolution.

Noise reduction. Where grain builds up on the flat basaltic maria, light denoising (Savitzky-Golay or Ian’s Denoise) can be applied during the sharpening pass. [Settings to be added.]

Edge Artefact Suppression reduces the ringing that deconvolution can introduce around sharp edges such as crater rims and the outer limb:

  • Mode: Dering. This targets the bright or dark halos that can appear around high-contrast edges and along the limb.
  • Strength: 10
  • Radius: 3

Once the settings are configured, the processing is applied and the result exported as an un-stretched 16-bit TIFF. This becomes the base layer in Affinity Studio, where all tonal, sharpening and colour work takes place.

Lunar LRGB Workflow — Affinity Studio

Updated 25 October 2026. SeeStar S30 Pro, AutoStakkert, LuckyStackWorker, Affinity Studio on macOS. This replaces the RAW-only Pixel persona workflow and the earlier October LRGB drafts. It follows the live working file (screenshot of 25 October 2026).


Overview

Two captures of the same target are processed separately and then combined:

  • L layer (detail): RAW AVI, stacked and deconvolved to a sharp mono TIFF.
  • Colour layer: MP4 video, stacked to a colour TIFF with vivid mineral colour.

The L layer is set to Luminosity on top of the colour layer, so sharpness comes from the RAW stack and colour from the MP4 stack. RAW and MP4 cannot be captured at the same time on the S30 Pro, so capture RAW first and the MP4 straight after.


Software chain

ToolRole
PIPPJoin multiple RAW AVI files only if needed. No debayering, no cropping
AutoStakkert 4RAW: debayer (GBRG auto-detected), stabilise, stack, 3x drizzle. MP4: stack to colour TIFF, no drizzle (it only supplies colour)
LuckyStackWorkerDeconvolution sharpening of the RAW stack (L layer)
Affinity StudioCombine, colour, sharpen, defringe and finish

Siril is skipped. GIMP is no longer used.

Where each step happens in Affinity Studio

AreaUsed for
Pixel personaAll layer work: stacking, HSL Shift, Gaussian Blur, Levels, Curves, High Pass, masks, Merge Visible, Threshold
Colour Grading personaAuto Colours on the colour layer (Stage 2)
Develop (button in the Pixel persona toolbar)Clarity and Texture on the “final-development” pixel layer (Stage 5)

Final layer stack (top to bottom)

LayerContents
Threshold AdjustmentHidden, set to 99%, clipping check for blown highlights
final-development (pixel)Curves (black point, sky to 0/0/0). Clarity 25% and Texture 5% applied to the pixels
final (pixel, Merge Visible)Curves (lift midtones), HSL Shift at -50% global with painted limb mask
lsw-d3.tif (L layer, Luminosity)High Pass ×3, Curves, Levels
colour-base.tifGaussian Blur (3 px), HSL Shift ×4

Step by step

Stage 1: Combine the two TIFFs

  1. Use File → New Image Process → Stack with the colour TIFF and the L (LSW) TIFF. This lines the two images up from the start, so no Difference blend alignment check is needed.
  2. Keep the colour TIFF at the bottom and the L TIFF above it.

Stage 2: Colour layer

  1. Add four HSL Shift adjustments, each at +25% saturation, global.
  2. Add a Gaussian Blur at 3 px to the colour layer only. This smooths MP4 chroma noise and keeps colour fringing out of the final image. Above about 4 to 5 px it starts to flatten mare colour.
  3. Switch to the Colour Grading persona and run Auto Colours on the colour layer only, after the four HSL tweaks. It is a one-off bake into the pixels, so redo it if the HSL values change. Keep the original colour TIFF as a clean restart point.

Stage 3: L layer

  1. Set the blend mode to Luminosity.
  2. Levels: slide the white point left to brighten the image. Avoid clipping real detail.
  3. Curves: a gentle S-curve.
  4. High Pass ×3, nested inside the L layer. All three identical: radius 1.5 px, Overlay. Nesting them means they sharpen luminance only and cannot add edge colour.

Stage 4: Merge and defringe (“final”)

  1. Merge Visible into a new pixel layer named final. The layers underneath can stay as backups. They no longer matter for the result.
  2. Inside “final”, add a Curves adjustment that pushes the midtones up for a little more brightness.
  3. Add an HSL Shift adjustment inside “final” at Saturation -50%, global. Defringing is done in this single step.
  4. Invert its mask so it is black everywhere. At this point the desaturation has no visible effect.
  5. Choose the Paint Brush with the settings below, set the foreground to white, and paint a narrow band along the lit limb only.
Brush settingValue
SizeAbout 123 px for images around 2100 to 2300 px wide. Scale to the image
Opacity100%
Flow100%
Hardness0% (soft edge, no visible boundary)
StabiliserOn (10)
  1. Zoom to 100% and check the whole limb, especially the upper left, lower left and lower right. Repaint missed patches. Fix mistakes by painting with black.
  2. Keep the painted band narrow. Painting too far inside drains colour from the outer mare. The terminator side usually needs no painting.

Stage 5: Final development (“final-development”)

  1. Create the final-development pixel layer as a clone, using Merge Visible, from the finished “final” stack.
  2. Apply Clarity at about 25% and Texture at about 5% directly to the layer in Develop, Clarity first and then Texture (the order makes little difference). These cannot be live adjustment layers.
  3. Add a Curves adjustment inside the layer. Use the black point eyedropper on the empty sky so the background goes to pure black. Confirm the Info panel reads 0/0/0.
  4. Set the black point last, because Clarity and Texture can shift the dark values.

Stage 6: Check and export

  1. Turn on the hidden Threshold layer at 99% to check for blown highlights. A handful of single points or a small cluster is acceptable. Turn it off again before export.
  2. Save the layered file as the master.
  3. File → Export → JPEG at 95%.

Why the colour correction order differs by source

  • MP4/JPEG colour layer: the saturation rounds themselves introduce the cast (a warm or magenta drift), so correct after saturating.
  • RAW-only workflow (superseded): channels were balanced before saturation, because the imbalance was a sensor cast.

Do not mix the two. In this LRGB workflow the colour layer is MP4, so the after-saturation order applies.


Checks

  • Sample the sky in several places after the black point step, so one noisy pixel does not set the point too high.
  • Toggle the black point Curves on and off and compare the dim side of the disc, to make sure faint detail is not clipped.
  • Compare the limb at 100% with the masked HSL layer on and off. If a warm or cool edge remains, extend the painted band, lower the saturation further, or raise the colour layer blur slightly.
  • Check layer alignment at the limb. If the colour layer sits slightly off, fringing persists whatever the blur.

Still to confirm

  • How brush size should scale if the canvas size changes. The defringing is done in one pass, so no second pass is needed.

Scores achieved

Record scores for the LRGB combined images here. The earlier RAW-only results were 8.7 best colour and 9.0 for the luminance combination and the gibbous with terminator.