Pablo García Ruiz logo
Back to projects
20241st AuthorPaper

Indoor Camera Positioning

Large-Scale Indoor Camera Positioning Using Fiducial Markers

Computer VisionOpen Source
Indoor Camera Positioning

Abstract

Estimating the pose of large arrays of fixed indoor cameras is essential for augmented reality, autonomous navigation, video surveillance, and logistics. This work presents a methodology for large-scale indoor camera positioning using printed fiducial markers, designed to scale to camera networks far beyond what prior overlap-dependent methods could handle.

Markers are placed in the overlapping views of nearby cameras to establish pairwise spatial relationships, then progressively repositioned to connect the entire camera network, including cameras that never directly share a view. A final optimization phase refines the whole network by minimizing reprojection error while enforcing real-world constraints such as marker coplanarity.

Unlike prior approaches, which depend on specific environmental features or heavy camera overlap, this method scales to arbitrarily large indoor spaces. It was validated on both synthetic datasets (rendered in Blender) and real datasets spanning corridors, floors, and entire buildings, outperforming existing techniques throughout.

How It Works

Printed fiducial markers are placed wherever nearby fixed cameras already share a view, giving each such pair a set of common reference points. Those markers are then progressively picked up and repositioned deeper into the space, pair by pair, so that even cameras with no direct visual overlap end up connected through a chain of shared markers spanning the whole network.

A corridor with four ceiling-mounted cameras. Markers are placed on the floor where two neighbouring cameras both see them, then picked up and moved further along, so each step links the next pair of cameras. Below, the same corridor seen from above.
Markers are placed where two cameras already share a view, then moved along to link the next pair, and the next.

A final optimization phase treats the entire camera network at once, refining every pose jointly by minimizing the total reprojection error across all markers while enforcing physical constraints such as marker coplanarity, which is what lets the method keep scaling cleanly as more cameras are added, instead of accumulating drift the way purely sequential, camera-by-camera approaches do.

Four panels. Three cameras observe three markers on the floor; each camera's own view is shown; every camera-marker observation becomes an edge in a dense graph; that graph is then reduced to a single relationship between each pair of cameras.
Every observation is an edge. The dense graph on the left reduces to one relationship per camera pair, which is what the final optimization refines.

To validate the method at scale without the cost of instrumenting real buildings for every experiment, the evaluation combines artificial datasets (full indoor environments rendered in Blender with known ground-truth camera poses) with real datasets captured across corridors, floors, and a multi-story building, each pairing two independent camera sets (A and B) against shared control points.

Artificial (Blender-rendered) and real indoor datasets used to validate the large-scale camera positioning method, showing fixed cameras, control points, and marker placements across corridors, floors, and buildings.
Artificial and real validation datasets, from García-Ruiz et al., "Large-Scale Indoor Camera Positioning Using Fiducial Markers," Sensors 2024.

Evaluation

The method was benchmarked against existing overlap-dependent approaches on both the synthetic Blender-rendered environments and the real corridor, floor, and multi-story-building datasets shown above, outperforming prior techniques throughout while scaling to camera networks far larger than what earlier methods could handle.

Synthetic (Blender)CorridorFloorMulti-story buildingLarge-scale networks

Results

DatasetCamerasError (Set A)Error (Set B)
Synthetic corridor200.63 cm / 0.030°0.46 cm / 0.022°
Synthetic duplex (2 floors)90 / 946.56 cm / 0.235°9.77 cm / 0.379°
Real adjacent rooms—6.63 cm5.62 cm
Real corridor (50 m²)—1.22 cm0.84 cm
Real complete floor (214 m²)5114.82 cm15.72 cm

Translation error (and rotation error where reported), after full optimization. Sets A/B are independently captured camera networks sharing the same control points.

Every dataset above was covered with just 9 distinct markers, reused across the network. The method outperformed MarkerMapper on the adjacent-rooms benchmark, and was the only one able to compute camera poses at all in the corridor and full-floor scenarios, which require marker reuse.

Download

Code and datasets are readily accessible to the research community.

C++OpenCVCMakeQt CreatorBlender

Collaborators

Citing

If you use this work in your research, please cite:

BibTeX
@article{garcia-ruiz2024indoor,
  author  = {Garc\'{\i}a-Ruiz, Pablo and Romero-Ramirez, Francisco J. and Mu\~{n}oz-Salinas, Rafael and Mar\'{\i}n-Jim\'{e}nez, Manuel J. and Medina-Carnicer, Rafael},
  title   = {Large-Scale Indoor Camera Positioning Using Fiducial Markers},
  journal = {Sensors},
  volume  = {24},
  year    = {2024},
  number  = {13},
  articleno = {4303},
  doi     = {10.3390/s24134303},
  url     = {https://pmc.ncbi.nlm.nih.gov/articles/PMC11244017/}
}

Paper

The full paper is openly available (open access) in Sensors, hosted on PubMed Central.

View on PubMed Central

License

This software is licensed under MIT License.