Medical & Scientific Vision

Change Detection

Finding where the Earth's surface changed between co-registered images taken at different dates; the preprocessing it depends on (co-registration and radiometric normalization), classical methods from image differencing and ratioing to change vector analysis, MAD and post-classification comparison, Siamese and other learned networks, and benchmarks such as OSCD, LEVIR-CD, HRSCD and xBD with their protocols.

intermediate

Change detection compares images of the same place taken at different times and marks where something changed: a field cleared, a building put up, a flood spread, a roof destroyed. In the formulation of Caye Daudt, Le Saux and Boulch (2018), a change detection system assigns a label to each pixel from a pair or a sequence of co-registered images of a region, and a positive label means that the area under the pixel changed between acquisitions. What counts as change depends on the application: vegetation, urban growth, the melting of polar ice. For computer vision it is a dense prediction problem like semantic segmentation, with two inputs instead of one. What makes it hard is that almost everything differs between two satellite images taken months apart, the sun, the atmosphere, the season, the sensor’s exact position, and nearly all of those differences are not the change the user wants. This article covers change detection in Earth observation. Remote sensing introduces the field and its data; land cover classification covers the maps that change detection often compares and the statistics of map accuracy; image registration covers the alignment that every method here assumes. Detecting moving objects against a static background in video, sometimes also called change detection, is a different problem, more often called background subtraction.

Problem Definition

Let X1X_1 and X2X_2 be two co-registered multispectral images of size I×JI \times J, acquired over the same area at times t1t_1 and t2t_2. Bovolo and Bruzzone, in the technical report that preceded their 2007 journal paper, write the classes to be found as {ωn,Ωc}\{\omega_n, \Omega_c\}: ωn\omega_n is the class of unchanged pixels and Ωc={ωc1,…,ωcK}\Omega_c = \{\omega_{c_1}, \ldots, \omega_{c_K}\} the set of KK kinds of change that occurred. Binary change detection merges all kinds of change into one class; other variants keep them apart.

The definition of change is part of the problem, not a given. The Onera Satellite Change Detection (OSCD) dataset labels only urban growth and urban changes and ignores natural changes such as vegetation growth or sea tides (Caye Daudt, Le Saux, Boulch and Gousseau, 2018). LEVIR-CD labels building growth, meaning a change from soil, grass, hardened ground or a building under construction to a new built-up region, and building decline. Its authors chose images from different seasons and with different illumination on purpose, so that methods must learn to ignore those differences (LEVIR-CD page). Lebedev et al. (2018) count only objects that appear or disappear, not seasonal changes of objects or brightness variations. A method that reports every difference between two images therefore solves a different problem from one trained on any of these datasets.

Change is also rare. OSCD’s images contain many times more unchanged pixels than changed ones, because Sentinel-2 imagery reaches back only to June 2015 and the pairs span at most about two and a half years (Caye Daudt, Le Saux, Boulch and Gousseau, 2018). In HRSCD, 99.232% of all pixels are unchanged (Caye Daudt et al., 2019).

Input and Output

The input is two or more images of one area: optical multispectral images from satellites such as Sentinel-2 or Landsat, very high-resolution aerial or satellite RGB images, synthetic aperture radar images, or long time series. The outputs take several forms:

  • A change map: one binary label per pixel, as in OSCD and LEVIR-CD.
  • A change magnitude or probability map, which a threshold turns into a change map. Caye Daudt, Le Saux, Boulch and Gousseau (2018) note that a network’s change probability can be thresholded at values other than 0.5 when false positives and false negatives have different costs.
  • A from–to map, which gives the class at each date for changed pixels. HRSCD provides land cover maps for both dates and pixel-wise change labels (Caye Daudt et al., 2019).
  • Object-level assessments, such as building polygons with a damage grade. xBD labels buildings on a four-level Joint Damage Scale from no damage (0) to destroyed (3) (Gupta et al., 2019).
  • Change dates in a time series: BFAST, according to its abstract, estimates the time and number of changes in a series and characterizes each by its magnitude and direction (Verbesselt et al., 2010).

Variants

  • Binary, semantic and damage assessment. Binary methods answer where; semantic ones also answer from what to what, and Caye Daudt et al. (2019) describe HRSCD as the first large-scale, very high-resolution dataset for semantic change detection. Damage assessment grades objects, as in xBD, which also labels the causes of damage, such as fire, water and wind (Gupta et al., 2019).
  • Time series. With revisits of a few days, methods can look at a whole series instead of a pair. The BFAST abstract states the motivation: many change detection methods fail on series dominated by seasonal variation, so BFAST decomposes each series into trend, seasonal and remainder components, reading changes in the trend as disturbances such as fire or insect attack and changes in the seasonal component as phenological changes, such as a change of land cover type (Verbesselt et al., 2010).
  • Radar. Meyer (2019) groups SAR change detection by the information it uses. Amplitude-based methods can use every acquisition but have limited sensitivity, so they tend to miss changes. Coherence-based methods exploit the drop in interferometric coherence that significant surface change causes; they are highly sensitive but tend to have very large false-positive rates. Polarimetric methods can relate a change to a scattering mechanism, such as double bounce or volume scattering, but need multi-polarization data. Synthetic aperture radar explains coherence and polarimetry.
  • Supervised and unsupervised. Unsupervised methods compare the images with a similarity measure and threshold the result; supervised methods train a classifier on labelled examples (Meyer, 2019). Meyer notes that unsupervised methods suit hazard monitoring, where changes are unanticipated and training data are rarely available in time, while supervised methods depend on reference data that are hard to come by and seldom free of errors.
  • Pixel-based and object-based. Lebedev et al. (2018), following a review by Hussain et al. (2013), divide methods into pixel-based and object-based change detection; the object-based family compares segmented objects by their geometry, spectra, texture or class labels.

Challenges

  • Nuisance change. Illumination, atmosphere, season and viewing geometry change pixel values without any change on the ground. Chen and Shi (2020), in their abstract, put it strongly: illumination variations and misregistration errors overwhelm the real object changes.
  • Misregistration. Edges that do not line up look like change, as the preprocessing section and the example below show.
  • Labels. Annotating change is slow, and labels taken from maps carry the maps’ errors. Caye Daudt, Le Saux, Boulch and Gousseau (2018) tried to derive OSCD’s labels from OpenStreetMap at two dates and abandoned the idea: most differences between the maps were features added to the map, not built in the interval, and older map versions could not be dated precisely. They also note that at Sentinel-2’s resolution small buildings, extensions and added road lanes may not be visible, so even analysts’ change maps may differ. HRSCD’s labels come from the Urban Atlas maps, for which the European Environment Agency guarantees a minimum accuracy of 80–85% depending on the class; labels were given to whole map regions, which gives inaccurate borders in places (Caye Daudt et al., 2019).
  • Resolution. Whether a change is visible at all depends on the pixel size: a building 20 m across spans 40 pixels at 0.5 m and 2 pixels at 10 m.

Preprocessing

Co-registration

Every pixel-wise comparison assumes that a pixel shows the same ground at both dates. Operators register their products to a reference: Sentinel-2’s Level-1C requirement is a multi-temporal co-registration accuracy of 0.3 pixels or better at the 2σ confidence level. Products distributed since 23 August 2021 have been geometrically refined against a Global Reference Image worldwide, which ESA says has significantly improved their multi-temporal co-registration (ESA SentiWiki, as of October 2026). Dataset builders sometimes go further. For OSCD, Caye Daudt, Le Saux, Boulch and Gousseau (2018) registered each newer image to the older one with the GEFolki toolbox, more precisely than Sentinel-2’s own registration. The methods behind such tools, from feature matching to dense optical flow, are those of image registration.

How precise is precise enough? Townshend et al. (1992), according to their abstract, misregistered spatially degraded Landsat MSS images of the normalized difference vegetation index (NDVI) against themselves and found marked spurious differences even for subpixel errors. For four densely vegetated areas, a misregistration of one pixel produced an error greater than 50% of the actual NDVI differences between dates, measured by the semivariance, and keeping the error to 10% required registration to 0.2 pixels or better. For three sparsely vegetated semi-arid areas, 0.5 to 1 pixel sufficed. The dependence on landscape follows from where the false differences arise: at edges between contrasting surfaces, which dense, fine-grained landscapes have more of (our reasoning).

Residual misregistration also has a signature. In Bovolo and Bruzzone’s experiments on two Landsat-5 TM images of Lake Mulargia in Sardinia, a residual shift of 2 pixels spread the distribution of unchanged change vectors and produced unchanged pixels with large change magnitudes in all directions, caused by comparing pixels across borders and details. Because true changes cluster in particular directions, they suggest using the direction as well as the magnitude to reduce false alarms from registration noise (Bovolo and Bruzzone, technical report).

Radiometric normalization

The second requirement is that equal ground gives equal values at both dates. Absolute correction converts both images to surface reflectance, which needs an atmospheric correction and the atmospheric state at each acquisition; operators provide such products, as remote sensing describes for Sentinel-2’s Level-2A. Canty, Nielsen and Schmidt (2004) point out that for historical scenes such data are often unavailable, and that a relative normalization based on the images themselves is an alternative whenever absolute values are not needed, as in change detection. Relative methods assume that the radiances recorded at two dates from regions of constant reflectance are related by a spatially homogeneous, approximately linear function. The hardest part is finding those time-invariant pixels. Canty, Nielsen and Schmidt select them automatically with the MAD transformation described below, fit the linear relation by orthogonal regression, and report results that compare favourably with normalization from hand-picked invariant features on Landsat TM, Landsat ETM+ and SPOT HRV images. A simpler relative method maps one image’s histogram onto the other’s, band by band, which histogram matching describes. It assumes that the two scenes have the same distribution of surfaces, which real change violates (our reasoning).

How much normalization matters depends on the data. In Bovolo and Bruzzone’s Lake Mulargia experiment, thresholding the change vector magnitude at its error-minimizing value gave 1,803 erroneous pixels without radiometric correction and 704 after a simple adjustment of the image means (their Table 4; the technical report’s text swaps the false and missed alarm counts relative to the table). Their analysis explains why an uncorrected offset hurts: it shifts the unchanged class away from the origin, and because the magnitude is a non-linear function of the change vector, unchanged pixels gain magnitude while some changed pixels lose it, so the classes overlap more. Sentinel-2’s requirement for multi-temporal relative radiometric uncertainty is 1% (ESA SentiWiki, as of October 2026), but clouds, haze, shadows and seasonal differences remain, and cloud and shadow masks are imperfect, as remote sensing describes.

Approaches

Caye Daudt, Le Saux and Boulch (2018) summarize the field’s history as following image analysis in general: pixels were first compared with hand-crafted techniques, then descriptors were combined with simple machine learning, and deep learning was reaching change detection only slowly, with most early methods relying on transfer learning because labelled data were scarce.

Differencing, ratioing and thresholding

The simplest comparisons are the image difference and the image ratio (Lebedev et al., 2018). For one band bb,

Db=Xb,2−Xb,1,Rb=log⁡Xb,2Xb,1,D_b = X_{b,2} - X_{b,1}, \qquad R_b = \log \frac{X_{b,2}}{X_{b,1}},

and pixels with large ∣Db∣|D_b| or ∣Rb∣|R_b| are declared changed. Image regression, a related technique, represents the second image as a linear function of the first (Lebedev et al., 2018). Nielsen (2007) adds the condition that makes differencing work: simple differences make sense only if the data are normalized to a common zero and scale or calibrated over time. The ratio cancels a common multiplicative factor, which is why the log-ratio suits SAR, where speckle multiplies the reflectivity (our reasoning from the multiplicative speckle model that synthetic aperture radar describes). It is unstable for dark surfaces, where small noise produces large ratios, as the example shows. In the OSCD paper, image differencing, the log-ratio and a generalized likelihood ratio test serve as baselines; all three reached an overall accuracy of about 76% with change-class accuracies of 60–63%, against 75–86% for every network the authors trained (Caye Daudt, Le Saux, Boulch and Gousseau, 2018, Table 1).

The difference image still has to be cut into changed and unchanged pixels. Bruzzone and Prieto (2000) note in their abstract that this was usually done empirically or by manual trial and error. They proposed choosing the threshold that minimizes the overall error probability under the Bayes rule, with the class distributions estimated without labels by the expectation–maximization algorithm, and a second technique that uses a Markov random field to bring in the labels of neighbouring pixels. Meyer (2019) lists their method together with Otsu’s histogram threshold, which thresholding describes and the example uses.

Change vector analysis

Change vector analysis (CVA) applies differencing to all bands at once. The difference of the two pixel vectors, XD=X2−X1X_D = X_2 - X_1, is the spectral change vector, and its length and direction describe the change. Malila’s 1980 paper, whose abstract describes the calculation of spectral change vectors from two dates as the origin of the method’s name, mapped forest harvesting and regrowth in northern Idaho from Landsat data. Bovolo and Bruzzone credit Malila with first formulating the change vector and with using both magnitude and direction in a two-dimensional space. With two bands, the polar representation is

ρ=X1,D2+X2,D2,ϑ=tan⁡−1 ⁣(X1,DX2,D),\rho = \sqrt{X_{1,D}^2 + X_{2,D}^2}, \qquad \vartheta = \tan^{-1}\!\left(\frac{X_{1,D}}{X_{2,D}}\right),

where Xb,DX_{b,D} is the change in band bb, as Bovolo and Bruzzone print it in their equation (3). Their general BB-band relations, which set X1,D=ρcos⁡ϑ1X_{1,D} = \rho\cos\vartheta_1, imply the reciprocal ratio instead; either convention describes direction if it is used consistently, and covering the full range [0,2π)[0, 2\pi) that they give for the angle needs a two-argument arctangent (our reading). With BB bands, the vector has a magnitude and B−1B - 1 angles. A threshold TT on the magnitude divides the polar domain into a circle of unchanged pixels, ρ<T\rho < T, and an annulus of changed pixels; within the annulus, sectors of direction separate kinds of change. With a single band, CVA reduces to univariate image differencing.

Bovolo and Bruzzone analyse the distributions under simplifying assumptions. If the images are radiometrically corrected, so that the change vectors of unchanged pixels have zero mean, and the bands have similar noise and are independent, the magnitude of unchanged pixels follows a Rayleigh distribution and their direction is uniform. Changed pixels have a non-zero mean change, so their magnitude follows a Rice distribution and their direction clusters around the direction of the change. On Lake Mulargia, thresholds derived from the Rayleigh and Rice models gave fewer errors than thresholds from Gaussian models (956 against 1,143 pixels).

Transformations: principal components and MAD

With many bands, one can look for the directions in which the images differ most. Principal components can be computed from the difference images or from the two images stacked into one vector; both approaches require normalized or calibrated data, depend on the scale of each band and force the two dates to use the same coefficients (Nielsen, 2007). Principal component analysis describes the transform.

The multivariate alteration detection (MAD) transformation of Nielsen and colleagues instead finds separate linear combinations U=a⊤X1U = a^\top X_1 and V=b⊤X2V = b^\top X_2 by canonical correlation analysis and takes their differences. Canty, Nielsen and Schmidt (2004) state the criterion: maximize Var⁡(U−V)\operatorname{Var}(U - V) subject to Var⁡(U)=Var⁡(V)=1\operatorname{Var}(U) = \operatorname{Var}(V) = 1 and a positive covariance, so that Var⁡(U−V)=2(1−ρUV)\operatorname{Var}(U - V) = 2(1 - \rho_{UV}) with ρUV\rho_{UV} the correlation of UU and VV. Successive pairs give mutually uncorrelated difference images, and the last has the largest variance and, ideally, the most change information. Their key property is invariance: the MAD variates do not change under separate affine transformations of either image, such as a different gain and offset of the sensor or a linear atmospheric correction (Nielsen, 2007). For a pixel without change, each MAD variate has mean zero, so the sum of the pp squared, standardized variates approximately follows a χ2\chi^2 distribution with pp degrees of freedom, which gives a probability of no change and thresholds from its percentiles. Iteratively reweighted MAD (IR-MAD) repeats the transformation with each pixel weighted by that probability, building an increasingly clean no-change background; Nielsen (2007) likens the scheme to boosting and adds regularization for hyperspectral data. Because MAD is invariant to linear scaling, normalization before it is superfluous (Canty, Nielsen and Schmidt, 2004). MAD can also compare images whose bands differ, such as Landsat MSS and TM, though Nielsen cautions that a multivariate difference is then harder to interpret as change.

Post-classification comparison

Post-classification comparison classifies each date separately with a land cover classifier and compares the labels. It gives from–to changes directly, and the two dates need not be radiometrically comparable (our reasoning). Its weakness is that classification errors at either date pass into the change map (Lebedev et al., 2018). Because change is rare, the apparent change between two accurate maps can be mostly map error, as the FAO guide on map accuracy warns for forest monitoring (Finegold et al., 2016); land cover classification gives its example.

HRSCD gives a measured example. Caye Daudt et al. (2019) trained a land cover network on their 50 cm images and compared its maps of the two dates (their Strategy 1). The land cover maps reached a kappa of 71.92% and a total accuracy of 87.22%, but the resulting change detection had a kappa of only 3.99% and a Dice coefficient of 5.56%, which the authors describe as marginally better than chance. An integrated network that predicts land cover and change together, trained in sequence (Strategy 4.2), reached a change kappa of 25.49% and a Dice coefficient of 26.33% while keeping the land cover accuracy (Table 6). A network predicting the change type directly (Strategy 2) learned to predict the same type of change wherever changes occurred, defeated by the class imbalance despite class weights.

Learned methods: early fusion and Siamese networks

Supervised networks for change detection take two images and predict a change map, and the main design question is where the two images meet. The OSCD paper compared two patch-based designs inspired by Zagoruyko and Komodakis’s networks for comparing image patches. Early Fusion (EF) concatenates the two 15×1515 \times 15-pixel patches as channels of one input and classifies the change at the central pixel. The Siamese design processes each patch in a branch of four convolutional layers with shared weights and concatenates the outputs before two fully connected layers. Both were trained from scratch on OSCD, with class weights inversely proportional to class frequency and augmentation by flips and 90° rotations, and EF networks tended to perform better than their Siamese counterparts (Caye Daudt, Le Saux, Boulch and Gousseau, 2018).

The name comes from Bromley et al. (1993), whose “Siamese” network for signature verification consists of two identical sub-networks joined at their outputs, with a final neuron measuring the distance between the two feature vectors. Shared weights guarantee that both images are mapped by the same function, so their features are comparable; metric learning describes how such networks are trained to compare.

The fully convolutional follow-up turned the patch classifiers into encoder–decoders with U-Net skip connections that predict every pixel at once (Caye Daudt, Le Saux and Boulch, 2018). FC-EF is a shallower U-Net with four pooling steps on the concatenated pair. The two Siamese versions split the encoder into two streams with shared weights and differ only in their skip connections: FC-Siam-conc concatenates the skip features of both streams, and FC-Siam-diff concatenates the absolute value of their difference, building the comparison into the architecture. On OSCD with all 13 bands, F1 scores for the change class were 56.91% (FC-EF), 51.36% (FC-Siam-conc) and 57.92% (FC-Siam-diff), against 37.69% and 42.48% for the patch-based Siamese and EF networks, whose recall was high but precision low (Table 1). Inference took under 0.1 s per image, against several minutes for the patch-based voting scheme. A later version of FC-EF with residual blocks reached a Dice coefficient, the same quantity as F1 for binary labels, of 60.15% with 13 bands and 59.20% with RGB alone (Caye Daudt et al., 2019, Table 5). The ICIP table and the OSCD paper’s table give different figures for the 3-channel patch-based Siamese network: 79.40% recall and 76.76% global accuracy in the first, 78.57% change accuracy and 84.13% accuracy in the second; the other rows they share agree.

Later networks model the relation between the dates more richly. STANet, according to its abstract, adds a self-attention module that computes attention weights between pixels at different times and positions, within subregions at several scales; the abstract reports that the module raises its baseline’s F1 score from 83.9 to 87.3 but does not name the dataset (Chen and Shi, 2020). Self-attention describes the mechanism. The same group followed with a transformer-based model (Chen, Qi and Shi, 2022). Lebedev et al. (2018) framed change detection as image-to-image translation, training a conditional adversarial network based on pix2pix to produce the change map from the pair.

Example: Differencing and Change Vectors under Misregistration

The script builds a synthetic four-band scene at two dates with known changes, then detects them by differencing the near-infrared band, by its log-ratio and by the change vector magnitude over all four bands, each thresholded with Otsu’s method. It compares the raw pair with a radiometrically normalized one and then shifts the second image by a fraction of a pixel.

The scene has 256 × 256 pixels with Voronoi regions of vegetation, bare soil, water and built-up land and a grid of roads. Band values are illustrative reflectances for blue, green, red and near infrared, not measured spectra. Each region carries its own spectral offset and the whole scene a fine texture, both identical at the two dates, so that detail exists inside regions as well as at their borders. At the second date three vegetation regions are cleared to bare soil and 25 buildings of 6 × 6 pixels appear; the ground truth is every pixel whose class changed. The second image also has a different gain and offset in each band, standing for illumination and atmosphere. Misregistration is simulated by shifting the noise-free second scene along xx with bilinear interpolation before independent noise is added to each date; the ground truth stays on the first image’s grid. Relative normalization fits a least-squares line between the two images in each band, over all pixels, and maps the second image onto the first image’s scale. A false change counts as “at edge” when it lies within one pixel of a class boundary in the first date’s map. All parameters were fixed before the first run, including one safeguard: the near-infrared values are clipped below at 0.001 for the ratio, because water pixels plus noise can be negative. The script below is the first run unchanged. It runs in about a second with NumPy 2.3.5, SciPy 1.16.3 and scikit-image 0.25.2, and two runs gave identical output.

import sys
import numpy as np
from scipy import ndimage as ndi
from skimage.filters import threshold_otsu

seed = int(sys.argv[1]) if len(sys.argv) > 1 else 0
rng = np.random.default_rng(seed)
H = W = 256
# illustrative reflectances (blue, green, red, NIR): vegetation, soil, water, built
MEANS = np.array([[0.04, 0.08, 0.05, 0.40], [0.12, 0.16, 0.20, 0.28],
                  [0.06, 0.05, 0.03, 0.02], [0.18, 0.18, 0.19, 0.22]])
VEG, SOIL, WATER, BUILT = range(4)

# t1 land cover: Voronoi regions plus a road grid
seeds = rng.uniform(0, H, size=(60, 2))
yy, xx = np.mgrid[0:H, 0:W]
d2 = (yy[..., None] - seeds[:, 0]) ** 2 + (xx[..., None] - seeds[:, 1]) ** 2
region = d2.argmin(axis=2)
region_class = rng.choice(4, size=60, p=[0.45, 0.30, 0.10, 0.15])
cls1 = region_class[region]
cls1[(yy % 64 < 2) | (xx % 64 < 2)] = BUILT

# t2: clear three vegetation regions, add 25 buildings of 6 x 6 pixels
cls2 = cls1.copy()
for r in rng.choice(np.flatnonzero(region_class == VEG), size=3, replace=False):
    cls2[(region == r) & (cls1 == VEG)] = SOIL
placed = 0
while placed < 25:
    y, x = rng.integers(0, H - 6, size=2)
    if np.all(np.isin(cls2[y:y + 6, x:x + 6], [VEG, SOIL])):
        cls2[y:y + 6, x:x + 6] = BUILT
        placed += 1
truth = cls1 != cls2

# persistent detail shared by both dates: per-region offsets and fine texture
offset = rng.normal(0, 0.015, size=(60, 4))[region]
tex = ndi.gaussian_filter(rng.normal(size=(H, W, 4)), sigma=(1.5, 1.5, 0))
tex *= 0.02 / tex.std()
scene1 = MEANS[cls1] + offset + tex
scene2 = MEANS[cls2] + offset + tex
gain = np.array([0.92, 0.95, 0.97, 1.08])
bias = np.array([0.02, 0.015, 0.01, -0.01])
noise1 = rng.normal(0, 0.01, size=(H, W, 4))
noise2 = rng.normal(0, 0.01, size=(H, W, 4))
img1 = scene1 + noise1

edge = ndi.maximum_filter(cls1, size=3) != ndi.minimum_filter(cls1, size=3)

def normalize(a, b):
    """Fit b = c0 + c1 * a per band by least squares; map b onto a's scale."""
    out = np.empty_like(b)
    for k in range(a.shape[2]):
        c1, c0 = np.polyfit(a[..., k].ravel(), b[..., k].ravel(), 1)
        out[..., k] = (b[..., k] - c0) / c1
    return out

def score(magnitude):
    pred = magnitude > threshold_otsu(magnitude)
    tp = np.sum(pred & truth)
    fp = pred & ~truth
    p, r = tp / pred.sum(), tp / truth.sum()
    return p, r, 2 * p * r / (p + r), fp.sum(), np.sum(fp & edge) / max(fp.sum(), 1)

print(f"changed pixels: {truth.sum()} ({100 * truth.mean():.1f}% of the scene)")
print(f"{'condition':<22}{'method':<7}{'prec':>6}{'rec':>6}{'F1':>6}{'false':>7}{'at edge':>9}")
for name, shift, norm in [("aligned, raw", 0.0, False), ("aligned, normalized", 0.0, True),
                          ("shift 0.25 px, norm.", 0.25, True), ("shift 0.5 px, norm.", 0.5, True),
                          ("shift 1.0 px, norm.", 1.0, True)]:
    moved = ndi.shift(scene2, (0, shift, 0), order=1, mode="nearest")
    img2 = gain * moved + bias + noise2
    if norm:
        img2 = normalize(img1, img2)
    methods = {"diff": np.abs(img2[..., 3] - img1[..., 3]),
               "ratio": np.abs(np.log(np.clip(img2[..., 3], 1e-3, None)
                                      / np.clip(img1[..., 3], 1e-3, None))),
               "CVA": np.linalg.norm(img2 - img1, axis=2)}
    for m, mag in methods.items():
        p, r, f1, nfp, at_edge = score(mag)
        print(f"{name:<22}{m:<7}{p:6.2f}{r:6.2f}{f1:6.2f}{nfp:7d}{100 * at_edge:8.0f}%")
changed pixels: 4273 (6.5% of the scene)
condition             method   prec   rec    F1  false  at edge
aligned, raw          diff     0.99  0.92  0.95     32      16%
aligned, raw          ratio    0.00  0.00   nan   1670      17%
aligned, raw          CVA      1.00  0.90  0.94      0       0%
aligned, normalized   diff     1.00  0.92  0.96      6      17%
aligned, normalized   ratio    0.00  0.00   nan   1799      16%
aligned, normalized   CVA      1.00  0.90  0.95      0       0%
shift 0.25 px, norm.  diff     0.91  0.92  0.91    409      97%
shift 0.25 px, norm.  ratio    0.00  0.00   nan   2157      20%
shift 0.25 px, norm.  CVA      1.00  0.90  0.94      5     100%
shift 0.5 px, norm.   diff     0.68  0.92  0.78   1842      97%
shift 0.5 px, norm.   ratio    0.00  0.00  0.00   2578      21%
shift 0.5 px, norm.   CVA      0.68  0.89  0.77   1799      98%
shift 1.0 px, norm.   diff     0.61  0.82  0.70   2226      97%
shift 1.0 px, norm.   ratio    0.00  0.00  0.00   3535      28%
shift 1.0 px, norm.   CVA      0.63  0.88  0.74   2169      98%

NumPy also prints a warning on standard error for the rows marked nan, where precision and recall are both zero and F1 is 0/0.

Aligned images are easy. With perfect alignment, differencing and CVA find about nine in ten changed pixels with almost no false alarms, because the changes in this scene are large compared with the noise. Radiometric normalization changes little here: the gains and offsets, at most 8% and 0.02 reflectance, are small compared with the changes, and Otsu’s method places its threshold from each image’s own histogram, which absorbs a small uniform shift (our reasoning). That is a property of this scene, not a general result; Bovolo and Bruzzone’s Landsat example, described above, more than halved its errors with a mean adjustment.

The ratio fails on dark pixels. Nearly every pixel the ratio flags is a false change, at every alignment, and recall rounds to zero. Water has a near-infrared reflectance of about 0.02 in this scene, comparable to the noise, so the ratio of two water pixels swings over orders of magnitude, and clipped values push it further. Otsu’s threshold then separates this tail from everything else, and almost no true change exceeds it (our reasoning from the setup; the recall shows how few true changes were flagged). On real data, the same failure appears wherever the signal is near the noise floor, such as water and deep shadow in the near infrared, and masking those surfaces or using a difference avoids it (our reasoning).

A quarter of a pixel is enough to create false change. Shifting the second image by 0.25 pixels adds about 400 false changes to the differencing map, and by half a pixel about 1,800 to both maps, almost all of them within one pixel of a class boundary. With bilinear interpolation, a subpixel shift of ss pixels changes an edge pixel by ss times the contrast across the edge, so false changes appear where the strongest edges, such as vegetation against water in the near infrared, multiplied by ss, exceed the threshold that real changes set (our reasoning). CVA tolerates the quarter-pixel shift here because its threshold sits higher relative to the strongest edges: the changes in this scene alter the visible bands as well as the near infrared, so their change vectors are longer than their near-infrared differences and Otsu’s threshold rises, while the strongest edges, vegetation against water, differ mainly in the near infrared (our reasoning from the class means). At one pixel, recall also drops for differencing, partly because the true change regions have moved off the ground-truth grid and partly because the false changes enter the histogram and raise Otsu’s threshold (our reasoning). The share of false changes at edges, about 97%, is the practical diagnostic: a change map whose detections trace the outlines of stable objects points to misregistration rather than change. The script takes the seed as an argument; seeds 0 to 4 were run. Across them, aligned and normalized CVA gave F1 scores of 0.90 to 0.97, at 0.5 pixel 0.70 to 0.82; the quarter-pixel shift gave 171 to 506 false changes for differencing and 0 to 5 for CVA; and wherever differencing or CVA produced false changes on a shifted pair, at least 92% of them lay at edges.

Datasets and Benchmarks

Dataset Year Imagery Size Labels
Air Change 2009 Aerial RGB 13 image pairs in three regions Binary change
OSCD 2018 Sentinel-2, 13 bands at 10–60 m 24 pairs of about 600 × 600 pixels at 10 m, 2015–2018 Binary urban change
Lebedev et al. season-varying set 2018 Google Earth, 3–100 cm per pixel 7 pairs of 4725 × 2700 pixels and 4 pairs with added objects; 16,000 crops of 256 × 256 Binary object change, seasons ignored
LEVIR-CD 2020 Google Earth, 0.5 m 637 pairs of 1024 × 1024 pixels, 2002–2018 Binary building change; 31,333 changed buildings
HRSCD 2019 IGN BD ORTHO aerial RGB, 50 cm 291 pairs of 10,000 × 10,000 pixels, 2005 or 2006 and 2012 Change and land cover at both dates (Urban Atlas)
xBD 2019 DigitalGlobe, about 0.5 m, 3, 4 or 8 bands about 700,000 buildings over more than 5,000 km² in 15 countries Building polygons, four damage levels, causes

Air Change is described in the HRSCD paper as 13 aerial image pairs in three regions, created by Benedek and Szirányi in 2009 (Caye Daudt et al., 2019). In their ICIP paper, Caye Daudt, Le Saux and Boulch (2018) followed an earlier protocol: the top-left 748 × 448 rectangles of the Szada/1 and Tiszadob/3 images were held out for testing, each location was treated as a separate dataset, and the single “Archieve” pair was left out.

OSCD has 24 pairs from Sentinel-2, taken between 2015 and 2018 in Brazil, the USA, Europe, the Middle East and Asia, with pixel-level labels for 14 training and 10 test pairs (OSCD page). The test labels were first withheld for evaluation on the IEEE GRSS DASE website and are now openly available, as the page says (as of October 2026). The labels were made by comparing true-colour images of each pair. In the authors’ experiments the bands coarser than 10 m were upsampled to 10 m, and the change classes were weighted against the dominant no-change class (Caye Daudt, Le Saux, Boulch and Gousseau, 2018). The paper’s abstract calls the images aerial, while its text describes them as Sentinel-2 satellite images.

LEVIR-CD covers 20 regions in several cities in Texas, with pairs spanning 5 to 14 years. Experts in image interpretation labelled each pair, and a second annotator checked every label. The images and annotations may be used for academic purposes only, with commercial use prohibited, and Google Earth’s terms of use apply (LEVIR-CD page, as of October 2026). The STANet README describes the download as divided into training, validation and test folders and says that the authors cut each 1024 × 1024 image into non-overlapping 256 × 256 patches for their paper. The patch size and the split are therefore part of the protocol that a result on LEVIR-CD should state (our reading). In 2023 the authors added geographic coordinates for each sample (LEVIR-CD page).

Lebedev et al. (2018) built their real-image set from seven season-varying Google Earth pairs with hand-made labels and four pairs with minimal change into which objects were added by hand, cropping randomly rotated 256 × 256 fragments that contain at least part of a target object. The paper gives 16,000 image sets, of which 10,000 are for training and 3,000 for testing and validation, numbers that add up only if 3,000 each are meant. The authors also generated 12,000 synthetic image triples without object shifts and 12,000 with shifts of up to 5 pixels, a controlled way to train for the misregistration the example above shows.

HRSCD uses orthorectified IGN aerial images of the regions around Rennes and Caen and labels from the Urban Atlas maps of 2006 and 2012, restricted to images within a year of the maps’ dates. At the coarsest level of the Urban Atlas hierarchy the land cover classes are artificial surfaces, agricultural areas, forests, wetlands and water. The authors split the pairs into 146 for training and 145 for testing, so that no test pixel is seen in training. The IGN images are free for research, but the 2005 and 2006 images may not be redistributed, so users download those from IGN (Caye Daudt et al., 2019).

xBD was introduced with the xView 2 challenge. Its preliminary report describes imagery of 22 disasters across 15 countries, a Joint Damage Scale built mainly on FEMA’s HAZUS and Damage Assessment Operations Manual, the Kelman scale and EMS-98. The authors stress that the scale is not an authoritative damage rating, because on-the-ground assessment judges a building’s function rather than its appearance from above. For the challenge, the inference images were to be degraded in resolution at random and models restricted to CPU inference with a time limit per image (Gupta et al., 2019). The figures in the table are the report’s targets, published before data collection had ended.

Evaluation Metrics

Pixel-level change detection is scored as a binary segmentation of the change class: precision and recall of the change class and their harmonic mean, the F1 score, as in the fully convolutional paper’s Table 1, or the Dice coefficient, which equals F1 for binary labels, and intersection over union. The OSCD paper reported per-class accuracy instead, where the “change accuracy” is the recall of the change class. Overall accuracy is misleading because unchanged pixels dominate: on HRSCD it virtually only reflects how many unchanged pixels were classified correctly, and the authors use Cohen’s kappa and the Dice coefficient instead (Caye Daudt et al., 2019). The fully convolutional paper’s table illustrates the difference: its fully convolutional networks score above 93% in global accuracy on OSCD while their change-class F1 scores lie between 45% and 58%.

Object-level scoring matches predicted and reference change regions. Lebedev et al. (2018) extracted connected regions from both maps, counted a region as detected when its IoU exceeded a threshold, and averaged precision and recall over the test set; because their network detected small objects poorly, they excluded objects smaller than 500 pixels, which raised precision and recall at an IoU threshold of 0.5 from 0.26 and 0.32 to 0.72 and 0.65. The xBD challenge metric combines localization, damage regression and classification, weighting localization low, since localizing buildings is the easier part (Gupta et al., 2019).

Scores on a benchmark are not the accuracy of a change map over a region. For a map used in reporting, such as forest loss, the FAO guide assesses change as its own class, with a stratified sample that includes a change stratum (Finegold et al., 2016); the error matrix, user’s and producer’s accuracy and area estimation from such samples are described in land cover classification. Spatial autocorrelation, also described there, affects change detection splits as well: patches cut from the same image pair share acquisition conditions, and HRSCD’s split by whole image pairs is one way to keep test pixels unseen.

Applications

The OSCD paper names building evolution maps of land cover, urban expansion and deforestation as the purpose of change detection (Caye Daudt, Le Saux, Boulch and Gousseau, 2018). Damage assessment after disasters is the purpose of xBD, whose authors note that sending people into post-disaster areas is dangerous and costly, so assessment from satellite images saves manpower, lowers risk and speeds up the process (Gupta et al., 2019). Forest monitoring and the forest change estimates that countries report rely on change detection and on the design-based accuracy assessment described above (Finegold et al., 2016). Unsupervised radar change detection suits hazard monitoring, where changes are unanticipated (Meyer, 2019). Map updating is another use: land cover inventories such as CORINE publish change layers between editions, which land cover classification describes.

Open Problems

  • Labels. Change labels are scarce, expensive and noisy. Caye Daudt et al. (2019) note that HRSCD’s label imperfections occur in the test images as well as the training images, so test scores carry the label noise too. Their change kappa fell from 25.49% to 23.34% and 22.18% when training on half and a quarter of the data, which they read as showing that the dataset is large enough for more data-hungry methods.
  • Relevant and irrelevant change. A model trained on one dataset learns that dataset’s definition of change, described under Problem Definition. Transferring between definitions, regions and sensors is not solved.
  • Semantic change under imbalance. Most possible from–to transitions have no examples at all in HRSCD, whose direct semantic network, described above, collapsed to a single change type (Caye Daudt et al., 2019).
  • Sequences. Both 2018 papers by Caye Daudt and colleagues end by calling for methods that handle image sequences rather than pairs. Dense time series from current missions make this possible, but all the benchmarks in the table above are bi-temporal.
  • Comparable evaluation. Benchmarks differ in resolution, change definition, cropping and split, and results are reported with different metrics, sometimes with different numbers for the same baseline, as in the two OSCD tables above.
  • Viewing geometry. Very high-resolution images taken from different viewing angles differ geometrically in ways that registration with a single transform cannot remove (our reasoning); xBD supplies each image’s sun azimuth and off-nadir angle so that pipelines can account for such skews (Gupta et al., 2019).

Related

  • Remote Sensing and Earth Observation

    How satellites and aircraft image the Earth in many spectral bands and with radar, what spatial, spectral, temporal and radiometric resolution mean, how the images are corrected and analysed with computer vision, and the public missions, benchmarks and pitfalls of the field, from Landsat 1 in 1972 to geospatial foundation models.

  • Synthetic Aperture Radar (SAR) Imaging

    An active microwave sensor that images the ground sideways from a moving platform and focuses its echoes into a complex-valued image whose resolution does not depend on range, with speckle, slant-range geometry, polarimetry and interferometry as the properties that set it apart from optical images.

  • Metric Learning

    Learning a distance function from examples of what should count as similar, from Mahalanobis metrics learned with convex programs (Xing et al., LMNN, ITML) and NCA to deep siamese networks trained with pair, ranking and proxy losses, with the sampling problem, the open-set evaluation protocol and what a fair comparison of the losses found.

  • U-Net

    A convolutional encoder–decoder for segmentation whose contracting path gathers context and whose symmetric expanding path, fed by concatenated skip connections, restores pixel-accurate boundaries; designed in 2015 for biomedical images with few labels, and since the base of 3D U-Net, Attention U-Net, UNet++, nnU-Net and the denoisers of diffusion models.

  • F1 Score

    The harmonic mean of precision and recall, with its weighted F-beta form, macro, micro, weighted and samples averaging over classes, its dependence on the decision threshold, its identity with the Dice coefficient on binary masks, and the cases where it misleads.

  • Thresholding

    Segmenting an image by comparing each pixel's intensity with a threshold, chosen by hand, from the histogram as in Otsu's method, or from each pixel's neighborhood as in Sauvola's method.

References

  1. Caye Daudt, R., Le Saux, B., Boulch, A. & Gousseau, Y. (2018). Urban Change Detection for Multispectral Earth Observation Using Convolutional Neural Networks. IEEE International Geoscience and Remote Sensing Symposium (IGARSS), 2115–2118 (read in the authors' copy on HAL, hal-01899024).
  2. Caye Daudt, R., Le Saux, B. & Boulch, A. (2018). Fully Convolutional Siamese Networks for Change Detection. IEEE International Conference on Image Processing (ICIP), 4063–4067 (read in the authors' copy on HAL, hal-01824557).
  3. Caye Daudt, R., Le Saux, B., Boulch, A. & Gousseau, Y. (2019). Multitask learning for large-scale semantic change detection. Computer Vision and Image Understanding, 187, 102783 (read in the preprint on HAL, hal-02407789).
  4. Onera Satellite Change Detection dataset page, R. Caye Daudt (as of October 2026).
  5. Chen, H. & Shi, Z. (2020). A Spatial-Temporal Attention-Based Method and a New Dataset for Remote Sensing Image Change Detection. Remote Sensing, 12(10), 1662 (abstract only).
  6. LEVIR-CD dataset page, LEVIR (LEarning, VIsion and Remote sensing) laboratory (as of October 2026).
  7. STANet GitHub repository (justchenhao/STANet), README (as of October 2026).
  8. Chen, H., Qi, Z. & Shi, Z. (2022). Remote Sensing Image Change Detection With Transformers. IEEE Transactions on Geoscience and Remote Sensing, 60, 1–14.
  9. Lebedev, M. A., Vizilter, Yu. V., Vygolov, O. V., Knyaz, V. A. & Rubis, A. Yu. (2018). Change Detection in Remote Sensing Images Using Conditional Adversarial Networks. The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, XLII-2, 565–571.
  10. Gupta, R., Goodman, B., Patel, N., Hosfelt, R., Sajeev, S., Heim, E., Doshi, J., Lucas, K., Choset, H. & Gaston, M. (2019). Creating xBD: A Dataset for Assessing Building Damage from Satellite Imagery. IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops, 10–17.
  11. Malila, W. A. (1980). Change Vector Analysis: An Approach for Detecting Forest Changes with Landsat. LARS Symposia, paper 385, Purdue University (abstract only).
  12. Bovolo, F. & Bruzzone, L. (2007). A Theoretical Framework for Unsupervised Change Detection Based on Change Vector Analysis in the Polar Domain. IEEE Transactions on Geoscience and Remote Sensing, 45(1), 218–236 (read in the authors' technical report DIT-06-019, University of Trento, March 2006).
  13. Bruzzone, L. & Prieto, D. F. (2000). Automatic Analysis of the Difference Image for Unsupervised Change Detection. IEEE Transactions on Geoscience and Remote Sensing, 38(3), 1171–1182 (abstract only).
  14. Townshend, J. R. G., Justice, C. O., Gurney, C. & McManus, J. (1992). The Impact of Misregistration on Change Detection. IEEE Transactions on Geoscience and Remote Sensing, 30(5), 1054–1060 (abstract only).
  15. Canty, M. J., Nielsen, A. A. & Schmidt, M. (2004). Automatic radiometric normalization of multitemporal satellite imagery. Remote Sensing of Environment, 91(3–4), 441–451 (read in the published version deposited at DTU Informatics).
  16. Nielsen, A. A. (2007). The Regularized Iteratively Reweighted MAD Method for Change Detection in Multi- and Hyperspectral Data. IEEE Transactions on Image Processing, 16(2), 463–478 (read in the published version deposited at DTU Informatics).
  17. Verbesselt, J., Hyndman, R., Newnham, G. & Culvenor, D. (2010). Detecting trend and seasonal changes in satellite image time series. Remote Sensing of Environment, 114(1), 106–115 (abstract only).
  18. Bromley, J., Guyon, I., LeCun, Y., Säckinger, E. & Shah, R. (1993). Signature Verification using a "Siamese" Time Delay Neural Network. Advances in Neural Information Processing Systems 6 (NIPS).
  19. Meyer, F. (2019). Spaceborne Synthetic Aperture Radar: Principles, Data Access, and Basic Processing Techniques. In Flores-Anderson, A. I., Herndon, K. E., Thapa, R. B. & Cherrington, E. (Eds.), The Synthetic Aperture Radar (SAR) Handbook: Comprehensive Methodologies for Forest Monitoring and Biomass Estimation. NASA / SERVIR.
  20. Finegold, Y., Ortmann, A., Lindquist, E., d'Annunzio, R. & Sandker, M. (2016). Map Accuracy Assessment and Area Estimation: A Practical Guide. National forest monitoring assessment working paper No. 46/E. Food and Agriculture Organization of the United Nations, Rome.
  21. ESA / Copernicus SentiWiki: "Sentinel-2 Mission" and "Sentinel-2 Processing" (as of October 2026).