---
title: "What is Change Detection in Satellite Imagery?"
url: "https://wherobots.com/discover/change-detection/"
description: "Change detection compares satellite or aerial images of the same place over time to find what changed. Methods, data needs, and how RasterFlow runs it."
published: "2026-09-24"
modified: "2026-10-23"
---

# What is Change Detection in Satellite Imagery?

Change detection is the process of comparing two or more images of the same place, captured at different times, to find where and how the surface has changed. Ashbindu Singh's review [Digital change detection techniques using remotely-sensed data](https://doi.org/10.1080/01431168908903939) (International Journal of Remote Sensing, 1989) gave the definition most papers cite. It defines change detection as identifying differences in the state of an object or phenomenon by observing it at different times. The output is a map of change, often classified by type, such as forest to bare soil or vegetation to burn scar.

In software, the term names website monitoring tools and the update cycle in frameworks such as Angular. This article covers remote sensing and geographic information systems (GIS).

## Key takeaways

- Change detection compares aligned images of one place from different dates. It flags pixels or objects whose values differ by more than a threshold.
- Methods range from image differencing and change vector analysis to post-classification comparison, time series models, and deep learning. Alignment, atmospheric correction, and cloud masks come first.
- Change detection runs on optical imagery, [synthetic aperture radar (SAR)](https://wherobots.com/discover/synthetic-aperture-radar/) backscatter, and derived products. Backscatter is the share of the radar pulse that returns to the sensor. Examples of derived products are the [Normalized Difference Vegetation Index (NDVI)](https://wherobots.com/discover/ndvi/) and [land cover maps](https://wherobots.com/discover/land-cover-classification/).
- Global forest loss maps, weekly deforestation alerts, wildfire burn severity maps, and building damage assessments are all change detection products.
- In Wherobots, a burn severity map from two Sentinel-2 scenes joins to building footprints in one SQL query. This article follows the January 2025 Palisades Fire in Los Angeles.

## What is change detection in GIS?

In GIS, change detection compares rasters or vector layers of one area across time. Esri's guide to [change detection in ArcGIS Pro](https://doc.esri.com/en/arcgis-pro/latest/help/analysis/image-analyst/change-detection-in-arcgis-pro.html) groups the work into four types. Categorical change compares two classified maps. Pixel value change compares two continuous rasters. Spectral change compares values across bands. Time series change compares a stack of images. The same comparisons run as SQL or Python in cloud engines when the area grows to a state or a country.

Sun angle, season, cloud, haze, and sensor calibration also make two images differ. Those effects have to be removed first, or they show up as false change.

[Landsat](https://wherobots.com/discover/landsat/) allows comparison back to 1972. [Sentinel-2](https://wherobots.com/discover/sentinel-2/) has imaged land since 2015. The European Space Agency (ESA) [Sentinel-2 mission guide](https://sentiwiki.copernicus.eu/web/s2-mission) gives a revisit of five days at the equator with two satellites, at up to 10 m. A revisit is the time between images of the same place. Both archives are ready to query in the Havasu catalog. [Sentinel-2 seasonal mosaics](https://wherobots.com/havasu/#sentinel2) serve for comparing seasons. Level-2A is the product level called L2A. The [Sentinel-2 L2A scene index](https://wherobots.com/havasu/#l2a_source_items) serves for picking dates by cloud cover.

## How change detection works

If coregistration, radiometric normalization, or masking fails, the error shows up as false change.

1. **Coregistration.** The images are aligned so a pixel refers to the same ground on every date, usually to within half a pixel. Misalignment produces false change along every edge.
2. **Radiometric normalization.** Values are corrected for atmosphere and illumination. Surface reflectance products such as Sentinel-2 Level-2A carry this correction, so they are the usual starting point.
3. **Masking.** Cloud, cloud shadow, snow, and water are removed where they would register as change. Sentinel-2 Level-2A ships a scene classification layer (SCL) for this.
4. **Comparison.** A method from the table below turns the pair or stack into a change score per pixel or object.
5. **Thresholding.** A cutoff separates change from noise. It can be set by hand or derived from the statistics of the difference image.
6. **Labeling and validation.** Change regions are classified. A minimum mapping unit, the smallest patch kept, removes isolated noisy pixels. A reference sample measures accuracy. Olofsson and colleagues set the standard practice in [Good practices for estimating area and assessing accuracy of land change](https://doi.org/10.1016/j.rse.2014.02.015) (Remote Sensing of Environment, 2014).

## Types of change detection techniques

Lu, Mausel, Brondizio, and Moran's review [Change detection techniques](https://doi.org/10.1080/0143116031000139863) (International Journal of Remote Sensing, 2004) sorted the methods of its time into seven categories. The table lists today's families.

| Method | How it works | Best for |
| --- | --- | --- |
| Image differencing and ratioing | Subtract or divide band or index values between dates, then threshold | Vegetation loss, flooding, burn scars |
| Change vector analysis | Measure the magnitude and direction of spectral change across bands | Several change types at once |
| Multivariate alteration detection | Find the band combinations that differ most between dates | Change across many bands |
| Post-classification comparison | Classify each date, then compare class labels | Land use transition matrices |
| Object-based comparison | Segment images into objects, compare object attributes | High-resolution imagery |
| Time series models | Fit a model to each pixel's history and flag breaks | Disturbance and recovery over years |
| Deep learning | Train a network on labeled image pairs to output a change mask | Buildings, damage, fine-grained change |
| Embedding distance | Compare learned feature vectors per pixel across dates | Broad screening without labels |

William Malila introduced change vector analysis at Purdue's 1980 Machine Processing of Remotely Sensed Data symposium, mapping forest harvest and regrowth in northern Idaho from Landsat. Nielsen, Conradsen, and Simpson described [multivariate alteration detection (MAD)](https://doi.org/10.1016/S0034-4257%2897%2900162-4) (Remote Sensing of Environment, 1998). It used canonical correlation analysis, a statistical method that links combinations of two sets of variables. With it, MAD found the band combinations that differ most between two dates. Hussain and colleagues traced the move [from pixel-based to object-based approaches](https://doi.org/10.1016/j.isprsjprs.2013.03.006) (ISPRS Journal of Photogrammetry and Remote Sensing, 2013) as sub-meter imagery became common.

For deep learning, Daudt, Le Saux, and Boulch's [Fully convolutional siamese networks for change detection](https://doi.org/10.1109/ICIP.2018.8451652) (IEEE International Conference on Image Processing, 2018) set the pattern most models still follow. One shared encoder turns each date's image into features. A decoder turns the two sets of features into a change mask. Embedding distance compares annual feature vectors, lists of numbers that summarize each pixel. Google DeepMind's [AlphaEarth Foundations](https://arxiv.org/abs/2507.22291) (Brown and colleagues, 2025) is one source. It encodes each 10 m pixel as a 64-dimensional vector, a list of 64 numbers.

## Change detection vs change point detection

Change detection compares images across space and time. Change point detection is the statistics problem of finding the moments when the distribution of a single time series shifts. E. S. Page's [Continuous inspection schemes](https://doi.org/10.1093/biomet/41.1-2.100) (Biometrika, 1954) introduced the cumulative sum (CUSUM) test, which accumulates small deviations from an expected mean and signals a change when the sum crosses a limit. Truong, Oudre, and Vayatis's [Selective review of offline change point detection methods](https://doi.org/10.1016/j.sigpro.2019.107299) (Signal Processing, 2020) organizes the modern methods.

The two meet in time series change detection. [BFAST](https://doi.org/10.1016/j.rse.2009.08.014) (Breaks For Additive Season and Trend), from Verbesselt and colleagues (Remote Sensing of Environment, 2010), splits each pixel's series into trend, seasonal, and remainder parts. It then tests for breaks. That is change point detection run once per pixel.

## Change detection examples

- **Global forest loss.** Hansen and colleagues' [High-resolution global maps of 21st-century forest cover change](https://doi.org/10.1126/science.1244693) (Science, 2013) classified Landsat imagery to map 2.3 million km² of forest lost from 2000 to 2012.
- **Deforestation alerts.** Global Forest Watch publishes change alerts in near real time. The Landsat-based GLAD (Global Land Analysis and Discovery) alerts, from Hansen and colleagues' [Humid tropical forest disturbance alerts using Landsat data](https://doi.org/10.1088/1748-9326/11/3/034008) (2016), mapped disturbance weekly. The RADD (Radar for Detecting Deforestation) alerts in Reiche and colleagues' [Forest disturbance alerts for the Congo Basin using Sentinel-1](https://doi.org/10.1088/1748-9326/abd0a8) (2021) use radar, whose signal passes through cloud.
- **Burn severity.** The US [Monitoring Trends in Burn Severity](https://doi.org/10.4996/fireecology.0301003) program (Eidenshink and colleagues, 2007) maps every large US fire since 1984 by differencing the Normalized Burn Ratio.
- **Building damage.** The [xBD dataset](https://arxiv.org/abs/1911.09296) (Gupta and colleagues, 2019) pairs pre- and post-disaster images with damage labels for 850,736 building polygons across 19 disasters.
- **Urban growth.** The LEVIR-CD benchmark in Chen and Shi's [spatial-temporal attention paper](https://doi.org/10.3390/rs12101662) (Remote Sensing, 2020) holds 637 image pairs with over 31,000 labeled building changes.
- **Disaster mapping.** The [Copernicus Emergency Management Service](https://mapping.emergency.copernicus.eu/about/) compares reference and post-event satellite maps within hours or days of an emergency.
- **Ships and ports.** Wherobots compared vessel counts in Sentinel-2 scenes to [measure the Strait of Hormuz shutdown](https://wherobots.com/blog/hormuz-vessel-detection/): traffic through the surveyed corridor fell 95%.

## Change detection in Wherobots

The Palisades Fire started on January 7, 2025, in Los Angeles County, according to the California Department of Forestry and Fire Protection (CAL FIRE) [incident page](https://www.fire.ca.gov/incidents/2025/1/7/palisades-fire). Burn severity mapping is the standard example of image differencing. Key and Benson's [Normalized Burn Ratio](https://www.fs.usda.gov/rm/pubs_series/rmrs/gtr/rmrs_gtr164/rmrs_gtr164_13_land_assess.pdf) (NBR), published by the US Department of Agriculture Forest Service in 2006, compares near-infrared and shortwave infrared reflectance. Reflectance is the share of light a surface reflects. Healthy vegetation is bright in near-infrared and dark in shortwave infrared, and burned ground reverses that. The pre-fire NBR minus the post-fire NBR is the differenced Normalized Burn Ratio (dNBR), a severity score per pixel. The same report gives the class thresholds: 0.10 for low, 0.27 for moderate-low, 0.44 for moderate-high, and 0.66 for high.

The [Sentinel-2 L2A scene index](https://wherobots.com/havasu/#l2a_source_items) in Wherobots Open Data lists every scene with its cloud cover. It links to each band as a Cloud Optimized GeoTIFF (COG), an image file that allows reading one window at a time. Sentinel-2 tile 11SLT has a scene on January 2, five days before ignition, with 3.02% cloud, and one on January 12 from the same orbit with 0.02%. WherobotsDB reads both as [out-db rasters](https://docs.wherobots.com/reference/havasu-table/raster-data/out-db-rasters), which stay in their source files, so only the pixels inside the area of interest are fetched.

| Source | Format | Size | What the query read |
| --- | --- | --- | --- |
| [Sentinel-2 L2A scene index](https://wherobots.com/havasu/#l2a_source_items) (`sentinel2.l2a_source_items`) | Havasu table, one row per scene with links to its band files | 2 scenes on tile 11SLT | Band file links for the scenes of 2 and 12 January 2025 |
| Sentinel-2 bands B8A (near-infrared) and B12 (shortwave infrared) | COG, 20 m pixels | 1,119 by 683 pixels per band per date | Reflectance inside the box, for both dates |
| Sentinel-2 scene classification layer (SCL) | COG, 20 m pixels | 1,119 by 683 pixels per date | Classes 4 (vegetation) and 5 (not vegetated) kept on both dates |
| [Overture buildings](https://wherobots.com/havasu/#buildings_building) (`overture_maps_foundation.buildings_building`) | Havasu table of footprint polygons | 37,866 buildings in the box | The centroid of each footprint |

![Five-step diagram of the change detection query. Step 1 picks the Sentinel-2 scenes of 2 January and 12 January 2025 on tile 11SLT. Step 2 clips bands B8A, B12 and SCL to a 1,119 by 683 pixel window and keeps SCL classes 4 and 5. Step 3 computes the Normalized Burn Ratio with RS_MapAlgebra. Step 4 subtracts post-fire from pre-fire NBR and classifies severity. Step 5 samples the result at 37,866 Overture building centroids with RS_Value](https://wherobots.com/wp-content/themes/wherobots/assets/img/discover/change-detection-dnbr-pipeline.webp?v=2)

*The five steps from two Sentinel-2 scenes to a burn severity per building. 81.9% of pixels are clear on both dates, and 7,549 ha reach moderate-low severity or worse.*

The query clips the three layers to a box over the fire and keeps the pixels classed 4 or 5 on both dates. It computes dNBR with [RS_MapAlgebra](https://docs.wherobots.com/reference/wherobots-db/raster-data/map-algebra-operators/RS_MapAlgebra) and samples it at each [Overture](https://wherobots.com/havasu/#buildings_building) [building footprint](https://wherobots.com/discover/building-footprint/) with [RS_Value](https://docs.wherobots.com/reference/wherobots-db/raster-data/operators/RS_Value). Archive pixel values are reflectance times 10,000. NBR is a ratio, so the scale cancels and the raw values go straight into the formula:

```
-- Palisades Fire burn severity (dNBR) and the Overture buildings it touches, Los Angeles County
WITH scenes AS (
  SELECT id, assets.nir08.href AS nir, assets.swir22.href AS swir, assets.scl.href AS scl
  FROM wherobots_open_data.sentinel2.l2a_source_items
  WHERE year = 2025 AND month = 1 AND mgrs_tile = '11SLT'
    AND id IN ('S2A_11SLT_20250102_0_L2A', 'S2A_11SLT_20250112_0_L2A')
),
aoi AS (
  SELECT ST_Transform(ST_GeomFromText(
    'POLYGON((-118.72 34.02, -118.48 34.02, -118.48 34.14, -118.72 34.14, -118.72 34.02))', 4326),
    'EPSG:4326', 'EPSG:32611') AS geom
),
bands AS (  -- B8A, B12 and SCL clipped to the box, stacked per date
  -- RS_Clip(raster, band, geometry, allTouched, noDataValue, crop)
  SELECT s.id,
         RS_AddBand(RS_AddBand(RS_Clip(RS_FromPath(s.nir), 1, a.geom, true, 0, true),
                               RS_Clip(RS_FromPath(s.swir), 1, a.geom, true, 0, true), 1, 2),
                    RS_Clip(RS_FromPath(s.scl), 1, a.geom, true, 0, true), 1, 3) AS r
  FROM scenes s CROSS JOIN aoi a
),
pair AS (   -- bands 1 to 3: pre-fire, bands 4 to 6: post-fire
  SELECT /*+ BROADCAST(post) */
         RS_AddBand(RS_AddBand(RS_AddBand(pre.r, post.r, 1, 4), post.r, 2, 5), post.r, 3, 6) AS r
  FROM bands pre JOIN bands post
    ON pre.id = 'S2A_11SLT_20250102_0_L2A' AND post.id = 'S2A_11SLT_20250112_0_L2A'
),
dnbr AS (   -- keep SCL 4 (vegetation) and 5 (not vegetated) on both dates
  SELECT RS_MapAlgebra(r, 'D',
    'out = ((rast[2] == 4 || rast[2] == 5) && (rast[5] == 4 || rast[5] == 5))
           ? (rast[0] - rast[1]) / (rast[0] + rast[1]) - (rast[3] - rast[4]) / (rast[3] + rast[4])
           : -9999.0;', -9999.0) AS d
  FROM pair
),
area AS (   -- 20 m pixels are 0.04 ha; 0.27 starts moderate-low severity, 0.66 high
  SELECT RS_Width(d) AS width_px, RS_Height(d) AS height_px,
         RS_ZonalStats(RS_MapAlgebra(d, 'D', 'out = rast[0] >= 0.27 ? 1 : 0;'),
                       RS_Envelope(d), 1, 'sum') * 0.04 AS ha_moderate_low_or_worse,
         RS_ZonalStats(RS_MapAlgebra(d, 'D', 'out = rast[0] >= 0.66 ? 1 : 0;'),
                       RS_Envelope(d), 1, 'sum') * 0.04 AS ha_high
  FROM dnbr
),
bldg AS (   -- broadcast the one dNBR raster to every partition of the building table
  SELECT /*+ BROADCAST(d) */
         RS_Value(d.d, ST_Transform(ST_Centroid(b.geometry), 'EPSG:4326', 'EPSG:32611')) AS v
  FROM wherobots_open_data.overture_maps_foundation.buildings_building b CROSS JOIN dnbr d
  WHERE b.bbox.xmin > -118.72 AND b.bbox.xmax < -118.48
    AND b.bbox.ymin > 34.02 AND b.bbox.ymax < 34.14
)
SELECT a.width_px, a.height_px, ROUND(a.ha_moderate_low_or_worse) AS ha_moderate_low_or_worse,
       ROUND(a.ha_high) AS ha_high, b.buildings, b.on_010_or_more, b.on_027_or_more
FROM area a CROSS JOIN (
  SELECT COUNT(*) AS buildings,
         SUM(CASE WHEN v >= 0.10 THEN 1 ELSE 0 END) AS on_010_or_more,
         SUM(CASE WHEN v >= 0.27 THEN 1 ELSE 0 END) AS on_027_or_more
  FROM bldg) b;
```

One WherobotsDB query reads all four inputs and returns one row in about three minutes. The box covers 1,119 by 683 pixels, about 22 by 14 km. Pixels at moderate-low severity or worse cover 7,549 ha (18,654 acres), and 2,941 ha reach high severity. Of 37,866 Overture buildings in the box, 8,288 sit on pixels of 0.10 or more and 3,398 on pixels of 0.27 or more.

![Map of Palisades Fire burn severity between Malibu and Pacific Palisades from Sentinel-2 dNBR, 2 January to 12 January 2025. High severity (dNBR 0.66 and above) shows in dark red across the Santa Monica Mountains, and moderate-high (0.44 to 0.66) in bright red. Orange marks moderate-low (0.27 to 0.44). Masked pixels are gray and the Pacific Ocean is navy. Cyan dots mark 3,398 Overture buildings on pixels of 0.27 or more along the coast and in Pacific Palisades](https://wherobots.com/wp-content/themes/wherobots/assets/img/discover/change-detection-palisades-dnbr-map.webp)

*Palisades Fire dNBR from Sentinel-2 scenes of 2 and 12 January 2025, 20 m pixels, SCL classes 4 and 5 kept on both dates. 7,549 ha reach moderate-low severity or worse, and 3,398 of 37,866 buildings in the box sit on those pixels.*

WherobotsDB runs [raster and vector](https://wherobots.com/discover/raster-vs-vector-data/) in one engine; most stacks pick one. The same pattern scales to a county or a state. Select a pre-fire and post-fire scene for every Sentinel-2 tile the area touches, compute dNBR per tile, and join the results to buildings. The [Spokane firestorm post](https://wherobots.com/blog/spokane-fire-dnbr/) runs this dNBR pattern on WherobotsDB across all of Washington. For model-based change detection, RasterFlow (Public Preview) builds image mosaics, runs computer vision models on them, and writes vector results on the same platform. Its change detection pipeline stacks several dates as model input. Its temporal embedding pipeline scores each date against the series by embedding distance. The [change detection with RasterFlow](https://docs.wherobots.com/tutorials/example-notebooks/rasterflow-changedetection) notebook runs the Fields of the World model on planting- and harvest-season composites. Those outputs join to parcels, buildings, or leases in WherobotsDB. The [Wherobots Model Context Protocol (MCP) Server](https://docs.wherobots.com/develop/mcp/mcp-server-overview) lets an AI coding tool write the query from a plain-language request.

## The Palisades Fire results in detail

### Scene choice and masking

Tile 11SLT has 18 scene entries for December 2024, 12 for January 2025, and 11 for February 2025 in the Sentinel-2 L2A archive. Scene footprints from the 18:54 UTC pass cover about a quarter of the tile (3,100 km² of 12,059 km²). This article uses the 18:45 UTC pass, which covers the whole tile. On that pass, 2 January is the last clear scene before ignition, and 12 January and 21 February (4.98% cloud) are the clear ones after. Scene cloud cover filters dates. The pixel mask filters pixels.

Keeping only scene classification classes 4 (vegetation) and 5 (not vegetated) on both dates leaves 604,688 of the 738,733 pixels inside the box. Both scenes were almost cloud free, so the mask removes mainly water and pixels in the SCL dark area class. The fire shows in the classification layer itself: pixels classed as vegetation fell from 277,259 to 134,212, while not vegetated rose from 334,656 to 481,636.

![Paired horizontal bar chart of Sentinel-2 scene classification classes in the Palisades Fire window on 2 January and 12 January 2025. Vegetation falls from 277,259 to 134,212 pixels, and not vegetated rises from 334,656 to 481,636. Water stays near 84,000, dark area pixels fall from 42,301 to 38,619, and cloud, shadow and snow stay under 320 pixels](https://wherobots.com/wp-content/themes/wherobots/assets/img/discover/change-detection-palisades-scene-classification.webp)

*Scene classification (SCL) counts for the 738,733 pixels inside the Palisades Fire box. Vegetation fell by 143,047 pixels, about 5,700 ha, between 2 and 12 January 2025.*

### Severity classes and buildings

Swapping the 12 January scene for 21 February changes the moderate-low and worse area from 7,549 to 7,480 ha, and the high class from 2,941 to 2,915 ha. Only the low class moves much, from 1,629 to 2,738 ha. The low class sits closest to the noise between dates, so report totals of moderate-low and worse. Inside pixels of 0.27 or more, mean NBR fell from 0.31 before the fire to -0.30 after, and the median dNBR there is 0.60.

One more statement over the `dnbr` result counts pixels per class, at 0.04 ha per 20 m pixel:

```
SELECT size(filter(v, x -> x >= 0.10 AND x < 0.27)) * 0.04 AS low_ha,
       size(filter(v, x -> x >= 0.27 AND x < 0.44)) * 0.04 AS moderate_low_ha,
       size(filter(v, x -> x >= 0.44 AND x < 0.66)) * 0.04 AS moderate_high_ha,
       size(filter(v, x -> x >= 0.66)) * 0.04 AS high_ha
FROM (SELECT RS_BandAsArray(d, 1) AS v FROM dnbr)
```

Of the 37,866 buildings in the box, 37,632 sit on a clear pixel. By the class of the pixel under each centroid: 29,344 below 0.10, 4,890 low, 2,719 moderate-low, 647 moderate-high, and 32 high. Most buildings in the box lie outside the scar. dNBR is a vegetation index. A pixel of roof and pavement changes less than the burned hillsides around it, so it can read low over a destroyed house. A 20 m pixel covers 400 m², and 82.6% of the footprints in the box are smaller than that, with a median of 225 m². Building damage needs imagery at under a meter and a model trained on labeled damage, as in xBD. The dNBR map shows where to run it.

![Two charts for the Palisades Fire. Grouped bars show burned area by dNBR severity class for post-fire scenes of 12 January and 21 February 2025. The bars are nearly equal for moderate-low, moderate-high and high, and the low class rises from 1,629 to 2,738 ha. Horizontal bars show Overture buildings by dNBR class: 29,344 below 0.10, 4,890 low, 2,719 moderate-low, 647 moderate-high and 32 high](https://wherobots.com/wp-content/themes/wherobots/assets/img/discover/change-detection-palisades-severity-classes.webp)

*Burned area by severity class for two post-fire dates, and buildings by class for 12 January 2025. Moderate-low and worse totals 7,549 ha and 7,480 ha, and 3,398 buildings sit on those pixels.*

## Change detection research

By the end of the 1980s enough Landsat imagery existed for Singh's 1989 review to compare five methods. They were image differencing, ratioing, regression, principal components (a method that compresses many bands into a few), and post-classification comparison. Fifteen years later two reviews in the same journal mapped a much larger field. One was Lu and colleagues' seven categories. The other was Coppin, Jonckheere, Nackaerts, Muys, and Lambin's [Digital change detection methods in ecosystem monitoring: a review](https://doi.org/10.1080/0143116031000101675) (2004). It tied each method to the ecosystem questions it answers.

### Unsupervised statistics on the difference image

Most early methods produce a difference image and then need a threshold. Lorenzo Bruzzone and Diego Fernández Prieto wrote [Automatic analysis of the difference image for unsupervised change detection](https://doi.org/10.1109/36.843009) (IEEE Transactions on Geoscience and Remote Sensing, 2000). They modeled the changed and unchanged pixels as two distributions. They then chose the threshold that minimizes error, with no training labels. Bovolo and Bruzzone extended Malila's change vector analysis in [A theoretical framework for unsupervised change detection based on change vector analysis in the polar domain](https://doi.org/10.1109/TGRS.2006.885408) (2007). The magnitude of each change vector shows whether a pixel changed, and its direction shows the type of change.

### From image pairs to time series

Landsat data has been free since 2008, so researchers moved from two dates to every date. Zhe Zhu reviewed them in [Change detection using Landsat time series: A review of frequencies, preprocessing, algorithms, and applications](https://doi.org/10.1016/j.isprsjprs.2017.06.013) (ISPRS Journal of Photogrammetry and Remote Sensing, 2017). The review sorts the algorithms by what they fit to each pixel's history:

- **LandTrendr** comes from Kennedy, Yang, and Cohen's [Detecting trends in forest disturbance and recovery using yearly Landsat time series](https://doi.org/10.1016/j.rse.2010.07.008) (2010). It fits straight-line segments to one value per year, so a clear-cut reads as a drop and regrowth as a slow rise.
- **CCDC** (continuous change detection and classification) comes from Zhu and Woodcock's [Continuous change detection and classification of land cover using all available Landsat data](https://doi.org/10.1016/j.rse.2014.01.011) (2014). It fits harmonic seasonal models, smooth yearly curves built from sine waves, to every clear observation. It flags a break when new observations depart from the prediction.
- **BFAST**, covered above, tests each pixel's trend and seasonal parts for structural breaks.

All three model each pixel's seasonal cycle. A dry August that matches past Augusts then reads as normal.

### Deep learning and benchmarks

Labeled pairs made supervised models possible. Daudt, Le Saux, Boulch, and Gousseau trained convolutional networks on Sentinel-2 pairs in [Urban change detection for multispectral earth observation using convolutional neural networks](https://rcdaudt.github.io/publication/2018-08-22-urban-change-detection) (IGARSS 2018). LEVIR-CD and xBD then supplied the labeled building changes and damage grades that most models train and test on. Wenzhong Shi, Min Zhang, Rui Zhang, Shanxiong Chen, and Zhao Zhan wrote the review [Change detection based on artificial intelligence: State-of-the-art and challenges](https://doi.org/10.3390/rs12101688) (Remote Sensing, 2020). It names the main limit: labeled change is rare, local, and expensive to collect.

Foundation embeddings give a change score without labels. AlphaEarth Foundations builds each pixel's vector from optical, radar, elevation, and climate inputs. So the distance between two years' vectors is a change score that needs no training data.

### Burn severity

Key and Benson calibrated dNBR against field plots scored with the Composite Burn Index, a rating of fire effects observed on the ground. Miller and Thode's [relative dNBR](https://doi.org/10.1016/j.rse.2006.12.006) (Remote Sensing of Environment, 2007) divides dNBR by the square root of the absolute pre-fire NBR. With that change, sparsely vegetated land that burns completely scores as severe.

### Distributed spatial joins

Jia Yu, Jinxuan Wu, and Mohamed Sarwat introduced [GeoSpark](https://doi.org/10.1145/2820783.2820860) (ACM SIGSPATIAL 2015) to run spatial joins on Apache Spark. Yu, Zongsi Zhang, and Sarwat described its partitioning and indexing design in [Spatial data management in Apache Spark: the GeoSpark perspective and beyond](https://doi.org/10.1007/s10707-018-0330-9) (GeoInformatica, 2019). GeoSpark became Apache Sedona, which [added raster types and map algebra](https://wherobots.com/blog/introducing-sedona-1-5-making-sedona-the-most-comprehensive-scalable-spatial-data-processing-and-etl-engine-for-both-raster-and-vector-data/), pixel-by-pixel math on rasters. With them, a change raster and a building table join in one query. Yu and Sarwat went on to found Wherobots.

## What scale changes

A change map for one fire is a single raster subtraction. The same question for every fire, field, or parcel in a country, every five days, is a distributed join between a stack of rasters and millions of polygons. Scene selection, the comparison, and the join all change:

- **Scene selection becomes a query.** Picking a clear pre and post scene per tile, per event, is a filter and ranking over a SpatioTemporal Asset Catalog (STAC), the standard index of scenes and their files. It has to run without a person looking at thumbnails.
- **The comparison reads pixels in place.** Reading only the pixels inside each area of interest from COGs avoids downloading whole scenes.
- **Results join to the things people decide on.** A change raster becomes useful in [geospatial analysis](https://wherobots.com/discover/geospatial-analysis/) when it is summarized per building, parcel, lease, or road segment. That is a spatial join, and spatial joins at this size need the [spatial partitioning](https://wherobots.com/discover/partitioning-tax/) GeoSpark introduced.

## Open problems

- **Seasonality and phenology.** Vegetation changes every season. Image pairs need dates matched by season, and time series methods need enough clear observations to model the cycle.
- **Coregistration and resolution.** The half-pixel alignment of step 1 is harder to reach when the pair comes from different sensors or resolutions.
- **Semantics.** Most methods mark whether a pixel changed. Labeling what it changed into, and whether the change matters to a given user, still needs classification or a model trained for that question.

## Conclusions

The Palisades Fire query shows that a change detection result depends on clean inputs, stable dates, pixel size, and an accuracy check.

1. Change detection starts with alignment, correction, and masking, because errors there read as change. The SCL mask kept 81.9% of the Palisades pixels on both dates.
2. Choose a change detection method by the false alarm rate the user accepts. A threshold on a difference image fits a broad screen. A trained model fits a decision about one building.
3. Change detection results shift with the date chosen. Swapping the 12 January scene for 21 February moved moderate-low and worse by 69 ha (7,549 to 7,480) and the low class by 1,109 ha, so report moderate-low and worse.
4. A 20 m dNBR change map is a screen for building damage. 82.6% of the Palisades footprints are smaller than one pixel and the index reads vegetation, so damage per building needs sub-meter imagery and a model trained on labeled damage.
5. A pixel count from change detection can be a biased estimate of changed area. When the hectares matter, draw a reference sample and publish confidence intervals, as Olofsson and colleagues recommend.

## Related terms

- [Land cover classification](https://wherobots.com/discover/land-cover-classification/): the maps compared in post-classification change detection
- [Sentinel-2](https://wherobots.com/discover/sentinel-2/): the input used in this article, with a 5-day revisit
- [SAR data](https://wherobots.com/discover/synthetic-aperture-radar/): the all-weather source for change detection
- [Landsat](https://wherobots.com/discover/landsat/): the archive for multi-decade change
- [NDVI](https://wherobots.com/discover/ndvi/): the index most often differenced between dates
- [Satellite imagery analysis](https://wherobots.com/discover/satellite-imagery-analysis/): the wider set of methods change detection belongs to
- [Building footprint](https://wherobots.com/discover/building-footprint/): the polygons a change map is summarized over

## Read more from Wherobots

- [Change detection with RasterFlow](https://docs.wherobots.com/tutorials/example-notebooks/rasterflow-changedetection)
- [From the Spokane firestorm to all of Washington: real-time wildfire monitoring for under $50 a pass](https://wherobots.com/blog/spokane-fire-dnbr/)
- [Measuring the Strait of Hormuz shutdown with Sentinel-2, WherobotsDB and Overture Maps](https://wherobots.com/blog/hormuz-vessel-detection/)
- [RasterFlow is now available in Public Preview](https://wherobots.com/blog/rasterflow-public-preview-planetary-scale-earth-intelligence/)
- [Introducing Sedona 1.5: raster and vector data processing at scale](https://wherobots.com/blog/introducing-sedona-1-5-making-sedona-the-most-comprehensive-scalable-spatial-data-processing-and-etl-engine-for-both-raster-and-vector-data/)

Run change detection over Sentinel-2 with RasterFlow and WherobotsDB at [cloud.wherobots.com](https://cloud.wherobots.com).

## Frequently asked questions

### What are the main change detection methods?

The main change detection methods are image differencing, change vector analysis, post-classification comparison, and deep learning. Image differencing subtracts pixel or index values between dates. Change vector analysis measures how much and in which direction the values change across all bands. Post-classification comparison classifies each date and compares the labels. Deep learning networks, such as Siamese or temporal networks, output a change mask, a map of changed pixels, directly from an image stack.

### What data is needed for change detection?

Change detection needs at least two aligned images of the same area from different dates, ideally the same sensor and season, at surface reflectance level with cloud masks. Sentinel-2, Landsat, and Sentinel-1 SAR are the common open sources. Labeled change examples are needed only for supervised deep learning methods.

### What is the difference between change detection and object detection?

Object detection finds and labels things in a single image, such as buildings or vehicles. Change detection compares two or more images of the same place over time and reports what differs. Object detection can feed change detection when detections from each date are compared, but the two answer different questions.

### Can change detection be automated?

Yes, change detection is automated in production. A pipeline loads each new scene, aligns it, and masks clouds. It compares the scene with a baseline or the previous scene. It writes change polygons to a table or an alert feed. RasterFlow runs this as a job on Sentinel-2 mosaics with either a trained model or embedding distance.

### What is change detection?

Change detection is the process of comparing two or more images of the same place, taken at different times, to find where and how the surface has changed. In remote sensing it runs on satellite, aerial, or radar imagery and outputs a map of change, such as forest loss, new buildings, flooding, or a wildfire burn scar.

### What are the different types of change detection techniques?

Change detection techniques are grouped by what they compare. Categorical change compares two classified maps. Pixel value change, such as image differencing, compares values in one band or index. Spectral change, such as change vector analysis, compares many bands at once. Time series change, such as LandTrendr, CCDC, and BFAST, compares each image with a model of a whole stack. Deep learning models and embedding distance compare learned features instead of raw values.

### What is change detection in GIS?

Change detection in GIS is the comparison of raster or vector layers of one area across time to map what changed. Typical inputs are satellite images, land cover maps, or building footprints from two dates. The results are change rasters and polygons that join to parcels, roads, or administrative areas for reporting.

### How does change point detection work?

Change point detection finds the moments when the statistical properties of a time series shift. A method such as the CUSUM test, introduced by E. S. Page in 1954, accumulates small deviations from an expected value and signals a change when the sum crosses a limit. In remote sensing, BFAST and CCDC apply the same idea to each pixel’s history of observations.

### What are examples of change detection?

Well-known examples include the Global Forest Watch tree cover loss maps and weekly deforestation alerts. Well-known examples also include the US Monitoring Trends in Burn Severity program and building damage maps after hurricanes and earthquakes. Urban growth benchmarks such as LEVIR-CD are examples too, as is the Palisades Fire burn severity map in this article.

### What is dNBR?

dNBR, the differenced Normalized Burn Ratio, is the pre-fire NBR minus the post-fire NBR, where NBR compares near-infrared and shortwave infrared reflectance. Healthy vegetation is bright in near-infrared and dark in shortwave infrared, and burning reverses that, so higher dNBR means more severe burn. Key and Benson’s thresholds start at 0.10 for low severity and 0.66 for high.
