13 & 14 August 2026  /  Port Meadow, Oxford  /  550 frames

Sixty-Two Satellites,
No Perseids

Two nights of a camera left running on a tripod, pointed at the Perseids. Four real meteors turned up — and not one of them was a Perseid. The second night was good enough to prove it: the frames turned out to contain enough information to work out exactly where in the picture a Perseid would have had to come from.

550frames
stacked
2:05hours of open
shutter
62satellites tracked
across frames
4sporadic
meteors
0Perseids among
them

Night one

Twenty-five minutes of open sky

13 Aug, about 01:30 — Port Meadow
153 frames × 10 s, ISO 1250, f/2.8, 24 mm eq.
25 min 30 s total shutter
registration 0.26 px median
no foreground — the camera was aimed straight up the Milky Way
Deep stack of the Milky Way: a dense star field crossed by a pale band of starlight, with the Andromeda Galaxy as a small elongated smudge at upper right

All 153 frames, one image

What the noise was hiding

A single frame is a grey rectangle with a few dozen stars in it. Registered on the star field and averaged, the random noise falls away by about twelve times and the sky underneath appears: the Milky Way running edge to edge, the dark dust lane splitting it on the left, and the small elongated smudge near the top right — the Andromeda Galaxy, the furthest thing a person can see without a telescope.

method sigma-clipped mean
noise ÷12.4 vs one frame
rejected satellites, aircraft, hot pixels
field Cygnus across to Andromeda
Star trails: hundreds of short parallel arcs of coloured light across a dense star field, all curving gently around the same distant point

The same 153 frames, not registered

Twenty-five minutes of the Earth turning

The registration is what holds the stars still; drop it, keep the brightest value each pixel ever reached, and every star draws the arc it actually travelled. Twenty-five minutes buys 6.4° of turn — short enough that these read as dashes rather than the long sweeps of the second night, but long enough that they are visibly concentric, tightening towards a centre just past the right-hand edge.

That centre is the celestial pole, and nothing here was told where it is. It falls out of the frames: the sky's motion across the run is one rigid rotation, and the axis of that rotation is the pole. The red dashes running down the right are not a star — that is an aircraft, ticking off its anti-collision strobe frame after frame.

method lighten blend
arc length 6.4° of rotation
span 25 min 30 s elapsed
centre the pole, just off-frame
also visible one aircraft, in red
colour real — blue-white hot, amber cool
The Milky Way star field with many long straight bright trails crossing it in all directions

Everything that crossed, all at once

Every trail found in every frame, laid back over the deep stack. The long continuous lines are satellites; the dashed ones are aircraft, given away by their red anti-collision strobes. Several satellites appear in five, seven, nine frames in a row, marching a little further along the same line each time — which is exactly the pattern that reads as the same shooting star in different positions when you flick through the shots.

detections 111 streaks
multi-frame 13 satellites
longest 9 frames ≈ 100 s
aircraft 2, by strobe colour
meteors none confirmed

Night two

The same field, aimed low

14 Aug, about 02:00–03:50 — the same spot
397 frames × 15 s, ISO 1600, f/2.8, 24 mm eq.
99 min 15 s total shutter
registration 0.28 px median
portrait, with the meadow and treeline in shot
Portrait night landscape: a dark meadow and treeline under a deep star field, with Oxford's orange light pollution glowing along the horizon

Two stacks, joined at the horizon

The sky moves, the meadow does not

A landscape breaks the usual method. Register on the stars and the hedgerow smears; register on the hedgerow and the stars do. So the frame is built twice — once aligned on the sky, once left alone for the ground — and rejoined along the treeline. The orange along the horizon is Oxford. It is not dawn: it faded by 10% between two and half past three, which is a town turning its lights off.

sky 397 frames, registered
ground 397 frames, not
noise ÷20 vs one frame
glow removed before registering,
    put back afterwards
The same meadow scene processed to bring out the stars: a dense star field fills the upper sky, fading into the glowing horizon

The same frames, pushed

Where all the stars went

Next to the first night this scene can look thin, and it is worth saying exactly why, because the obvious explanation is wrong. Both nights record almost the same number of stars per megapixel — 3962 against 3923. Nothing was lost.

What changed is contrast, and it is not the place — both nights were shot from the same field. It is where the camera pointed. Oxford's glow climbs steeply as you look down, so aiming straight up leaves it behind you and framing the horizon puts it in the picture. Measured inside this night's own frame, between two points the same distance from the centre so the lens dims them identically, the sky at above the horizon is 3.7× brighter than at 68°. Correct for that and the first night's sky and this one's agree — the same sky, looked at differently.

The consequence is contrast. A faint star stands 13% above the background on the first night and 4.6% above it here, and a tone curve gentle enough to keep the horizon from blowing out cannot recover that. Flatten the background instead and push hard — which is exactly what the first night's picture got — and they all come back. The two treatments are crossfaded by height here: pushed where the data is clean overhead, natural down where the glow lives.

stars/Mpx night 1 3962
stars/Mpx night 2 3923
sky, 4 deg vs 68 deg 3.7x
faint star vs sky 13% -> 4.6%
cause where it pointed, not where it stood
verdict contrast, not capture
The same star field with constellation figures and object names drawn on: Perseus and Auriga outlined, with Capella, Aldebaran, Algol, the Pleiades, the Hyades, the Double Cluster and the Perseid radiant labelled

Same picture, named

What you were actually looking at

Perseus lying across the top, Auriga's pentagon below it with Capella at the corner — the brightest thing in the frame by a factor of two. The Pleiades and the Hyades over on the right, with Aldebaran on the edge of the Hyades but not part of it: it sits less than half as far away, and only happens to line up.

Every position here is computed, not eyeballed. They come from the plate solution, which fits the camera's orientation to seven stars identified purely by their spacing and lands within about a pixel. The radiant is the same one the meteor test used — and Perseus, as promised, is exactly where it points.

constellations Perseus, Auriga
named stars 17
clusters, galaxies 10
furthest M33, 2.7 Mly
placement error ~1 px
Star trails: long concentric arcs sweeping across the sky above a dark meadow and treeline

The same 397 frames, not registered

One hundred and twelve minutes of the Earth turning

Drop the registration, keep the brightest value each pixel ever reached, and every star draws its own arc. Nearly two hours of them here, against twenty-five minutes on the first night — long enough that the arcs read as arcs. They all curve around the same point, the celestial pole, off beyond the top-left corner. The colours are real: blue-white arcs are hot stars, amber ones are cool.

method lighten blend
arc length 28.4° of rotation
span 1 h 52 m elapsed
foreground from the deep stack
removed hot pixels, sky gradient
The night landscape with satellite and aircraft trails crossing the sky, and a marked circle showing the predicted position of the Perseid radiant

The test

Where the Perseids should have been

Every Perseid travels along a great circle out of one point in Perseus, so on a rectilinear lens their trails must all point back to a single pixel. That pixel is marked. It was found from the star field alone, before any trail was looked at, and it is accurate to about a pixel.

The pale dashes are the 18 single-frame events bright enough, and variable enough along their length, to look like meteors — each traced backwards along its own direction. They scatter. One passes near the radiant; rotating the target to 71 decoy positions at the same distance from the frame centre gives an average of 1.3. One hit is exactly what chance pays.

Four of those eighteen turned out to be real meteors, checked one by one below. The nearest of them misses the radiant by 7.2°, and the angle of a trail that long is good to about 2°. None of them came from Perseus.

radiant pixel (469, 392)
meteor-like 18 events
real meteors 4
from the radiant 0
nearest miss 7.2 deg
decoy average 1.3 hits
Five rows of three frames each: four meteors that appear in a single frame and are gone by the next, and an aircraft whose dashed trail marches along frame by frame

Checked one at a time

Four meteors, and how you know

Each row is one candidate, in the frame before, the frame it appears in, and the frame after — laid out along its own direction of travel, so anything continuing along that line has nowhere to hide.

The four meteors are there for one frame and gone. The aircraft at the bottom is the control: its dashed trail marches steadily along the same line, three frames running. A satellite does the same thing more smoothly, and one catching the sun leaves a fainter steady trail past the glint in its own frame. All three tests are empty for the top four.

Getting there took some care. A bright star that the subtraction misses does not cancel out either, because sub-pixel registration wobble makes its residual flicker — and that flicker reads as “something moving” unless you check that the offset actually changes from frame to frame. Two of these four were wrongly called satellites before that check went in.

f253 52 px, 156 sigma
f264 28 px, 75 sigma
f375 59 px, 27 sigma
f201 31 px, 22 sigma
f326 aircraft, for contrast
The deep star field over the meadow with four meteor trails composited in at their true positions

All four, on one sky

The night, put back together

Each meteor lifted from the single frame it burned in and laid back onto the deep stack. They are in their real places — every frame is registered to the same sky, so a meteor lands exactly where it fell among the stars. What is compressed here is time, not space: these four are spread across about fifty minutes, and no single exposure ever looked like this.

The bright one at the top left is f253, the best of the night. The one at middle right is f264, which happens to fall right beside the Double Cluster. Only the pixels of each trail were carried over, so none of the noise of their own frames came with them.

meteors 4, true positions
spanning ~50 minutes
base 397-frame deep stack
blend screen, trail pixels only
Perseids among them 0
The four meteor tracks extended backwards as curved great circles across the sky, passing through the constellation Perseus but several degrees from the marked radiant

The obvious objection

They do point into Perseus. That is not the same thing.

Extended backwards, all four tracks run straight through Perseus, and all four are travelling away from it rather than towards it. It looks like a shower. The catch is that Perseus is about 30° across and the radiant is a single point at its northern tip — so a track can cross the whole constellation and still miss the thing it would have to come from.

Measured on the sky rather than on the sensor, the four miss by 8.1°, 9.8°, 7.9° and 15.8°. Trail angles this long are good to a degree or two, so those are 7 to 17 sigma misses. Fit a common origin to all four and it lands in Cassiopeia, 17° from the radiant, and no better than four randomly aimed tracks manage.

The curves are drawn as real great circles projected through the plate solution. Extending straight lines in pixels instead — which is what the first version of this test did — is wrong by degrees over this distance, because the lens has enough distortion that a great circle is visibly bent on the sensor. Correcting it did not change the answer, but the first version had no right to be trusted.

f253 misses by 8.1 deg
f264 misses by 9.8 deg
f375 misses by 7.9 deg
f201 misses by 15.8 deg
common origin RA 21 Dec +52
i.e. Cassiopeia, not Perseus

24 frames per second

One hundred and twelve minutes in seventeen seconds

The sky slides over a meadow that never moves. One 15-second frame is far too noisy to watch, so the sky in each frame is a short weighted average of its neighbours, combined on the stars and then turned back to face the way the camera actually pointed. The meadow comes from the 397-frame ground stack, which is not a cheat — it genuinely did not move, and stacking it makes it cleaner than any single frame.

The sky gets the same two-curve treatment as the still above: pushed hard overhead, natural down where the glow is. It also fades out towards the edges, and that one is unavoidable — the sky turns 28° across the run, so early and late each frame is looking at a slice of sky the stack was never built over.

source 397 × 15 s
playback 24 fps, 16.5 s
sky 7-frame weighted mean
ground full 397-frame stack
curves two, fixed, crossfaded
Four consecutive frames in which a horse walks up to the camera, ending with a leg filling the lens

03:48:52 to 03:49:43

How the session ended

Fifty-one seconds, four frames, one horse. These are the only frames of the night left out of every stack — and the best thing in the set.

frames 398–401 of 401
used in stacks none
horses at least one

The good bit

The frames worked out where they were pointing

Placing the radiant needed the camera's orientation on the sky, and there is no GPS, no star catalogue in the camera, and a clock that is wrong. But across the run the whole sky turns once, rigidly, about the celestial pole. Undo the lens projection and that turn becomes a single rotation — solvable from the frames alone. Its axis is the pole.

Three things then had to agree, and none of them was fitted to match:

CheckMeasuredRequired
Sky rotation over the run28.44°28.16° — Earth's, in that time
Pole to zenith39.66°38.23° at Oxford's latitude
A star due eastrisingrising

The 1.4° in the second row is not error: it is the treeline standing above the true horizon, and the same 1.4° turns up independently in the zenith's declination. Anchoring on seven stars identified by their spacing — Capella is the brightest thing in frame by a factor of two — then gives a full plate solution good to 0.031°, about one pixel — enough to place the radiant, name the bright stars, and confirm the camera was pointing east-north-east at 24° above the horizon. As a by-product it says the camera's clock is out by roughly half an hour more than we had assumed, so the local times above are good to about that.

How it was made

Everything came from the raw .ARW files. On the first night the sky sat at about 1% of full scale — 172 levels of real signal in the raw against 25 in an 8-bit JPEG.

  1. Decode every frame to linear light, binning each Bayer quad into one pixel: no demosaic guesswork, and half the noise.
  2. Find the brightest 600 stars per frame and register all of them onto the middle one. A cubic warp, not a rotation — the lens has enough barrel distortion to leave stars 1.4 px out otherwise.
  3. Take the light-pollution glow off each frame before registering. It is fixed to the camera while the sky turns past it, so registering smears it, and the frame edges average a different set of samples from the middle: that alone puts a hard oval step across the background.
  4. Combine with a sigma-clipped mean, which discards anything that was only there once — and keep what it discarded as a map of transients.
  5. Sort the transients by whether they return in the next frame, whether they strobe, and whether they share a radiant.

Originals

Everything, at full size

PNGs are 16-bit and unclipped, so they take an edit better than the JPEGs do. All of it is free to use however you like.

FileWhat it isDownload
Night one - 13 August
01_milkyway_stackDeep stack, all 153 framesPNG 16-bit 19 MB   JPEG 3 MB
02_star_trailsStar trails, 6.4 degrees of rotationPNG 16-bit 22 MB   JPEG 2 MB
03_night_trafficEvery detected trail over the deep stackPNG 16-bit 19 MB   JPEG 3 MB
04_timelapseTimelapse — re-encoded to 1600 px to fit the host's 25 MiB capMP4 13 MB
05_what_crossed_the_skyLabelled close-ups: aircraft, satellites, candidatePNG 16-bit 11 MB   JPEG 1 MB
Night two - 14 August
01_meadow_skyDeep stack joined to the unregistered foregroundPNG 16-bit 8 MB   JPEG 317 kB
02_meadow_trailsStar trails, 28.4 degrees of rotationPNG 16-bit 7 MB   JPEG 1 MB
03_night_trafficEvery detected trail over the deep stackPNG 16-bit 9 MB   JPEG 501 kB
04_timelapseTimelapseMP4 19 MB
05_radiantPredicted Perseid radiant, with every candidate traced backPNG 16-bit 3 MB   JPEG 688 kB
06_the_horsesThe four frames a horse walked intoPNG 16-bit 18 MB   JPEG 847 kB
07_meadow_deepSky flattened and pushed, crossfaded near the horizonPNG 16-bit 21 MB   JPEG 2 MB
08_meadow_labelledConstellations and objects named from the plate solutionPNG 16-bit 12 MB   JPEG 2 MB
09_the_meteorsThe four meteors, three frames eachPNG 16-bit 7 MB   JPEG 1 MB
10_deep_with_meteorsAll four meteors composited at their true positionsPNG 16-bit 21 MB   JPEG 2 MB
11_radiant_testTracks continued backwards as real great circlesPNG 16-bit 12 MB   JPEG 2 MB

Night two, by name

Who was actually up there

The frames carry their own clock once a photograph of a known time is added, and the star field fixes where the camera pointed to a thirtieth of a degree. That is enough to hand every bright trail to a real object: orbits propagated from the same evening's element sets for the satellites, and the night's recorded air traffic for the aircraft. The last column is how far the prediction landed from the measured trail; the next-best candidate was several degrees away in every case.

Time BSTSatelliteNORADPeak altMiss
02:12:55STARLINK-22804786157°0.30°
02:15:57STARLINK-32925017461°0.36°
02:36:38STARLINK-33055016660°0.36°
02:38:33STARLINK-23464788764°0.27°
02:48:45STARLINK-32665019565°0.47°
02:59:30STARLINK-32745018660°0.43°
03:15:30STARLINK-32735019161°0.42°
03:19:21STARLINK-47785383663°0.27°
03:33:41ZHUQUE-2E R/B6909538°0.66°
Time BSTFlightAircraftRouteAltitude
03:10:49UAL124Boeing 787 10New York (EWR) → Athens (ATH)37,000 ft
03:27:04MSR947010283Cairo (CAI) → Chicago (ORD)36,000 ft