MatchCityLoc: Aerial Localization in LoD City Models via Surface Normal Matching
Organizations: University of Cambridge · Technical University of Munich · ETH Zürich · Munich Center for Machine Learning ·
Abstract
Autonomous Unmanned Aerial Vehicle (UAV) navigation in urban environments requires precise pose estimation. Because Global Navigation Satellite System (GNSS) signals are often unreliable in cities, visual localization serves as a crucial complement. Within this domain, textureless Level-of-Detail (LoD) city models provide a lightweight and privacy-preserving substitute for heavy 3D textured meshes. However, localizing against abstract geometry is challenging. Existing pipelines typically score 2D silhouette overlaps, which can suffer from severe geometric ambiguities. We present MatchCityLoc, a framework that shifts this paradigm to direct feature matching from a noisy 6-DoF pose prior. By extracting surface normals from the query image using a zero-shot foundation model and matching them against rendered LoD normals, we establish explicit 3D-to-2D correspondences. This enables a Perspective-n-Point (PnP) pose solve, which we iteratively refine through a render-and-match loop. Experiments demonstrate strong pose recall and accurate translation and rotation among the evaluated off-the-shelf LoD-based methods with very few renderings. By bridging the modality gap between aerial imagery and texture-free geometry, MatchCityLoc enables accurate localization using lightweight, privacy-preserving city models.
Figures & tables
| UAVD4L-LoD | Swiss-EPFL | |||||||||||||||||
| in-Traj. | out-of-Traj. | in-Place | out-of-Place | |||||||||||||||
| Method | Vision Model | Setup | 2m-2 | 3m-3 | 5m-5 | T.e./R.e. | 2m-2 | 3m-3 | 5m-5 | T.e./R.e. | 2m-2 | 3m-3 | 5m-5 | T.e./R.e. | 2m-2 | 3m-3 | 5m-5 | T.e./R.e. |
| Sensor priors | – | – | 0.00 | 0.00 | 4.30 | 6.48/1.63 | 0.00 | 0.00 | 0.36 | 11.12/1.33 | 0.00 | 0.00 | 0.56 | 17.59/3.86 | 0.00 | 0.00 | 1.06 | 17.88/3.94 |
| Textured Mesh-based Models | ||||||||||||||||||
| UAVLoc [ 30 ] | LoFTR | O | 84.98 | 88.09 | 88.90 | 0.81 / 0.29 | 91.56 | 92.02 | 92.11 | 0.79 / 0.20 | 26.40 | 46.21 | 62.22 | 3.06 / 1.86 | 68.87 | 81.00 | 84.96 | 1.12 / 1.08 |
| UAVLoc [ 30 ] | RoMa | O | 93.27 | 93.70 | 93.77 | 0.78 / 0.25 | 95.03 | 95.53 | 95.53 | 0.73 / 0.22 | 45.95 | 66.77 | 80.73 | 2.08 / 1.29 | 89.18 | 89.68 | 98.84 | 0.77 / 1.04 |
| in-Traj. / out-of-Traj. | |||||
| UAV | LoD | 2m-2 | 3m-3 | 5m-5 | T.e./R.e. |
| RGB | Depth | 57.61 / 61.22 | 64.03 / 67.93 | 70.95 / 71.94 | 1.40/0.78 / 1.35/0.65 |
| RGB | Normals | 77.81 / 83.90 | 83.23 / 89.10 | 88.53 / 92.02 | 0.74 / 0.40 / 0.74 / 0.30 |
| Depth | Normals | 73.38 / 79.24 | 83.29 / 86.82 | 91.21 / 92.84 | 1.07/0.59 / 1.02/0.48 |
| Depth | Depth | 83.42 / 88.32 | 89.65 / 94.75 | 94.08 / 97.63 | 0.81/0.42 / 0.85/0.35 |
| Normals ∗ | Normals ∗ | 93.64 / 95.48 | 96.20 / 97.99 | 98.69 / 99.27 | 0.58 / 0.31 / 0.64 / 0.27 |
| in-Traj. / out-of-Traj. | ||||
| Matching algorithm | 2m-2 | 3m-3 | 5m-5 | T.e./R.e. |
| SPP + SuperGlue | 73.38 / 66.83 | 81.42 / 79.11 | 87.09 / 84.95 | 1.20/0.70 / 1.36/0.68 |
| XFeat | 26.93 / 18.11 | 44.20 / 30.98 | 62.09 / 51.41 | 3.50/1.65 / 4.78/2.01 |
| LightGlue | 53.99 / 52.01 | 63.59 / 64.78 | 73.94 / 73.36 | 1.78/1.00 / 1.89/0.94 |
| LoFTR | 62.22 / 59.95 | 70.51 / 66.97 | 78.49 / 70.57 | 1.28/0.75 / 1.41/0.68 |
| DKM | 16.90 / 15.15 | 22.13 / 19.21 | 30.42 / 22.67 | 6.03/1.49 / 9.58/1.31 |
| in-Traj. / out-of-Traj. | |||||
| Model | Backbone | 2m-2 | 3m-3 | 5m-5 | T.e./R.e. |
| Metric3D | ViT-S | 81.36 / 89.64 | 87.47 / 95.57 | 91.77 / 97.90 | 0.84/0.49 / 0.81/0.36 |
| Metric3D | ViT-L | 79.18 / 88.50 | 86.78 / 94.80 | 92.58 / 97.58 | 0.84/0.55 / 0.84/0.43 |
| Metric3D | ViT-G | 95.45 / 94.34 | 97.63 / 97.26 | 99.50 / 98.45 | 0.54 / 0.30 / 0.67/ 0.27 |
| MoGe-2 ∗ | ViT-S ∗ | 93.33 / 95.21 | 96.20 / 97.95 | 98.13 / 98.95 | 0.58/0.31 / 0.66 /0.28 |
| MoGe-2 | ViT-B | 94.39 / 95.80 | 97.07 / 98.49 | 98.32 / 99.18 | 0.55/ 0.30 / 0.64 / 0.26 |
| City Model | 2m-2 | 3m-3 | 5m-5 | T.e./R.e. |
| LoD1 (Prismatic) | 14.09 | 26.04 | 40.45 | 7.00/3.26 |
| LoD2 (Roof shapes) | 59.12 | 68.41 | 77.16 | 1.45 / 1.14 |
| LoD3 (Detailed) | 70.33 | 79.94 | 86.34 | 0.87 / 0.81 |
Appendix figures & tables8 assets
Supplementary material from the paper’s appendix.
Appendix
| Stage | Time (s) |
| Once per query | |
| Normal prediction (MoGe-2 ViT-S) | 0.28 |
| Per refinement update | |
| Rendering / preparation (nvdiffrast) | 0.70 |
| Dense matching (MINIMA / RoMa) | 0.73 |
| PnP refinement | 0.01 |
| Recall (%) | Median Err. | ||||
| Configuration | 1m-1 ∘ | 2m-2 ∘ | 3m-3 ∘ | T.e. (m) | R.e. ( ∘ ) |
| in-Traj. | |||||
| Baseline Map | 78.9 | 91.3 | 94.4 | 0.60 | 0.33 |
| Missing Small | 78.9 | 93.8 | 95.7 | 0.56 | 0.30 |
| Missing Mid | 78.3 | 90.7 | 93.8 | 0.58 | 0.31 |
| Missing Large | 79.5 | 91.3 | 95.0 | 0.58 | 0.31 |
Camera Pose Estimation
Camera pose estimation recovers a camera’s position and orientation from images, visual features, scene geometry, and sometimes sensor measurements.
See all 241 papers