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.

Kalman Filter for Satellite Imagery - 1

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