Back to portfolio
Remote Sensing · McGill University · Cardille Lab · 2025
Kalman Filter for Satellite Imagery
An Extended Kalman Filter that tracks the expected reflectance of every pixel over time, so land-cover change stands out.

Overview
Detecting land-cover change needs a model of what a pixel is expected to look like, including its seasonal cycle. Thresholds miss gradual shifts. This filter keeps the parameters of a harmonic seasonal model as its state and updates them with each new Landsat or Sentinel-2 observation.
What I built
- Tuned the filter's noise parameters with gradient-based optimization in PyTorch, and with PEST inverse modeling.
- Supported unimodal, bimodal, and trimodal harmonic models, initialized from uniform values, a harmonic fit, or CCDC coefficients.
- Persisted state and covariance for continuous multi-year runs, and parallelized across sample points.
- Ran on Earth Engine's high-volume endpoint with export to Google Cloud Storage.
Tech stack
PythonGoogle Earth EnginePyTorchNumPy