Estimating the speed of the ISS using computer vision
I recently revisited an older project I built with a friend for a school project as part of the ESA Astro Pi 2024 challenge.
The idea was simple:
estimate the speed of the ISS using only images of Earth.
Approach
The project is written in Python using OpenCV.
The pipeline looks like this:
- capture two images
- detect keypoints using SIFT
- match them using FLANN
- measure pixel displacement
- convert that into real-world distance (GSD)
- calculate speed based on time difference
Result
Estimated speed:
~7.47 km/s
Actual ISS speed:
~7.66 km/s
So roughly a 2–3% difference.
Not perfect, but surprisingly close considering it’s based purely on image analysis.
Limitations
The original runtime images are unfortunately lost, so the repository mainly contains test/template images.
This obviously limits how well the results can be reproduced.
What I would improve
Looking at it now, I would:
- improve filtering of bad matches
- make the pipeline cleaner
- handle outliers more robustly
Repo
https://github.com/BabbaWaagen/AstroPi
If you’ve worked with similar approaches or have ideas on improving matching quality, I’d be interested.
Top comments (0)