Which Frames Should You Throw Away? Reading a Quality Score
Culling subs by eye is slow and unreliable. What gets measured on a frame, what each number means, and why a score is relative to the session.
The first time you come home with 400 subs, someone will tell you to blink through them and delete the bad ones.
Try it once. By frame 60 you cannot remember what the good ones looked like, and by 150 you are rejecting frames because you are tired. The faults that matter most, such as a 4% drop in sharpness or a background creeping up as the target sinks, cannot be seen at the size a screen shows you.
Culling looks like a judgment call, but it is really a measurement problem.
What is worth measuring
There are six things, and each fails in a different way.
Sharpness. Measured as FWHM (full width at half maximum): the width of a star’s profile in pixels, halfway down from its peak. It is the most honest single number in astrophotography because it does not care what caused the blur. Seeing, focus drift and dew on the corrector all show up here. A session that starts at 3.1 px and ends at 4.4 px is telling you the focuser crept as the tube cooled.
Roundness. Eccentricity, from 0 (a circle) upward. It separates a frame that is blurred from one that is smeared. Both look soft, but only the second is a mount problem. This is the number that catches wind, drift and field rotation, which is a subject of its own.
Signal. Signal-to-noise on the detected stars. It drops when thin cloud dims the target, when the target sinks into haze, or when the moon rises.
Background. Two numbers: the sky level and the gradient across the frame. A rising level means more light (moonrise, a neighbor’s security lamp, dawn). A rising gradient means the light is coming from one side, which is different and often more useful information.
Trailing. A count of streaks and the length of the longest, in pixels: satellites, aircraft, meteors. Statistical rejection during stacking will usually remove a satellite trail that appears in only a few frames, but knowing that eleven of your frames have streaks tells you something about your sky that the stack never will.
Artifacts. The fraction of pixels at saturation. It creeps up when a bright star clips, when the exposure is too long, or when something reflective passes through.
A single frame is rarely just good or bad. It is sharp but trailed, or round but foggy, and the six numbers tell you which.
Why an absolute threshold is the wrong idea
Almost every rejection tutorial makes the same mistake: pick an FWHM cutoff and drop everything above it.
Do that on a night of mediocre seeing and you throw away the whole session. Every frame is 4.8 px because the atmosphere was 4.8 px that night. None is worse than the others, so there is nothing to choose between and no better data waiting.
A fault that every frame shares is not a reason to reject any of them.
The score Akastroid puts on a frame is computed against the rest of that session. A 4.8 px frame on a night that averaged 4.8 scores well. The same frame on a night that averaged 2.9 scores badly, because on that night something specific went wrong with it. This is the only approach that holds up on real sessions, where the sky changes every time and your gear does not.
It also means the score is not portable. Comparing 82/100 from Tuesday with 82/100 from a fortnight ago tells you nothing.
Showing the evidence
A tool that says “rejected: low quality” is asking you to trust arithmetic you cannot see. That is fine until it drops a frame you thought was good, and then you have no way to work out which of you is wrong.
Every frame in the table opens to show what its score was made of:
- Sharpness 71%: FWHM 3.42 px
- Roundness 44%: eccentricity 0.61
- Signal 88%: SNR 24.3
- Background 90%: sky 0.0412, gradient 0.0038
- Trailing 35%: 2 streaks, longest 214 px
- Artifacts 97%: 0.3% saturated
58/100: stars elongated; satellite trail.
Now you can disagree with it. Sort the table by score, FWHM, star count or background. Tick a rejected frame back in if you want it, untick a passing one, or reset everything and start again.
The software will not always be right. A decision you can inspect is one you can overrule, and one you cannot inspect is just something that happened to your data.
What the numbers tell you about your night
Once every frame carries six measurements, the session can tell you things it otherwise could not.
- FWHM rising steadily from the start: focus drifting as the tube cools. Refocus 20 minutes in next time.
- FWHM flat but eccentricity climbing after 1am: the target crossed the meridian, or you moved into a part of the sky where your alt-az mount rotates the field faster.
- Background level climbing at a constant rate: the moon came up, or you imaged into dawn. Check the timestamps against moonrise.
- Background gradient climbing but level flat: something local and directional, like a neighbor’s light, a car park or your own laptop screen.
- Star count collapsing for eleven frames, then recovering: cloud. You can usually see its shape in the graph.
- Everything fine apart from three frames with 200-pixel streaks: satellites. Ignore it, that is what rejection is for, and do not go looking for a fault.
- Star profiles consistently spanning barely one pixel: you are undersampled, and drizzle may recover resolution the pixel grid is currently throwing away.
None of this requires opening a single file. It is the difference between “the stack looked a bit soft” and “my focuser slipped at 11:40.”
How many should you drop?
Fewer than instinct suggests.
Stacking averages. A slightly below-average frame still adds signal, and throwing it out costs integration time you spent a cold night collecting. The frames worth losing are the ones that will damage the result: a bad trail, a cloud-fogged frame with three times the background of the rest, a focus excursion.
For a typical session, 5-15% is a normal cull. If you are dropping 40%, either something went badly wrong that night or your threshold is too aggressive. If you are dropping nothing, check that the analysis ran.
The exception is lucky imaging of planets and the Moon, where you keep the best 5% of several thousand frames and discard the rest. That is a different regime with different arithmetic.
Summary
- Six measurements, not one verdict: sharpness, roundness, signal, background, trailing, artifacts.
- Score frames against their own session. A fault shared by every frame is not a reason to reject any of them.
- Look at the numbers behind a rejection, and overrule them when you disagree.
- Read the trend across the session. It diagnoses focus, cloud, moonrise and field rotation at no extra cost.
- Drop 5-15%. Dropping more usually means the threshold is wrong, not the data.
Try it on your own data
Akastroid runs its processing on your own frames and logs each step it took.
Download Akastroid