# mvidem-gallery/uav-visloc architecture

> Architecture diagram of the GitHub repository mvidem-gallery/uav-visloc, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mvidem-gallery/uav-visloc
- Repository: https://github.com/mvidem-gallery/uav-visloc

## Overview

UAV-VisLoc is a Colab notebook workflow for locating a drone photo within satellite imagery. It ranks map tiles using DINOv2-giant embeddings, then applies SuperPoint keypoint extraction and LightGlue matching to promising areas; MAGSAC homography estimation yields the photo’s coordinates. The README documents this workflow, but no notebook source was available to verify implementation details or additional wiring. All repository components therefore point to the notebook; external inputs and services have no repository path.

Main entry points: [`SuperPoint_LightGlue.ipynb`](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb) (Localization notebook)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inputs["Inputs"]
  node_imagery["Drone photo"]
  node_mapdata["Satellite map tiles"]
end

subgraph group_ranking["Tile ranking"]
  node_dino["DINOv2 embeddings"]
  node_rank["Top-20 tile selection"]
end

subgraph group_localization["Image localization"]
  node_workflow["Localization notebook"]
  node_superpoint["SuperPoint keypoints"]
  node_lightglue["LightGlue matching"]
  node_candidates["Acceptable map areas"]
  node_magsac["MAGSAC homography"]
  node_coordinates["Estimated coordinates"]
end

node_operator(("UAV operator"))
node_colab["Google Colab"]

node_operator -->|"runs notebook"| node_colab
node_operator -->|"provides photo"| node_imagery
node_colab -->|"executes"| node_workflow
node_workflow -->|"uses"| node_imagery
node_workflow -->|"downloads dataset"| node_mapdata
node_workflow -->|"generates embeddings"| node_dino
node_dino -->|"ranks tiles"| node_rank
node_workflow -->|"extracts keypoints"| node_superpoint
node_rank -->|"limits to top 20"| node_superpoint
node_workflow -->|"matches keypoints"| node_lightglue
node_superpoint -->|"provides keypoints"| node_lightglue
node_lightglue -->|"identifies areas"| node_candidates
node_workflow -->|"estimates homography"| node_magsac
node_candidates -->|"provides matches"| node_magsac
node_magsac -->|"derives location"| node_coordinates

click node_imagery "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"
click node_mapdata "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"
click node_workflow "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"
click node_dino "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"
click node_rank "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"
click node_superpoint "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"
click node_lightglue "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"
click node_candidates "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"
click node_magsac "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"
click node_coordinates "https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_imagery,node_mapdata toneBlue
class node_dino,node_rank toneAmber
class node_workflow,node_superpoint,node_lightglue,node_candidates,node_magsac,node_coordinates toneMint
class node_operator,node_colab toneIndigo
```

## Components

### Inputs

- [Drone photo](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`
- [Satellite map tiles](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`

### Tile ranking

- [DINOv2 embeddings](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`
- [Top-20 tile selection](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`

### Image localization

- [Localization notebook](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`
- [SuperPoint keypoints](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`
- [LightGlue matching](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`
- [Acceptable map areas](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`
- [MAGSAC homography](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`
- [Estimated coordinates](https://github.com/mvidem-gallery/uav-visloc/blob/master/SuperPoint_LightGlue.ipynb): `SuperPoint_LightGlue.ipynb`

### Other components

- **UAV operator**
- **Google Colab**

## Connections

- UAV operator → Google Colab: runs notebook
- UAV operator → Drone photo: provides photo
- Google Colab → Localization notebook: executes
- Localization notebook → Drone photo: uses
- Localization notebook → Satellite map tiles: downloads dataset
- Localization notebook → DINOv2 embeddings: generates embeddings
- DINOv2 embeddings → Top-20 tile selection: ranks tiles
- Localization notebook → SuperPoint keypoints: extracts keypoints
- Top-20 tile selection → SuperPoint keypoints: limits to top 20
- Localization notebook → LightGlue matching: matches keypoints
- SuperPoint keypoints → LightGlue matching: provides keypoints
- LightGlue matching → Acceptable map areas: identifies areas
- Localization notebook → MAGSAC homography: estimates homography
- Acceptable map areas → MAGSAC homography: provides matches
- MAGSAC homography → Estimated coordinates: derives location
