Finding what changed between two dates using multi-temporal analysis
2026-02-27
Brazil’s national deforestation monitoring system, PRODES, has tracked forest loss in the Amazon since 1988 using Landsat imagery. Each year it produces a number that appears in newspapers, in international climate negotiations, and in supply chain certification systems: the area of primary forest cleared in the Brazilian Amazon in the preceding twelve months. In peak deforestation years around 2004, the number reached 28,000 km² — an area larger than Wales — in a single year. Following policy interventions, it fell to around 4,500 km² by 2012. Under subsequent administrations it rose and fell again. Every number in that record comes from comparing two satellite images of the same area taken a year apart and identifying the pixels that changed from forest to non-forest.
Change detection is the extraction of changed areas from multi-temporal satellite imagery. It sounds simple — subtract one image from another, threshold the result — and the simplest methods are indeed close to that. But complications accumulate quickly: seasonal differences in vegetation phenology mimic land-cover change; sensor differences between image dates introduce systematic radiometric offsets; atmospheric effects vary; sun angle differences alter shadowing. Robust change detection must distinguish genuine land-cover change from these noise sources. This model derives the major change detection approaches — image differencing, ratio methods, NDVI delta, and post-classification comparison — and discusses the performance trade-offs that determine which method is appropriate for which application.
How much forest was lost between 2010 and 2020?
Change detection identifies where and what type of change occurred:
Applications: - Deforestation: Forest loss mapping - Urban growth: City expansion tracking - Agriculture: Crop rotation patterns - Disaster assessment: Flood/fire damage extent - Coastal change: Erosion, land reclamation - Mining: Excavation monitoring
Challenges: - Phenology: Seasonal vegetation differences (not real change) - Sensor differences: Different satellites/settings - Atmospheric conditions: Clouds, haze, sun angle - Registration: Images must align precisely
The mathematical question: Given two co-registered images from different dates, how do we reliably identify actual change while minimizing false positives from natural variation?
1. Land Cover Conversion - Forest → Urban (permanent) - Cropland → Wetland (land use change)
2. Condition Change - Healthy forest → Degraded forest (same class, different state) - Dense vegetation → Sparse vegetation
3. Temporary vs. Permanent - Snow cover (temporary) - Deforestation (permanent) - Crop harvest (seasonal)
1. Image Differencing
\Delta = \text{Image}_2 - \text{Image}_1
Threshold to identify significant change.
2. Image Ratioing
R = \frac{\text{Image}_2}{\text{Image}_1}
Less sensitive to illumination differences.
3. NDVI Differencing
\Delta\text{NDVI} = \text{NDVI}_2 - \text{NDVI}_1
Negative = vegetation loss
Positive = vegetation gain
4. Change Vector Analysis (CVA)
Compute magnitude and direction of change in multi-dimensional space.
5. Post-Classification Comparison
Classify each image independently, then compare classes:
\text{Change} = (\text{Class}_1 \neq \text{Class}_2)
For band i:
\Delta_i = DN_{i,t_2} - DN_{i,t_1}
Where DN = digital number (pixel value).
Change threshold:
|\Delta_i| > T_i
T can be: - Fixed: e.g., T = 20 (DN units) - Statistical: T = k\sigma where \sigma = standard deviation of \Delta_i over stable areas - Adaptive: Vary spatially based on local variance
Typical: T = 2\sigma or $3$ (95% or 99.7% confidence)
NDVI at time t:
\text{NDVI}_t = \frac{\text{NIR}_t - \text{Red}_t}{\text{NIR}_t + \text{Red}_t}
Change:
\Delta\text{NDVI} = \text{NDVI}_{t_2} - \text{NDVI}_{t_1}
Interpretation: - \Delta\text{NDVI} < -0.2: Significant vegetation loss (deforestation, fire) - -0.2 \leq \Delta\text{NDVI} < -0.1: Moderate degradation - -0.1 \leq \Delta\text{NDVI} \leq 0.1: No change (stable) - \Delta\text{NDVI} > 0.1: Vegetation increase (regrowth, greening)
Advantages: - Normalized (reduces illumination effects) - Directly interpretable (vegetation change) - Works across sensors
Multi-band approach: Treat each pixel as vector in n-dimensional space.
Change vector:
\Delta\mathbf{x} = \mathbf{x}_{t_2} - \mathbf{x}_{t_1}
Where \mathbf{x} = (B_1, B_2, \ldots, B_n) is spectral vector.
Change magnitude:
M = ||\Delta\mathbf{x}|| = \sqrt{\sum_{i=1}^{n} (B_{i,t_2} - B_{i,t_1})^2}
Change direction:
\theta = \arctan\left(\frac{\Delta B_2}{\Delta B_1}\right)
(For 2D case; generalizes to n dimensions)
Interpretation: - Magnitude: How much changed - Direction: Type of change (e.g., vegetation loss vs. urban growth have different spectral trajectories)
Algorithm:
1. Classify Image_t1 → Map_t1
2. Classify Image_t2 → Map_t2
3. Create change matrix:
For each pixel (i, j):
if Map_t1[i,j] != Map_t2[i,j]:
Change[i,j] = type of transition
else:
Change[i,j] = no change
Change matrix (transition table):
| Forest_t2 | Urban_t2 | Water_t2 | |
|---|---|---|---|
| Forest_t1 | 8500 | 450 | 50 |
| Urban_t1 | 20 | 1200 | 0 |
| Water_t1 | 5 | 10 | 285 |
Analysis: - Diagonal: No change (stable) - Off-diagonal: Change - 450 pixels: Forest → Urban (deforestation + urbanization)
Advantage: Provides “from-to” information
Disadvantage: Errors in both classifications compound
Problem: Detect forest loss using NDVI differencing.
Pixel values:
Date 1 (2015): - Red = 0.08, NIR = 0.42
Date 2 (2020): - Red = 0.25, NIR = 0.28
Step 1: Calculate NDVI for each date
Date 1:
\text{NDVI}_1 = \frac{0.42 - 0.08}{0.42 + 0.08} = \frac{0.34}{0.50} = 0.68
Date 2:
\text{NDVI}_2 = \frac{0.28 - 0.25}{0.28 + 0.25} = \frac{0.03}{0.53} = 0.057
Step 2: Calculate NDVI change
\Delta\text{NDVI} = 0.057 - 0.68 = -0.623
Step 3: Interpret
Large negative change (< -0.2) → Significant vegetation loss
Likely: Deforestation or land clearing occurred between 2015 and 2020.
Original pixel: Dense vegetation (NDVI = 0.68, healthy forest)
New pixel: Bare soil or sparse vegetation (NDVI = 0.057)
Conclusion: Forest loss detected.
Below is an interactive change detection demo.
<label>
Change detection method:
<select id="change-method">
<option value="ndvi-diff" selected>NDVI Differencing</option>
<option value="image-diff">Image Differencing (NIR)</option>
<option value="cva">Change Vector Analysis</option>
</select>
</label>
<label>
Change threshold:
<input type="range" id="change-threshold" min="0.1" max="0.5" step="0.05" value="0.2">
<span id="threshold-value">0.20</span>
</label>
<label>
Show change areas only:
<input type="checkbox" id="show-change-only">
</label>
<div class="change-info">
<p><strong>Total pixels:</strong> <span id="total-pixels">--</span></p>
<p><strong>Changed pixels:</strong> <span id="changed-pixels">--</span></p>
<p><strong>Change rate:</strong> <span id="change-rate">--</span>%</p>
</div>
<canvas id="change-canvas" width="700" height="350" style="border: 1px solid #ddd;"></canvas>
Try this: - NDVI differencing: Most sensitive to vegetation change - Image differencing: Simple NIR band comparison - Change vector analysis: Uses both Red and NIR together - Adjust threshold: Higher = only major changes detected - Show change only: Isolates just the changed areas (red/green) - Time 1: All forest (uniformly green) - Time 2: Clearcut region visible (less green) - Change map: Red shows deforestation area clearly!
Key insight: Change detection reveals WHERE and HOW MUCH changed—critical for monitoring deforestation, urbanization, and disasters!
Hansen et al. (2013) Global Forest Change dataset: - 30m resolution, 2000-2023 - Annual forest loss maps - Based on Landsat time series - Free, publicly available
Method: NDVI-based change detection + classification
Findings: - ~1.5 million km² forest lost 2000-2012 - Brazil, Indonesia, Canada largest losses - Tropics most dynamic
Nighttime lights change detection: - VIIRS/DMSP satellite data - Increase in lights = urbanization - Independent of weather/season
NDVI decrease + impervious surface increase = urban expansion
Rapid mapping after events:
Floods: - Water extent change (NIR differencing) - Pre-flood vs. during flood
Wildfires: - NDVI drop in burned areas - Burn severity mapping (dNBR)
Earthquakes: - Building collapse (texture change) - Landslides (slope failure)
Crop rotation: - Annual land cover change - Corn-soybean patterns
Irrigation expansion: - NDVI increase in arid regions - Water use monitoring
Images from different seasons:
Time 1: July (peak green)
Time 2: November (senescence)
Result: ΔNDVI < 0 everywhere (false change!)
Solution: - Use anniversary dates (same month/season) - Or normalize for phenology using time series - Multi-year baseline to understand natural variation
Haze, clouds, sun angle affect reflectance.
Apparent change from atmospheric conditions, not land cover.
Solution: - Atmospheric correction (essential!) - Cloud masking - Surface reflectance products (pre-corrected)
Images misaligned by 1-2 pixels:
Edge pixels show false change.
Solution: - Co-registration (align precisely) - Sub-pixel accuracy (<0.5 pixel) - Buffer stable features to avoid edges
Post-classification comparison:
If each classification is 90% accurate:
Overall accuracy of change detection ≈ $0.9 = 81%$
Errors compound!
Solution: - Use direct change detection (differencing) when possible - Improve individual classifications first
Traditional: Compare two dates (binary change/no-change)
Time series approach: Continuous monitoring
BFAST (Breaks For Additive Season and Trend):
Decomposes time series into: - Trend (long-term change) - Seasonal (phenology) - Remainder (noise + abrupt changes)
Detects: - Gradual change (forest degradation) - Abrupt change (clearcut) - Timing of change (when it occurred)
LandTrendr (Landsat-based Detection of Trends in Disturbance and Recovery):
Fits segmented trajectories to NDVI time series: - Growth (reforestation) - Decline (degradation) - Stable (no change)
Advantage: Richer information than two-date comparison
If \Delta values for “no change” pixels follow normal distribution:
\Delta \sim N(0, \sigma^2)
Change threshold:
T = \mu + k\sigma
Where: - \mu = mean (ideally 0 for radiometric correction) - \sigma = standard deviation - k = 2 (95% confidence) or 3 (99.7% confidence)
Use stable areas (known no-change):
1. Identify stable regions (water, urban cores)
2. Calculate Δ for these pixels
3. Estimate σ = std(Δ_stable)
4. Set T = k*σ
Receiver Operating Characteristic:
Plot True Positive Rate vs. False Positive Rate for different thresholds.
Optimal threshold: Maximize TPR while minimizing FPR
Area Under Curve (AUC): Measure of classifier quality - AUC = 1.0: Perfect - AUC = 0.5: Random