Which Frames Should You Throw Away? Reading a Quality Score

Culling subs by eye is slow and wrong. Here's what actually gets measured on a frame, what each number means, and why a score is only meaningful relative to the rest of the session.

The first time you come home with 400 subs, the advice you will get is to blink through them and delete the bad ones.

Try it once. By frame 60 you cannot remember what the good ones looked like. By 150 you are rejecting frames because you are tired. And the faults that matter most — a 4% drop in sharpness, a background creeping up as the target sinks — are invisible at the size a screen can show you.

Culling is a measurement problem wearing the costume of a judgement call.

What is actually worth measuring

Six things, and each one 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, dew on the corrector: all of it shows 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. Separates a frame that is blurred from a frame that is smeared. Both are soft; only one is a mount problem. This is the number that catches wind, drift and field rotation, which is a longer subject in itself.

Signal. Signal-to-noise on the stars that were detected. Drops when cloud thins the target, when the target sinks into haze, or when the moon rises.

Background. Two numbers, not one: the sky level and the gradient across the frame. Level rising means light — moonrise, a neighbour’s security lamp, dawn. Gradient rising means the light is coming from one side, which is different information and often more useful.

Trailing. A count of streaks and the length of the longest, in pixels. Satellites, aircraft, meteors. Statistical rejection during stacking will usually remove a single satellite trail across many 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. Creeps up when a bright star clips, when the exposure is too long, or when something reflective went past.

A single frame is not “good” or “bad”. It is sharp but trailed, or round but foggy, and the six numbers say which.

Why an absolute threshold is the wrong idea

Here is the mistake almost every rejection tutorial makes: pick an FWHM cutoff, drop everything above it.

Do that on a night of mediocre seeing and you throw away the entire session. Every frame is 4.8 px because the atmosphere was 4.8 px that night. None of them is worse than the others. There is nothing to choose between them and no better data waiting.

A fault every frame shares is not grounds for rejecting any of them.

The score Akastroid puts on a frame is computed against the rest of that session. A 4.8 px frame in a night that averaged 4.8 scores well. The same frame in a night that averaged 2.9 scores badly, because on that night something specific went wrong with it. This is the only formulation that survives contact with real sessions, where the sky is different every time and your gear is not.

It also means the score is not portable. Do not compare 82/100 from Tuesday against 82/100 from a fortnight ago and conclude anything.

Showing the evidence

A tool that says “rejected: low quality” is asking you to trust an arithmetic you cannot see. That is fine right up until it drops a frame you thought was good, and then you have no way to find out which of you is wrong.

Every frame in the table opens. Underneath is what the 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, by FWHM, by star count, by background. Tick a rejected frame back in if you want it. Untick a passing one. Reset the lot and start again.

The point is not that the software is always right. It is that a decision you can inspect is a decision you can overrule, and one you cannot inspect is just a thing that happened to your data.

What the numbers tell you about your night

The genuinely useful side effect: once every frame carries six measurements, the session tells you a story 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 drifted 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. A neighbour’s light, a car park, your own laptop screen.

Star count collapsing for eleven frames then recovering — cloud. You can usually see the shape of it in the graph.

Everything fine, three frames with 200-pixel streaks — satellites. Ignore it; that is what rejection is for. Do not go looking for a fault.

Star profiles consistently spanning barely one pixel — you are undersampled, and drizzle may recover resolution the grid is currently throwing away.

None of this needs you to open 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 actually drop?

Fewer than instinct suggests.

Stacking averages. A slightly-below-average frame still contributes signal, and throwing it out costs you integration time you spent a cold night acquiring. The frames worth losing are the ones that will actively damage the result: a bad trail, a cloud-fogged frame with the background three times everyone else’s, 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 actually ran.

The exception is lucky imaging on planets and the Moon, where you keep the best 5% of several thousand frames and discard the rest without a second thought. Different regime, different arithmetic.

The short version

  • 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.
  • Insist on seeing 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 for free.
  • Drop 5–15%. Dropping more usually means the threshold is wrong, not the data.

Try it on your own data

Akastroid does everything in this guide automatically, and tells you what it did.

Download Akastroid — free