Self-Calibrating Dense Displacement Fields for Reliable Co-Registration of Large Optical Satellite Imagery
Organizations: Department of Computer Science, University of Idaho, Moscow, ID 83844 USA · National Center for Ecological Analysis and Synthesis (NCEAS), University of California, Santa Barbara, CA 93101 USA · Research Computing and Data Services (RCDS), University of Idaho, Moscow, ID 83844 USA · Department of Geography and Planning, Appalachian State University, Boone, NC 28608 USA
Abstract
Co-registration underlies nearly every multi-temporal and multi-sensor use of optical satellite imagery, and operational products still carry documented offsets well above the fraction-of-a-pixel scale at which change detection, time series, and data fusion degrade. Real image pairs differ along several axes at once (sensor response, scene content, viewing geometry, resolution, mosaic seams), and the last of these is not a single global motion. Existing tools embed a motion model and constants tuned to their development data; a pair that fits is registered precisely, while one that does not either fails to match or returns a result wrong by tens of pixels with no failure reported. Learned matchers add a GPU requirement and carry no accuracy guarantee outside their training distribution. We present SCDF (self-calibrating displacement fields), a training-free, GPU-free estimator whose motion model is the dense per-pixel displacement field itself, so no scene motion falls outside the model. A single predict--measure--filter loop runs over a resolution pyramid: the accumulated field predicts where each patch of the moving image falls in the reference, RootSIFT matching and a correlation pass measure the displacement there to sub-pixel precision, and filters whose thresholds are all calibrated on the image pair itself decide what survives. One configuration, with no per-dataset tuning, processes full scenes on a single CPU core. On 584 constructed-ground-truth pairs built from real Sentinel-2, Landsat-8/9, and NAIP imagery, against seven classical baselines and two zero-shot pretrained matchers, SCDF registers every pair with zero failures, reduces the best baseline's real-pair median end-point error from 6.83 to 4.17m, and cuts its 90th percentile from 17.8 to 7.77m.
Figures & tables
| Family | Motion model | Decision constants | Output |
|---|---|---|---|
| Phase-correlation grids AROSICS; COSI-Corr | translation per window, then a global shift or affine fit | thresholds tuned per product | tie-point grid fitted model |
| Dense chip tracking autoRIFT | translation per chip, fixed search range | fixed px window, quality thresholds | dense grid |
| Optical flow GeFolki | small, smooth flow | tuned (rank filter, radii) | dense per-pixel field |
| Sparse features model SIFT+RANSAC; RIFT, RIFT2, SRIF | single global affine or homography | ratio and inlier thresholds | sparse matches one global transform |
| Learned matchers LightGlue, LoFTR; RoMa | learned prior; fixed working resolution, tiled at scene scale | learned weights, tuned acceptance | sparse/semi-dense matches ( fitted model) |
| SCDF (ours) | none — the dense per-pixel field is the product | self-calibrated per pair | dense field confidence |
| Stage — the decision it makes | Where its threshold comes from |
|---|---|
| Global magnitude filter — is this displacement grossly out of family? | of the displacement magnitudes at this level , MAD |
| LOO local-affine filter — is this point inconsistent with its own 12 neighbors? | of this level’s own studentized residual distribution |
| Response gate — did this window pair lock, or is the peak spurious? | the maximum of null correlations of the same REF window against far-away MOV windows, recomputed for every window |
| Error gate — do the aligned windows agree well enough for this pair? | a quantile of the pair’s own error distribution ( re-measuring, densifying) 1 |
| Fill interpolator — which of 7 interpolators suits this scene? | 5-fold cross-validation over the pair’s own control points |
| Fixed by design, and not thresholds on measured quantities: | |
| MOV px (m) | ||||||||
| Leg | REF | MOV (distorted) | GSD | Sites | Cells | A1/2/4 | A3 | |
| E1/b1 | S2 2024-07, 10 m | same scene | 1:1 | — | 25 | 100 | 10 | 30 |
| E2/b1 | S2 2024-07 | S2 2024-01 (cross-season) | 1:1 | yr | 25 | 100 | 10 | 30 |
| E2/b2 | S2 2024-07 | S2 2023-07 | 1:1 | yr | 25 | 100 | 10 | 30 |
| E2/b3 | S2 2024-07 | S2 2019-07 | 1:1 | yr | 25 | 100 | 10 | 30 |
| E2/b4 | S2 10 m | Landsat-8/9 30 m | 1:3 | d | 25 | 100 | 30 | 90 |
| Block median / p90 EPE (m) | Overall | Cells | ||||
| Method | A1 radiom. | A2 homog. | A3 resol. | A4 seam | median / p90 (m) | scored |
| SCDF (ours) | 0.80 / 1.85 | 0.50 / 1.03 | 0.96 / 1.47 | 0.57 / 1.02 | 0.63 / 1.27 | 100/100 |
| GeFolki | 2.21 / 3.97 | 0.56 / 1424 | 1.17 / 2.04 | 0.26 / 0.64 | 1.02 / 3.73 | 100/100 |
| AROSICS | 0.39 / 0.72 | 874.5 / 1561 | 0.28 / 0.48 | 528.6 / 741.3 | 1.29 / 4.07 | 99/100 |
| SIFT+RANSAC | 0.67 / 1.59 | 0.06 / 0.50 | 7.11 / 7.51 | 446.2 / 907.1 | 2.53 / 7.03 | 100/100 |
| autoRIFT | 3.06 / 7.15 | 579.3 / 1276 | 1.83 / 2.65 | FAIL | 4.02 / 28.0 | 78/100 |
| by leg (median / p90, m) | by construction (median / p90, m) | ||||||||
| Method | b1 | b2 | b3 | b4 | b5 | A1 | A2 | A3 | A4 |
| 0.5 yr | 1 yr | 5 yr | LS | NAIP | radiom. | homog. | resol. | seam | |
| SCDF (ours) | 3.26 / 6.58 | 2.44 / 4.54 | 5.10 / 7.60 | 11.5 / 19.1 | 4.67 / 7.77 | 4.37 / 7.85 | 4.07 / 7.62 | 3.89 / 6.62 | 4.36 / 9.25 |
| GeFolki | 6.57 / 17.1 | 4.65 / 11.0 | 7.38 / 16.2 | 13.7 / 55.9 | 5.43 / 9.34 | 5.67 / 11.1 | 13.0 / 1366 | 7.07 / 15.5 | 4.73 / 9.72 |
| AROSICS | 19.1 / 69.6 | 15.6 / 44.5 | 15.8 / 69.4 | 80.3 / 378 | 8.13 / 15.6 | 4.01 / 4.92 | 823.5 / 1511 | 4.48 / 6.24 | 482.1 / 534.3 |
| SIFT+RANSAC | 9.23 / 19.0 | 6.87 / 10.1 | 11.5 / 16.8 | 39.2 / 74.8 | 2032 / 3292 | 8.53 / 17.1 | 6.69 / 9.39 | 11.2 / 19.6 | 458.4 / 918.5 |
| Cells | Overall (m) | Placement across blocks | |||||
| Method | scored | median | p90 | best in | top-2 in | worst ratio | in |
| E1 — 100 cells, 4 blocks, exact ground truth | |||||||
| SCDF (ours) | 100/100 | 0.63 | 1.27 | 0 | 2 | 8.0 | 0 |
| GeFolki | 100/100 | 1.02 | 3.73 | 1 | 1 | 8.9 | 0 |
| AROSICS | 99/100 | 1.29 | 4.07 | 2 | 2 | 13993 | 2 |
| SIFT+RANSAC | 100/100 | 2.53 | 7.03 | 1 | 1 | 1697 | 2 |
| Block score (m) | Ratio | |||
|---|---|---|---|---|
| Configuration | median | p90 | median | p90 |
| Full stack | 2.832 | 4.809 | 1.000 | 1.000 |
| sub-pixel re-measurement | 2.828 | 5.093 | 0.974 | 1.003 |
| lattice densification | 2.899 | 5.484 | 1.014 | 1.093 |
| cross-validated fill | 2.838 | 4.830 | 1.035 | 1.079 |
| all three | 3.713 | 7.615 | 1.171 | 1.410 |
| Method | Median (s) | Min–max (s) | |
|---|---|---|---|
| SIFT+RANSAC | 40 | 29 | 12–45 |
| autoRIFT | 30 | 73 | 12–98 |
| AROSICS | 40 | 150 | 57–1911 |
| SRIF † | 40 | 316 | 139–538 |
| RIFT | 40 | 330 | 48–394 |
| SCDF (ours) | 40 | 963 | 96–1540 |
Deformable Image Registration
Deformable image registration aligns images by estimating local spatial transformations that account for anatomical change, motion, and differences between scans.
See all 74 papers