Visual Localization: Finding a Camera's Exact Pose From One Image

Visual localization works out where a camera is, and which way it points, from the image it took. It compares the photo against a 3D map of the place and returns a 6-DoF pose, three numbers for position and three for orientation, in the map's coordinate frame.

It works under a roof that blocks GPS, and on any device with an ordinary camera. MultiSet's API returns that pose with a sub-5 cm median error, from a map built out of the scans you already have.

Start freeRead the docs

Gen2.5 · one phone photo

One phone photo goes in, with nothing else. The pose comes back about a centimetre from ground truth.

MultiSet Gen2.5 render of the HGE scene from LaMAR, Sarlin et al., ECCV 2022.

79.7%of LaMAR phone photos within 10 cm and 1°, three-scene mean
<5 cmmedian 6-DoF error on MultiSet maps
1.5-2.5 scloud query from a single frame
~52 mson-device localization
01

What visual localization returns

A pose has six numbers. X, Y and Z place the camera in the map, and roll, pitch and yaw give the direction it faces. Position alone is enough to draw a route on a floor plan. You need the full pose to put a label on one valve among forty, or to tell a robot which shelf it's facing.

Try it · drag the device, turn it with the ring
V-07
X
0.00 m
Roll
0.0°
Y
0.00 m
Pitch
0.0°
Z
1.42 m
Yaw
0.0°

Keyboard: arrows move the device, [ and ] turn it.

Position alone leaves several identical valves within reach. The three rotation numbers point the camera at one of them.

The pose is absolute. It's stated in the map's own frame, so a phone today, a headset next week and a robot on the night shift all get coordinates that agree with each other. Georeference the map once and the same pose also comes back as an OSCP GeoPose, with latitude, longitude and altitude.

Every MultiSet response carries a confidence value next to the pose. A wrong pose delivered confidently does more damage than no pose at all, so a correct integration checks it before placing anything.

02

Other names for the same problem

Camera localization is the name machine-learning papers tend to use, especially for methods trained on one scene at a time. Image-based localization turns up mostly in the older computer-vision literature. Visual relocalization, or camera relocalization, usually means recovering pose after tracking was lost, which is the same computation started from a cold view.

Camera pose estimation is the wider family. It also covers the relative pose between two photos, and pose against a printed calibration target, where nobody has mapped the place.

Camera pose estimation, the wider family

Pose against a map of a known place

Same input, same output, four names depending on who's writing.

Hover or tap a name to see where it's used.

Relative poseHow one photo sits against another, with no map of the place.
Target poseA camera against a printed calibration board.
03

How it differs from SLAM, odometry and place recognition

All four use a camera to reason about place, which is why they get mixed up. Each answers a different question.

What it tells youOutputFrameSurvives a restart
Visual localizationWhere the camera is in a known map6-DoF poseThe map's, shared by every deviceYes
Visual SLAMHow the device moved, and what the space looks likePose plus a map built on the flyStarts wherever the device startedNo
Visual odometryHow far the device moved since the last frameRelative motionRelative, drifts with distanceNo
Visual place recognitionWhich mapped place the image resemblesThe closest mapped image or placePlace level, usually metresYes

In production they're layered. The device's own tracking (ARKit, ARCore or a robot's odometry) handles motion from frame to frame, and visual localization supplies the absolute fix that cancels the drift. The full comparison is on VPS vs SLAM.

A phone pins the pump, then a robot comes looking for it
PUMP B4045
Where each device puts the pump0.0 m apart
Phone, its own estimateRobot, its own estimateTrue path

Each device's own tracking handles the motion between fixes. Visual localization supplies the fixes, in one frame every device shares.

Illustration. Drift grows with distance walked, and the rate varies by device and conditions.

04

How researchers approach it

Published methods fall into four families. They differ in what they store about the scene, and in how close to the true pose they get.

Keeps a 3D model

Structure-based

Matches the photo against a 3D model of the scene. The usual baseline on large benchmarks.

hloc, Sarlin et al., CVPR 2019

Keeps a network per scene

Scene coordinate regression

Predicts where each pixel sits in the scene. Every new space needs its own training run.

ACE, Brachmann et al., CVPR 2023

Keeps a pose regressor

Absolute pose regression

Outputs the pose straight from the image. Compact and fast, and closer to retrieval than to geometry in accuracy.

PoseNet, ICCV 2015 · Sattler et al., CVPR 2019

Keeps a photo gallery

Retrieval only

Borrows the pose of the most similar mapped photo. Accurate to about the spacing between them.

Visual place recognition

Structure-based methods keep a 3D model of the scene and match the photo against it. The open-source hloc toolbox (Sarlin et al., CVPR 2019) is the usual baseline on large benchmarks such as Aachen Day-Night and LaMAR. Map size and query compute are what this family pays for its accuracy.

Scene coordinate regression trains a network to predict where each pixel sits in the scene. ACE (Brachmann et al., CVPR 2023) cut per-scene training from hours to minutes while holding the accuracy of earlier methods in this family. Each new space still needs its own training run.

Absolute pose regression trains a network to output the pose straight from the image, starting with PoseNet (Kendall et al., ICCV 2015). It's compact and fast. Sattler et al. (CVPR 2019) showed these networks behave more like image retrieval than 3D geometry, and that they didn't reliably beat a simple retrieval baseline.

Retrieval-only localization finds the most similar mapped photo and borrows its pose. That's place recognition pressed into service, and it's accurate to roughly the spacing between mapped images, which is enough to route a person and too coarse for an AR overlay.

05

How visual localization is measured

Benchmarks score recall, the share of query photos localized within a distance limit and an angle limit at once. A query that returns nothing counts as a miss.

20137-ScenesSmall indoor rooms, recorded with a Kinect.
2015Cambridge LandmarksOutdoor scenes in central Cambridge.
2018Aachen Day-NightNight photos against a map built in daylight.
2022LaMARAR devices, with queries often recorded months after the map.

7-Scenes (Shotton et al., CVPR 2013) covers small indoor rooms recorded with a Kinect. Cambridge Landmarks arrived with PoseNet in 2015 and covers outdoor scenes in central Cambridge. Aachen Day-Night (Sattler et al., CVPR 2018) localizes night photos against a map built in daylight, scored from 25 cm and 2° up to 5 m and 10°. LaMAR (Sarlin et al., ECCV 2022) comes from ETH Zurich and Microsoft and was built for augmented reality. Its three Zurich scenes were captured over about a year, queries were often recorded months after the map, and it scores at 10 cm and 1° and at 1 m and 5°.

The long-running leaderboard for Aachen Day-Night and its sister datasets is at visuallocalization.net.

MultiSet Gen2.5 on LaMAR

Averaged over LaMAR's three scenes, MultiSet Gen2.5 localizes 79.74% of phone queries within 10 cm and 1°, from a single photo per query with Deep Search. That's more than any published method. The previous best published result, ImLoc (Jiang et al., 2026), is 74.24%. Within 1 m and 5° the figures are 89.07% and 85.89%.

These are validation-split results, with the map built only from LaMAR's own images and laser scans. The full table, protocol and sources are in the Gen2.5 announcement.

LaMAR · phone queries localized, one photo each

Three scenes in Zurich

Validation split. ImLoc and hloc (SuperPoint with SuperGlue) from Jiang et al., ImLoc, 2026, Table 2. LaMAR official pipeline with MegaLoc retrieval from Berton and Masone, CVPR Workshops 2025, Table 2. Gen2.5 with Deep Search. Scene renders use LaMAR's own images, Sarlin et al., ECCV 2022.

MultiSet Gen2.5 on LaMAR, 48 second video
06

Where it fails in the field, and what helps

Field queries are harder than benchmark ones, and the conditions that fail them are the ones LaMAR was designed around.

Four conditions that fail field queries · tap one to see what answers it
A coarse position hintGPS or UWB narrows the search to the right part of the map.
Four to six framesA multi-frame query puts more of the scene in view.
Deep SearchMultiSet's higher-recall mode searches more of the map before answering.
A motion cross-checkThe SDK discards a pose that implies an impossible jump.
A re-scan, versionedA new map version keeps anchored content where it was placed.

Photos are LaMAR query images, Sarlin et al., ECCV 2022, CC BY-SA 4.0.

Look-alike spaces. Stations, office floors and plant rows repeat, so a photo of one platform can resemble another.
‍Time since the scan. Lighting shifts, pallets move and walls get repainted in the months after a map is captured.
‍Awkward views. Close-ups, motion blur, odd angles and partial occlusion leave little of the scene in frame.
‍Weak texture. Blank walls, glass and uniform racking give the camera very little to recognize.

07

Visual localization as an API

Taking visual localization from a paper to a product means hosting maps, answering queries in seconds and keeping maps current as the site changes. MultiSet runs all of that as a service.

One photo in, one pose back · about two seconds
Request
POST /v1/vps/map/queryAuthorization: Bearer YOUR_TOKEN{  "mapCode": "YOUR_MAP_CODE",  "queryImage": "<one photo, base64>",  "resolution": { "width": 960, "height": 720 },  "cameraIntrinsics": {    "fx": 669.53, "fy": 669.53,    "px": 480.0, "py": 360.0  }}
Response · 200
{  "poseFound": true,  "position": { "x": 3.00, "y": 1.60, "z": 5.50 },  "rotation": { "x": 0.00, "y": 0.38,                "z": 0.00, "w": 0.92 },  "confidence": 0.87}
positionWhere the camera is, in metres, in the map's own frame.
rotationWhich way it faces, as a quaternion.
confidenceHow far to trust the pose before placing anything on it.
REST APIUnityiOSAndroidWebXRMeta QuestSmart glassesUnitree Go2

Example values from the coordinate systems guide on docs.multiset.ai. Add convertToGeoCoordinates to get a WGS-84 GeoPose back as well.

Maps from any scan. E57 from Leica, NavVis, FARO or Matterport, Matterport MatterPak, Gaussian splats, 360 video, and LiDAR or phone captures from the MultiSet app. Phone mapping without LiDAR reaches the same localization accuracy and suits areas under 5,000 sq ft.

Accuracy and speed. Sub-5 cm median 6-DoF error, an SLA under 10 cm, and drift under 1 cm at 10 m. A cloud query takes 1.5 to 2.5 seconds for one frame and 2.7 to 3.5 seconds for four to six. On-device localization runs in about 52 ms.

SDKs for each device. Unity, native iOS and Android, WebXR, Meta Quest and smart glasses, a Unitree Go2 adapter for ground robots, with ROS 2 as a supported SDK target. A REST API covers anything else with a camera.

Deployment where your data must live. MultiSet's cloud, a single-tenant private cloud in your region of choice, on-premises, or fully on-device.

Versioned maps. Re-scan a changed site and anchored content stays where it was placed, and a bad update can be rolled back.

The Free plan doesn't expire, so you can map a space and test localization against it before talking to anyone. Start free or request a demo.

Frequently asked questions

Is visual localization the same as a visual positioning system?

Visual localization is the technique. A visual positioning system (VPS) is the product built around it, with map hosting, a query API, SDKs and map updates, and it runs visual localization on every query. More on the visual positioning system page.

How accurate is visual localization?

It depends on the method, the map, and how far the query view has drifted from what was scanned. On LaMAR, the best published method places 74.24% of phone photos within 10 cm and 1°, and MultiSet Gen2.5 places 79.74%. On MultiSet production maps the median error is under 5 cm.

Does visual localization need LiDAR?

Querying needs only the ordinary RGB camera already on the phone, headset or robot. The map can come from a laser scanner, a LiDAR phone or a phone without LiDAR, and MultiSet's phone mapping without LiDAR gives the same localization accuracy on areas under 5,000 sq ft.

Does it work outdoors and without GPS?

Yes. It uses only the image and the map, so it works under a roof, inside a plant, or in an urban canyon where GPS wanders. LaMAR's old-town Zurich scene is one of its standard outdoor tests. When GPS is available it helps as a hint and speeds up the search.

What's the difference between camera localization and camera pose estimation?

Camera localization finds pose against a map of a known place. Camera pose estimation also includes the relative pose between two photos and pose against a printed target, where no map exists.

Is there a visual localization API?

MultiSet's REST API takes one image, or four to six frames, and returns a 6-DoF pose with a confidence value. The Unity, iOS, Android and WebXR SDKs wrap the same call, and the docs cover the request and response format.