Off-Nadir Delta
Detection Methodology

Why Two Ship Detections of the Same Water Disagree

The detector is rarely the reason. What changes a coastal vessel count is the land mask — which coastline you trust, and how far from it you stop looking.

Quick answer — what changes a vessel count

A CFAR detector flags bright targets against local sea clutter. Anything excluded as land never reaches it, so the land mask decides much of the result. Quays, piers, breakwaters and reclaimed ground are bright in radar. If the coastline used for masking is offset from the real shoreline, those structures are counted as vessels. Comparing Natural Earth 10m with OpenStreetMap land polygons over Tokyo Bay (2026-08-06), we measured a mean displacement of 121 m — wider than a 50 m shoreline buffer, so land remained inside the search area. Off-Nadir Delta records the algorithm version, release, parameter profile and configuration hash on every run, so a count can be traced to the settings that produced it. Counts from different versions are not comparable.

Available algorithm versions

Legacy v2

legacyrelease 2.0.0

Original Delta CA-CFAR implementation with 2x peak-preserving downsampling. Frozen for reproducing earlier Delta results and as the performance baseline.

Coastal v3

recommendedrelease 3.0.0

Same CA-CFAR detector as v2, with the land mask rebuilt on an OSM-derived coastline and a shoreline buffer specified in metres. Reduces false detections along quays, piers and reclaimed land; vessels berthed at the shore are excluded by design. Also reads NISAR L-band GCOV (frequency A, linear, HHHH).

Both versions use the same CFAR detector and the same detection parameters. They differ in how land is excluded.

How much does the coastline matter?

Coastline datasets are drawn for map scales, not for 10 m radar. To find out how much that costs, we took the same bounding box over Tokyo Bay (139.5–140.0°E, 35.3–35.75°N) and compared two public coastlines: Natural Earth 10m and OpenStreetMap land polygons. We merged the polygons intersecting the box, clipped them to it, and measured the difference on 2026-08-06.

Mean displacement between the two coastlines
121 m Symmetric-difference area divided by coastline length
Land present in OpenStreetMap but absent from Natural Earth 10m
30.3 km² Unmasked land — a source of false detections
Area Natural Earth 10m calls land where OpenStreetMap has water
46.2 km² Over-masked water — real vessels there are never reported

Both errors matter, in opposite directions. Land the coastline misses becomes false vessels. Water the coastline claims as land hides real ones. Neither is fixed by making the shoreline buffer wider.

Measured over one bay on one date. Coastline error is not uniform — a coast with little construction and simple geometry will differ less than a heavily reclaimed urban bay.

The shoreline buffer is a trade, not a free improvement

Excluding a band of water along the shore removes quays, piers and their radar returns. It also removes every real vessel inside that band. Over the same Tokyo Bay box, the water area is 780 km², and a buffer costs:

Shoreline bufferWater excludedShare of the bay's water
50 m22.2 km²2.9%
100 m41.2 km²5.3%
300 m99.3 km²12.7%
500 m141.4 km²18.1%

This is why there is no single correct buffer. Counting vessels at sea and watching a berth are different questions, and they want different settings. What a tool owes you is to say which one it used.

Adaptive threshold

Sea clutter is estimated locally from surrounding training cells, so the threshold follows sea state instead of assuming one brightness cutoff works everywhere.

Buffer in metres

The shoreline buffer is defined as a ground distance, so it means the same width at any latitude and in any map projection.

Configuration hash

Every run records a hash of the full parameter set. If any parameter moved, the hash differs — so two counts can be checked for comparability rather than assumed to match.

What detection does not tell you

A detection is a bright radar target at a position. It is not an identity. Fixed offshore structures, sea ice, and radar artefacts from strong reflectors can all produce one, and no AIS or registry source is consulted.

Detection footprints are estimates. Processing runs at a reduced resolution, so a reported area reflects the detection cell rather than the true size of the object.

Vessels alongside a quay are excluded by the default configuration, and small craft become unreliable as they approach the pixel size of the imagery.

Sources and attribution

Radar imagery: contains modified Copernicus Sentinel data. Coastline for land masking: © OpenStreetMap contributors, available under the Open Database License, with Natural Earth (public domain) as a fallback. See Data Sources for the full list.

Frequently Asked Questions

Why do two ship-detection runs over the same area report different vessel counts?
Most often it is not the detector but the land mask. A detector flags bright targets against the surrounding sea; whatever is excluded as land never reaches it. Quays, piers, breakwaters and reclaimed ground are bright in radar, so if the coastline used for masking is offset from where the land actually is, those structures are counted as vessels. Changing the coastline dataset or the shoreline buffer changes the count without changing the detector at all.
What is CFAR ship detection?
Constant False Alarm Rate detection estimates the local sea clutter around each pixel from a ring of surrounding training cells, then flags the pixel if it is brighter than a threshold derived from that local estimate. Because the threshold adapts to the surroundings, it holds up across calm and rough sea rather than relying on one fixed brightness cutoff.
How accurate does the coastline need to be for 10 m radar imagery?
Accurate enough that its error is smaller than the shoreline buffer you apply. Comparing Natural Earth 10m against OpenStreetMap land polygons over Tokyo Bay on 2026-08-06, we measured a mean displacement of 121 m between the two. A buffer narrower than that leaves unmasked land inside the search area.
Are vessels berthed at a quay detected?
Not with the default configuration. The shoreline buffer that removes quays and piers also removes vessels alongside them. The default is built for vessels at sea. A narrower-buffer profile keeps more near-shore targets, at the cost of more coastal false detections.
Can I compare counts produced by different algorithm versions?
No. Treat them as separate measurements. Each result records the algorithm version, release, parameter profile and a configuration hash, so you can tell whether two numbers were produced the same way. For a time series, keep the version fixed.
Does this detect a vessel identity, or read AIS?
No. Detection reports the position and radar signature of a bright target. It does not classify the target, and it does not read AIS or any other vessel identity source. Fixed structures, sea ice and radar artefacts can all produce detections.

Run detection on your own area

Draw an area, pick how far back to look, and the newest Sentinel-1 scene covering it is analysed. Sentinel-1 is included on every plan, metered against your token balance.

From headline to satellite evidence

One connected intelligence workflow across four surfaces — free to start, no GIS software or remote-sensing background required.