Imagery alignment with telemetry

Anonymized location data from our mobile SDKs helps us continuously improve our maps. We use this data to discover missing streets, add turn restrictions, improve directions, and now to help our satellite team automatically correct misaligned imagery.

When overhead imagery is collected by a satellite or plane, only the sensor location and pointing orientation are known. Precise registration typically requires ground control points (GCPs): real-world, accurately measured, often purpose-built features that can be clearly identified in imagery. The known location of a GCP on the ground anchors the feature we see in the overhead image. But the quality and availability of GCPs varies widely.

Our telemetry data includes billions of anonymized longitude, latitude, and elevation measurements from travel along roads, sidewalks, and trails. Each individual ping is less accurate than a GCP, but in aggregate, the data can be used to align imagery to within a few meters or less.

How it works

Cross-correlation compares every possible planar alignment of two images to find the best-fit overlap. This example shows a Mapbox Satellite tile randomly offset, with the offset correctly identified using a convolutional technique:

This method works well on images of the same rotation and scale and is adaptable to variations in color, brightness, noise, and other characteristics.

To align imagery with telemetry, we create a density raster where each pixel’s value represents the amount of probe data in that pixel. We then identify edges where pixel values change sharply, and convolve this raster with edges derived from imagery.

Because imagery and telemetry data are tiled, we can quickly identify alignment problems across entire cities or countries. In this example, pink shows areas where our testing best predicted randomized offsets:

Stay tuned for updates as we refine this technique. If you collect satellite or aerial imagery and want to talk about using telemetry data for alignment, drop me a line at