How to detect rocket launches from satellite imagery.
Rocket plumes are hot — combustion gases at 1,500 to 3,000 K. Earth's surface is around 290 K. That brightness-temperature contrast is the signal that lets a geostationary weather satellite, scanning at 30-second cadence, detect a launch within seconds of ignition. This is how the LaunchDetect platform does it, taught as a sequence of well-defined steps.
Step 1: Pick the right sensor
The sensor of choice for civilian launch detection is GOES-R ABI Band 7 at 3.9 micrometers — the mid-wave infrared band that gives maximum brightness-temperature contrast between hot combustion gases and the cool background.
The data is free, near-real-time, and published to NOAA's AWS Open Data bucket within seconds of generation. For global coverage you combine three satellites: GOES-East (75.2W), GOES-West (137.2W), and JMA Himawari-9 (140.7E).
Step 2: Convert radiance to brightness temperature
The raw ABI Band 7 product reports radiance. Invert the Planck function to get brightness temperature in Kelvin:
T_b = (h * c / (k * lambda)) / log((2 * h * c^2 / (lambda^5 * L)) + 1)The NOAA NetCDF helpfully publishes the necessary Planck constants in the file itself.
Step 3: Threshold-detect hotspots
Set a brightness-temperature threshold. Practical values:
- 320 K — aggressive: catches all plumes but produces false positives from wildfires and gas flares.
- 340 K — balanced.
- 360 K — conservative: misses small launchers (Electron, similar).
Detection is a per-pixel boolean test. Apply parallax correction immediately afterward.
Step 4: Parallax correction
The detected pixel coordinate is NOT the rocket's true ground position — the plume is at 30 to 80 km altitude, and from a satellite 35,786 km away at GEO, the line-of-sight to the plume hits the ground tens of kilometers offset from where the rocket actually is. The math is well-defined: the offset is along the line from the sub-satellite point to the apparent pixel, scaled by plume altitude / (plume altitude + Earth radius).
Step 5: False-positive filtering
The main false-positive sources are wildfires and industrial gas flares. The discriminators:
- Geofence — a hotspot inside a known spaceport's geofence is almost certainly a launch; outside it, almost certainly something else.
- Temporal pattern — a plume appears for 1 to 3 minutes then disappears; a wildfire persists for hours.
- FIRMS overlap — NASA's FIRMS publishes confirmed fire detections in near-real-time. Cross-reference and reject overlaps.
Step 6: Confidence scoring
Production-grade detection combines the above signals into a single confidence score per candidate. Inputs: spatial coincidence with a known spaceport (binary), temporal pattern match against expected plume duration (real-valued 0-1), brightness profile shape (real-valued 0-1), FIRMS overlap penalty (binary). A weighted sum or a small neural network produces the final score. LaunchDetect's production threshold is set to keep the false-positive rate below 5%.
Related weeks in the course
- Week 13: GOES-R ABI: full-disk, CONUS, mesoscale
- Week 14: Thermal IR Band 7: brightness temperature and hotspots
- Week 15: Georeferencing GOES and parallax (Capstone 3 week)
- Week 21: Multi-sensor fusion: GOES-East, GOES-West, Himawari-9
- Week 27: Production pipelines: S3 → Lambda → EventBridge → DDB