ARDEN OPENSAR

Arden OpenSAR — Demo 0

This image was formed from raw radar phase history.

Umbra's satellite measured the k-space of the Panama Canal; Arden OpenSAR turned those raw samples back into an image, independently of the vendor's processor. This is the Gatún Locks — 2.8 km of it in one frame.

Single-look render of the Gatun Locks — grainy with speckle Five-look multilook render of the Gatun Locks — speckle averaged down, roads and shorelines legible
Drag the handle. Both halves are the same collect and the same pixels, on one shared dB scale — the only difference is that the left half splits the radar's single pass into five sub-apertures and averages them. Speckle is not noise you can filter away; it is coherent interference, and averaging independent looks is what removes it. Measured here: ENL 0.98 → 4.92, a 5.00× smoothing — the theoretical maximum for five looks. The vendor head-to-heads are on the ladder below ↓
Gatún Locks, Panamá — collect 2023-07-11T02:29:27Z, UMBRA-04, 15,817 pulses at 9.43 GHz, of which 401 are flagged dead by the satellite and carry exactly zero. Formed at 2,832 m across, 2.5 m pixels. That size is not a taste decision: this collect's alias-free radius measures 2,044 m, and a square is bounded by its corner, so 2,832 m is the largest honest chip it supports — anything wider folds terrain from outside the scene back into the picture. Umbra data © Umbra Lab, Inc., CC BY 4.0.

The surprise map

Five months measured what normal looks like. These are the exceptions.

The stack gives every pixel a measured baseline and a measured wobble. Each epoch is scored against the other four — never against itself — and a detection fires only past a threshold calibrated to a stated false-alarm probability in that pixel's own statistics. Atmosphere can't fake it: injecting a regional gain change produces exactly zero detections. Tap a marker; filter by date.

Five-epoch stack of the Panama Canal with detection overlay

All detections as a table
DateSizePeak over baselinep-value

How it works

From raw echoes to an image, synthesized on demand

The measured k-space samples for this collect: an annular patch on the Ewald sphere at X-band
The actual k-space samples this collect measured — an annular patch of the Ewald sphere at X-band. Swipe the chart sideways to see both panels.
  1. 01

    The satellite's raw echoes are samples of the scene's spatial-frequency spectrum: k = 4πf/c · û.

  2. 02

    We store those samples georeferenced — "Ewald tiles."

  3. 03

    Imagery is synthesized on demand by backprojection — resolution, aperture, and time become query parameters.

By the numbers

4.5

measured effective looks, N_eff (duplicated-epoch control: 1.0)

0.63 m

measured 3 dB impulse width, ground range (vendor: 0.90 m)

0.83 m

measured 3 dB impulse width, azimuth (vendor: 0.97 m)

69,662

radar pulses integrated across 5 epochs, Jun–Nov 2023

The hero compare leads with the rung-2d single-collect render — the sharpest true product on the ladder (0.6–0.8 m class, support-aware suppression, linear until the display stretch) — against the vendor’s GEC of the same collect. The five-collect temporal composite that led here after rung 4 lives on its card below and now earns its keep as calibration: its per-pixel median + dispersion baselines power every marker in the surprise map. The native single-epoch chips remain the authoritative record.

A second scene — same processor, somewhere you can read

Everything above is the Panama Canal, which is honest but hard to read: jungle, water and a lock complex look like texture unless you already know SAR. So we pointed the same processor, unchanged, at a different Umbra collect taken the same day by the same satellite — 2023-09-12, UMBRA-04.

Arden OpenSAR wide-area render of Western Sydney International Airport: a long runway running diagonally, taxiways, a terminal construction site, farmland and a town
Formed by Arden OpenSAR from raw phase history — 3,264 m across at 3 m pixels, all 10,424 pulses. The runway, taxiways and the terminal site read directly; the bright cluster upper-left is the town of Luddenham.

The vendor's own catalogue calls this “Sydney International Airport.” It isn't. The phase history puts the scene reference point at 33.886 °S, 150.699 °E — Badgerys Creek, 44 km from Sydney's Kingsford Smith. This is Western Sydney International (Nancy-Bird Walton), which was still under construction when the radar passed over and does not open to passengers until 25 October 2026. We found the mislabel by reading the collect's own geometry, which is the entire argument for working from raw data rather than a delivered image.

Head to head, at matched resolution

The wide view above is 3 m pixels, chosen to fit the scene — so its measured resolution is 3 m class and says nothing about the processor. The honest comparison is a second chip over the terminal at 0.5 m, the same pixel class as the ladder above, cut from the vendor's product at the same place.

Arden OpenSAR 0.5 m render of the terminal construction site
Arden OpenSAR — formed from phase history, uniform weighting (no taper)
Umbra's own delivered GEC of the same terminal construction site
Umbra's own delivered product (GEC), same ground, same collect
Resolution
range IRW 0.629 m ours vs 0.657 m vendor · azimuth 0.652 vs 0.647 — parity, untuned, on 8 scatterers
Sidelobes
PSLR −10.5/−7.8 dB ours vs −18.9/−18.6 vendor — they taper, we shipped uniform here; rung 2c/2d makes that a choice
Scene limit
unambiguous extent measured 3,264 m — the 3.7 km runway cannot be imaged whole from this collect, so we didn't try
Cost
468 s wide + 575 s zoom, single machine, every pulse used

This scene is a legibility exercise, not a new claim: every measured number on the ladder below belongs to the Panama collect, and the two above were measured here independently. Umbra data © Umbra Lab, Inc., CC BY 4.0.

The ladder — every iteration, kept

This page never overwrites its history. Each campaign rung is one merged, measured improvement against Umbra's own product on the same collect — its render and its numbers stay here permanently. The slider at the top is a different collect of the canal, shown large because it is the most legible image on this site; the rungs below are where the vendor comparisons and their measured numbers live, including rung 2d, the sharpest head-to-head render. Newest first.

  1. Next

    Where the ladder stops — and why we say so

    blocked, measured

    The next two rungs are blocked by the data, not by effort, and the blockers are themselves measurements. 5b, coherent change detection: every cross-date pair in this AOI measures at the zero-coherence floor (γ 0.116–0.120 against a 0.126 floor) — the open archive holds no coherent repeat pair for this canal, so the product cannot be built honestly here. 5d, multi-band composite: waits on Sentinel-1 ingest. Publishing an empty rung beats publishing a rung whose gate we quietly widened.

  2. Rung 5c

    Geolocation over terrain — and the textbook formula it corrects

    merged · PR #83
    Left: the look-plane layover vector against the textbook tan(grazing) vector, 1.406 times larger and 44.7 degrees apart. Right: measured image displacement against terrain height, with the geometric lever, the measured fit and the textbook line.
    Left — where a hill's image actually lands, against where the textbook says. Right — displacement measured against height, predicted first.

    Backprojection normally focuses onto a flat reference plane, so anything with height lands in the wrong place. This rung builds the image grid on the Copernicus GLO-30 terrain surface instead — 6.0 to 95.8 m of relief across the chip, 221.8 m of layover to correct.

    What to notice: the standard textbook displacement h · tan(grazing) turns out to be only the zero-squint special case. A flat-plane image places a hill where a ground point shares its whole range history — range and range rate — so the lever follows the plane the aperture sweeps, not the centre look direction. On this 134°-squint collect that is 1.406× larger and 44.7° off in direction. Predicted before it was measured, then confirmed: bias the grid +10 m and the image moves 24.522 m against a 24.690 m prediction.

    Lever
    2.4690 m/m measured 2.5910 (r 0.9878) · textbook 1.7555 is 1.41× wrong
    Negation
    ±10 m bias → 24.52 m, both signs, 0.24 m vector error
    Control
    relief block-shuffled: tracks its own wrong heights (r 0.878), true relief collapses to r 0.180
    Refused
    4 of 14 features, and the absolute geolocation claim outright — 0.99 m sits inside the DEM's own 10.08 m bound
  3. Rung 5a-M

    How fast, with the error bars that decide it

    merged · PR #72
    Speed with 1 sigma error bars for 13 co-located control glints and the 4 movers that survived every gate, against the measured 0.515 metre-per-second real-scene floor
    Every estimate with its measured 1σ. The dashed line is what this instrument reads on features that are not moving.

    Rung 5a caught scatterers that shift between sub-looks. This turns those tracks into speed: displacement divided by the collect's own measured 1.327 s between look centres — never an assumed number — with the uncertainty propagated analytically from the scene's measured speckle statistics.

    What to notice: most of this rung is refusal. 25 of 42 features carry no number at all, and only 4 of 17 candidate movers survive every gate. The 25 known-static glints are the honesty check, and they do not read zero — they read 0.515 m/s. That floor, not the error bar, is what a claim has to clear, so it is drawn on the chart. A looser threshold would have bought one more mover; we kept the strict one and published the cost instead.

    Survivors
    4 movers, 1.02–2.24 m/s at 3.4–5.9σ
    Static floor
    0.515 m/s measured on 25 co-located glints — stated, not hidden
    Error bars
    coverage measured 0.962 at a nominal 1σ — conservative, and reported as such
    Ambiguity
    single-pass velocity is partial: 82.0 m per m/s of radial motion, on every row
  4. Rung 5a

    Colorized sub-aperture imagery — motion you can see in one image

    merged · PR #68
    Rung 5a render: colorized sub-aperture composite — gray static scene with colored aspect-dependent scatterers
    Rung 5a render — the aperture split into thirds: R = early G = mid B = late. Gray means the scatterer looked the same from every angle; color means it didn't.

    One collect, split into early/mid/late thirds of the 1.99 s dwell — three images of the same scene from aspect angles 0.46° apart, composited as R/G/B under one common scale. Per-look brightness is equalized by a single measured scalar (never per-pixel), so equalization physically cannot paint color. The vendor does not ship this product for this collect; Capella sells the same idea as “CSI.”

    What to notice: the scene stays gray — measured, not asserted: worst homogeneous-patch saturation 0.045 against a 0.10 gate, and the sabotage control (mis-equalize one look by 2 dB) tints the water to 0.242 and fails. The colored specks are real physics: 42 aspect-dependent scatterers, of which 17 moved between the sub-looks — displaced copies tracked 0.27–1.74 m across the 1.33 s between look centers (≈0.2–1.3 m/s, harbor traffic speed). Doppler from a single pass, rendered as color.

    Gray gate
    patch saturation 0.008–0.045 < 0.10 · negation fires at 0.242
    Movers
    17 displaced-copy · 0.2–1.3 m/s from 1.33 s look separation
    Cost stated
    per-look azimuth Rayleigh 1.94 m vs 0.64 m full-aperture (3.0×)
  5. Rung 4b

    The surprise map — live above

    merged · PR #67 + #65

    The detection layer the stack was built to calibrate is live: two measured surprises over the canal, each with an epoch, an area, and an empirical p-value. Stated false-alarm probability 1e-4 measured 1.06e-4 on a held-out half (exact binomial p 0.92) — while the textbook Gaussian threshold measures 3.3e-3 and is rejected by the same test. The merciless gate held: +2 dB injected into any epoch, uniform or gradient, leaves the detection list identical and moves reported radiometry +0.004 dB.

  6. Rung 4

    The killer feature — five months in one image

    merged · PR #62
    Rung 4 render: 5-epoch temporal composite, 2 m multilook grid
    Rung 4 render — hero from rung 4 until rung 5a landed (5-epoch composite, 2 m grid, upsampled for display); it now calibrates the surprise map above.

    Five collects of the canal — August to November plus the campaign September — γ-gated, σ⁰-normalized, co-registered (4–8 px inter-epoch geolocation offsets measured and corrected losslessly), and power-averaged. No filtering: the smoothing is real, independent looks, and the look count is measured from the epoch covariance. A sixth staged collect at 9.8 GHz was refused by the band wall before coherence was ever measured. Single-epoch vendor products cannot do any of this, by definition.

    What to notice: the grain is gone — water reads as calm dark surface, land textures resolve instead of boiling — while walls and structures stay sharp (edge widths measured at 0.94–1.20× single-look). And the stack knows what moved: a 1,596-pixel vessel cluster from one October epoch sits +18.4 dB above the median baseline that refused to absorb it — the ships live on in their own epoch planes, not smeared into the map.

    ENL
    ~1.0 → 4.15–4.62 on homogeneous patches
    N_eff measured
    4.14–4.57 of 5 offered · duplicated-epoch control: 1.0000
    Sharpness held
    point IRW ratio 1.02–1.04 · edges ≤1.20× — no smear
  7. Rung 2d

    SVA 3.0 — suppression that follows the measured physics

    merged · PR #55 · engine-reviewed
    Rung 2d render: SVA 3.0 support-aware suppression product
    Rung 2d render in the collect's own range–azimuth frame; its map-frame product was hero until rung 4 landed — and leads the compare again since rung 5a: the sharpest true render is the fairest like-for-like.

    The operator classic SVA couldn't be here: suppression decisions made in the collect's own frame — deshear to the measured principal axes, windows qualified by measurement, suppress only the least amount every qualified window agrees on, and only where the decision is stable across scales. Adding windows can only protect targets (proven, not hoped). It shipped through an adversarial engine review: an unscripted sabotage of the confidence gate was caught by the battery, and the reviewer independently reproduced the core physics blind before endorsing.

    What to notice: the cleanest point responses on the ladder — sidelobes deepened beyond rung 2c's where they rise above the harbour clutter — while every weak target near a bright one survives, by construction. Suppression, confidence and window-choice maps ship alongside, so any pixel can say what was done to it and why.

    Synthetic truth
    IRW ratio 1.000 · PSLR −44/−34 dB at worst-case position
    Real chip
    beats dual-apod on all 4 sidelobe columns (high-contrast set)
    Map frame (#57)
    −16.8 / −15.5 dB PSLR over all 8 — beats DA everywhere
    Erasure curve
    0 erased at full dictionary — growth is protective, asserted
  8. Rung 2c

    Best of both worlds — dual-apodization ships

    merged · PR #53
    Rung 2c render: dual-apodization fused display product
    Rung 2c render — hero from rung 2c until rung 2d's map-frame product landed.

    The parallel window renders — all render-time reweightings of the same stored k-space — fused per pixel: take the minimum across gain-matched renders. The operator can only suppress, never create (measured excess: exactly zero), and never dips below any single linear render, so it cannot erase a real target a window would have kept. Classic SVA was also measured — and demoted: on real data it displaced weak neighbours and halved their radiometry, and the sheared support refuses its full pathway. That refusal is rung 2d's measured trigger.

    What to notice: the cross-shaped flares on the brightest returns collapse while the sharpness stays — flip the slider against the vendor and compare the water around the locks. The grain is still untouched speckle, and the coherent record remains the unfused uniform image.

    PSLR
    −16.8 / −12.1 dB vs uniform −15.0 / −10.4 — fused down
    ISLR
    −13.2 / −8.8 dB vs −11.3 / −5.8 — fused down
    IRW cost
    1.1% / 3.4% — resolution held, still beats vendor
  9. Rung 3

    Autofocus that knows when to say no

    merged · PR #50

    Phase-gradient autofocus estimated this collect's residual phase at 0.279 rad RMS — inside the bound rung 2's census predicted — and the split-half test showed it isn't a stable common error. Applied to scatterers withheld from the estimate, the "correction" made things measurably worse (peaks −0.39 dB, confidence interval clear of zero). The controller refused it, and the image shipped unchanged. An autofocus that can't say no is a hallucination engine; this one proved it can.

    What to notice: nothing changed — that's the deliverable. The machinery was proven both ways: a known 1.0 rad error injected into the same real aperture is recovered at 0.965 correlation and accepted, with resolution restored to 1.006× baseline; empty ocean is refused (the classic speckle-"sharpening" trap, blocked); and re-running on an accepted output changes nothing, bit for bit.

    Phase estimate
    0.279 rad RMS — census bound ≤ 0.40 held
    Verdict
    REFUSE — 4 gates failed, all evidence recorded
    Injected-error control
    recovered at 0.965 corr — ACCEPTED
  10. Rung 2

    Full aperture — the resolution the data actually holds

    merged · PR #45
    Rung 2 render: full aperture, no default taper, tuned display
    Rung 2 render — hero from rung 2 until rung 2c landed.

    A census of the collect proved nothing was missing — 9,680 of 9,693 pulses, the full 1.39° arc, more recorded bandwidth than the label claims. Rung 1's azimuth gap was two engine defaults: a hidden smoothing taper and a coarse interpolation setting. Both fixed, the default image is now the support as measured — and it out-resolves the vendor's product on both axes. Sidelobes are the explicit price, quantified on a measured trade-off curve with selectable windows; nothing is traded silently.

    What to notice: finer detail everywhere — edges, moored ships, the lock machinery — and cross-shaped flares on the very brightest points. Those flares are the honest signature of taking all the resolution: sidelobe suppression is now a selectable choice (Taylor window), not a hidden default.

    IRW ground rg
    0.618 m vs vendor 0.903 m — ours narrower
    IRW azimuth
    0.798 m vs vendor 0.968 m — ours narrower
    PSLR
    −15.0 / −10.4 dB vs −29 / −28 — gap → rung 3+, taylor:35:4 selectable
  11. Rung 1

    Display parity — tuned to the vendor's own tone curve

    merged · PR #25
    Rung 1 render: tuned display mapping, same data
    Rung 1 render — hero from rung 1 until rung 2 landed.

    Pure display: we measured the vendor's tone mapping from their own product (2.98 DN per dB, r² 0.86) and fitted ours to match — percentile stretch, gamma, noise floor. Same data, no filtering, no despeckle. The image stopped looking washed out because the mapping, not the physics, changed.

    What to notice: water now reads near-black and bright scatterers — lock gates, ships, fences — finally pop; flip the hero slider and the two halves feel like one photograph. The grain is untouched speckle: nothing was filtered.

    IRW ground rg
    0.91 m vs vendor 0.92 m — parity
    IRW azimuth
    1.23 m vs 0.98 m — gap → rung 2
    PSLR
    −16 dB vs −28 dB — gap → rung 2
  12. Rung 0

    First light + the regression gate

    merged · PR #5–7
    Rung 0 render: first focused image, fixed honest stretch
    Rung 0 render — honest fixed 2–98% stretch, untuned.

    The chain proven end to end: raw CPHD phase history → time-domain backprojection → a focused image scoring NCC 0.85 against the vendor at identity orientation (the wrong-sign hypothesis scores 0.20). A 604 KiB excerpt of this real collect now re-focuses in CI on every commit — flip the phase sign convention and CI turns red.

    What to notice: the geometry is already right — every structure is where the vendor puts it — but the tone is flat: everything sits in the middle grays, water isn't black, nothing pops. An honest untuned stretch of a correct focus looks exactly like this.

    NCC gate
    0.85 identity · 0.20 wrong-sign
    Pulses
    9,680 integrated
    CI
    real-data regression, fail-closed