Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Bundle adjustment (BA) is the joint optimization of the 3D structure of a scene and the parameters of the cameras that observed it. Given a set of images, approximate camera poses and approximate positions of 3D feature points, bundle adjustment refines all of them together so that the projected 3D points agree as closely as possible with where the features were actually measured in the images. Bill Triggs, Philip McLauchlan, Richard Hartley and Andrew Fitzgibbon define it in their survey "Bundle Adjustment - A Modern Synthesis" as "the problem of refining a visual reconstruction to produce jointly optimal 3D structure and viewing parameter (camera pose and/or calibration) estimates".[1]

The method began in aerial photogrammetry in the late 1950s and became the standard final refinement step in computer vision reconstruction.[1][2] In VR and AR it is the optimization at the core of many keyframe-based SLAM and visual-inertial odometry systems, from Georg Klein and David Murray's Parallel Tracking and Mapping (PTAM) for handheld AR to the mapping thread of Meta's Oculus Insight headset tracking.[3][4] It is also the refinement stage of structure from motion pipelines that reconstruct scenes from photographs.[2]

Reviewed 6 October 2026. Checked every quotation, date, number and attribution against the Triggs et al. survey, SBA, BAL, Multicore BA, PTAM, Why Filter, ORB-SLAM, ORB-SLAM3, VINS-Mono, preintegration, BA-Net, BARF, DROID-SLAM and pi-BA papers (DOIs via Crossref), the Ceres, COLMAP 4.1.0 and Project Aria documentation, and the Meta Oculus Insight sources. About review dates.

Definition

The name comes from the geometry of image formation. Triggs and colleagues write that it "refers to the 'bundles' of light rays leaving each 3D feature and converging on each camera centre, which are 'adjusted' optimally with respect to both feature and camera positions". They give a second reading as well: unlike independent model methods, which merge partial reconstructions without updating their internal structure, all of the structure and camera parameters are adjusted together "in one bundle".[1]

The unknowns are the 3D coordinates of the scene features, the camera poses and, optionally, the camera calibrations. Triggs and colleagues describe the result as "really just a large sparse geometric parameter estimation problem".[1] The quantity being minimized is usually the reprojection error. The Ceres Solver documentation states the goal as finding "3D point positions and camera parameters that minimize the reprojection error", usually formulated as a non-linear least squares problem in which each residual is the squared distance between an observed feature location and the projection of the corresponding 3D point onto that camera's image plane.[5]

Bundle adjustment is a refinement method, not a way to build a reconstruction from nothing. Manolis Lourakis's description of his SBA package says that "provided with initial estimates, BA simultaneously refines motion and structure by minimizing the reprojection error between the observed and predicted image points", and calls it "almost invariably used as the last step of every feature-based multiple view reconstruction vision algorithm".[2] The starting estimates come from other reconstruction methods; Triggs and colleagues do not discuss these initialization methods in detail, noting that appropriate ones are "plentiful and well-known in the vision community".[1]

Several variants are defined by what is held fixed. The SBA library offers full "motion and structure" adjustment, motion-only adjustment in which the 3D points stay fixed (which its author notes is "strictly speaking ... not BA" but useful for pose estimation from known 3D-2D correspondences, the Perspective-n-Point setting), and structure-only adjustment in which the cameras stay fixed.[2]

How it works

Cost function

Classically, bundle adjustment is posed as a non-linear least squares problem: the cost is quadratic in the reprojection errors, and outliers are removed by explicit screening. Triggs and colleagues argue that this is not general enough, and develop the theory for arbitrary robust cost functions instead. Their recommendation is that the cost should be "a realistic approximation to the negative log likelihood of the total (inlier + outlier) error distribution", and they note that "compared to most real-world measurement distributions, the tails of a Gaussian are unrealistically small".[1] PTAM is an example: apart from a Tukey M-estimator that down-weights outliers, its authors describe their implementation as "almost textbook" Levenberg-Marquardt bundle adjustment.[3]

Damped Newton steps

The cost is minimized iteratively. At each step the solver linearizes the projections and solves a linear system for a parameter update. Damped Newton methods add a regularizing term, solving (H + λW)δx = -g, where H is the Hessian (or its Gauss-Newton approximation), g the gradient and λ a weighting factor. If λ is adjusted heuristically, shortening the step when the prediction is poor, the method is the Levenberg-Marquardt algorithm; if it limits the step to a dynamically chosen maximum size, it is a trust-region method.[1] Levenberg-Marquardt is the usual choice in practice: SBA, PTAM and ORB-SLAM all use it.[2][3][6] In their concluding recommendations Triggs and colleagues advise a second-order Gauss-Newton method with sparse factorization of the Hessian for batch problems, and report "the continued dominance of second order (Newton) algorithms" despite efforts to make simpler first-order methods converge faster.[1]

Sparsity and the Schur complement

A general-purpose solver applied to bundle adjustment is slow because the problem has a very large number of unknowns. What makes it tractable is its sparsity: each image measurement depends on only one camera and one 3D point, and different points do not interact directly. Lourakis notes that this "lack of interaction among parameters for different 3D points and cameras" gives the normal equations a sparse block structure, which he calls the "arrowhead" type of sparseness common in structure from motion problems.[2]

The standard way to exploit it is the Schur complement. Because the block of the Hessian that couples the structure parameters to each other is block diagonal (one small block per 3D point), the point parameters can be eliminated cheaply, leaving a much smaller "reduced camera system" that involves only the cameras. Once it is solved, the points are recovered by back-substitution.[1] Sameer Agarwal, Noah Snavely, Steven Seitz and Richard Szeliski call this "the Schur complement trick" and note that it is effective because in typical problems the number of cameras is much smaller than the number of points.[7] PTAM's authors give the effect in numbers: exploiting the sparseness reduces the cost of the matrix factorizations from O((N + M)3) to O(N3) for N keyframes and M map points, although in their system the computation was in most cases dominated by O(N2M) camera-point-camera products.[3] When a sequence has more camera parameters than structure parameters, the elimination can be reversed to leave a reduced structure system instead.[1]

For very large problems even the reduced camera system becomes expensive. Agarwal and colleagues observed that SBA, which uses a dense Cholesky factorization of the reduced camera matrix, has space complexity quadratic and time complexity cubic in the number of photos, which "works well for problems with a few hundred photos" but becomes "prohibitively expensive" for tens of thousands. They proposed inexact Newton methods that compute the step with preconditioned conjugate gradients, showed that the Schur complement can itself be interpreted as a form of preconditioning, and concluded that truncated Newton methods with relatively simple preconditioners "offer state of the art performance for large-scale bundle adjustment".[7]

Gauge freedom

A reconstruction made only from images has no absolute reference frame: the coordinate system can be changed without affecting the underlying geometry, so a solver has to decide where to place it relative to the reconstructed cameras and features. Triggs and colleagues treat this as gauge freedom, where a gauge "just means reference frame", and stress that uncertainties of reconstructed points or cameras are only meaningful once the frame and its uncertainty are specified.[1] In practice the gauge is fixed by holding some parameters constant. PTAM's full bundle adjustment adjusts every keyframe pose except the first, which is kept as "a fixed datum", and the SBA interface lets users mark leading points and images whose parameters should not be modified.[3][2]

Local, global and motion-only adjustment

Real-time systems rarely re-optimize everything. In PTAM's local bundle adjustment the mapping thread optimizes five keyframes (the newest and the four nearest to it) and all map points they see, while other keyframes that observed those points are included as fixed constraints.[3] ORB-SLAM uses a similar scheme based on its covisibility graph: the current keyframe, the keyframes connected to it and the points they see are optimized, and other keyframes that observe those points stay fixed.[6] ORB-SLAM also deletes redundant keyframes, partly because "bundle adjustment complexity grows with the number of keyframes".[6] At the other extreme, a motion-only adjustment optimizes just the latest poses (in VINS-Mono, poses and velocities) while the feature positions are held constant, which is cheap enough to run at camera rate (see below).[8]

History

Bundle adjustment rests on the method of least squares, which Triggs and colleagues trace to Gauss and Legendre around 1795 to 1820. Gauss's 1823 monograph already contained the Gauss-Newton iteration for nonlinear problems, and Helmert's nested dissection of the 1880s for geodetic networks was, in their words, "probably the first systematic sparse matrix method".[1]

The photogrammetric bundle method itself was developed for the U.S. Air Force by Duane C. Brown and his co-workers in 1957-1959, once electronic computers capable of solving reasonably large least squares problems had become available. Brown's 1958 report, "A solution to the general problem of multiple station analytical stereotriangulation" (RCA-MTP Data Reduction Technical Report No. 43), eliminated the structure parameters from the normal equations, solved the remaining reduced camera system by dense Gaussian elimination, and recovered the structure by back-substitution. Triggs and colleagues note that Brown's method "is probably what most vision researchers think of as 'bundle adjustment'".[1] The early focus was aerial cartography with calibrated cameras. Self-calibration, the estimation of internal camera parameters during the adjustment, was first discussed around 1964 and implemented by 1968, and even with carefully calibrated aerial cameras it improved accuracy by factors of around 2 to 10. For large aerial blocks, Gyer and Brown's 1967 recursive partitioning method exploited the regular strip structure; Brown reported adjusting a block of 162 photos on a machine with only 8k words of memory, and 1,000-photo blocks were feasible by mid-1967.[1]

Many of these results were little known in computer vision, where, according to Triggs and colleagues, they were "gradually being reinvented". Triggs, McLauchlan, Hartley and Fitzgibbon wrote their survey to give implementors in the vision community an accessible synthesis of the photogrammetry and geodesy literature and to correct what they saw as common misconceptions in the vision literature, among them the claim that bundle adjustment is slow. They attributed that slowness to "the unthinking use of a general-purpose optimization routine that completely ignores the problem structure and sparseness", and called bundle adjustment the dominant structure refinement technique for real applications "after 40 years of research".[1] The survey appeared in 2000 in Vision Algorithms: Theory and Practice, the proceedings of the International Workshop on Vision Algorithms held in Corfu, Greece.[1]

Free software followed. Lourakis and Antonis Argyros released SBA, a generic sparse bundle adjustment package in C/C++ under the GNU GPL, described in a 2009 paper in ACM Transactions on Mathematical Software; its homepage reports solving a problem with 54 cameras, 5,207 points and 24,609 image projections (15,999 variables) in about 7 seconds on a 1.8 GHz Pentium 4.[2][9] Internet-scale reconstruction from community photo collections then pushed problem sizes to tens of thousands of images, which led to the "Bundle Adjustment in the Large" work and its public benchmark datasets built from street-side imagery and Flickr collections of Trafalgar Square, Dubrovnik, Venice and Rome.[7][10] Changchang Wu, Agarwal, Brian Curless and Seitz's "Multicore Bundle Adjustment" (CVPR 2011) reported CPU and GPU implementations up to ten and thirty times faster, respectively, than the previous state of the art.[11]

Applications in VR and AR

Keyframe SLAM for handheld AR

Monocular SLAM was first solved by filtering, an approach in which, as the ORB-SLAM authors put it, every frame is processed by the filter to jointly estimate the map and the camera pose.[6] Klein and Murray's PTAM, presented at ISMAR 2007, split tracking and mapping into two parallel threads on a dual-core computer so that the mapping thread could run bundle adjustment on a small set of keyframes, a technique they described as having "long been a proven method for offline Structure-from-Motion (SfM)". The tracking thread ran at frame rate while the mapper refined the map in the background.[3] On an Intel Core 2 Duo at 2.66 GHz, they reported mean local bundle adjustment times of 170 ms for maps of 2 to 49 keyframes and 440 ms for 100 to 149 keyframes, against 380 ms and 6.9 s for global adjustment. Beyond about 100 keyframes the global adjustment could no longer keep up with exploration and was almost always aborted; they put the practical limit of the system at around 6,000 points and 150 keyframes.[3]

Hauke Strasdat, J. M. M. Montiel and Andrew Davison later compared the two approaches directly. In "Visual SLAM: Why Filter?" (Image and Vision Computing, 2012), which extends their ICRA 2010 paper "Real-Time Monocular SLAM: Why Filter?" (winner of the conference's best vision paper award), they ran Monte Carlo experiments on stereo and monocular SLAM and concluded that "keyframe bundle adjustment outperforms filtering, since it gives the most accuracy per unit of computing time".[12][13] ORB-SLAM (2015) built on PTAM, with local bundle adjustment over a covisibility graph, optimized with Levenberg-Marquardt in the g2o graph optimization framework.[6] Its authors argued that keyframe-based approaches allow "more costly but accurate bundle adjustment optimizations, as mapping is not tied to frame-rate", while filtering wastes computation on consecutive frames with little new information and accumulates linearization errors.[6] They also called bundle adjustment "the gold standard method for the offline Structure From Motion problem" and credited PTAM and earlier work by Mouragnon and colleagues with bringing it into real-time SLAM.[6]

Visual-inertial bundle adjustment

Headsets and phones combine cameras with an inertial measurement unit, and the optimization can include both. In VINS-Mono, a monocular visual-inertial estimator from the Hong Kong University of Science and Technology, the authors "use a visual-inertial bundle adjustment formulation", minimizing a prior term plus IMU and visual residuals over a sliding window of keyframes. Because the full optimization could take more than 50 ms on embedded computers, they also run a lightweight motion-only visual-inertial bundle adjustment that optimizes only the latest poses and velocities in about 5 ms, giving camera-rate (about 30 Hz) output that they describe as "particularly beneficial for drone and AR applications"; the system was also ported to iOS.[8] Because inertial measurements arrive at a high rate, adding them directly makes the number of variables in the optimization grow quickly. Christian Forster, Luca Carlone, Frank Dellaert and Davide Scaramuzza addressed this with on-manifold IMU preintegration, which combines the inertial measurements between selected keyframes into single relative motion constraints.[14]

The ORB-SLAM3 paper (2021) states that modern SLAM systems "rely on Maximum a Posteriori (MAP) estimation, which in the case of visual sensors corresponds to Bundle Adjustment", either geometric BA over feature reprojection errors or photometric BA over pixel intensities in direct methods. Its authors identify OKVIS as the first tightly coupled visual odometry system based on keyframes and bundle adjustment, and ORB-SLAM3 preintegrates IMU measurements between consecutive frames for its visual-inertial optimization.[15]

Headset tracking

Oculus Insight, the inside-out tracking system that Meta (then Facebook) shipped on the Oculus Quest and Oculus Rift S, is built on visual-inertial SLAM; its engineers describe a mapper thread that "modifies the map, sending updated copies to the tracker thread, which uses camera frames to estimate poses".[16] Ananth Ranganathan of the Oculus computer vision team later explained that the mapper, which runs much more slowly than the tracker, selects keyframes and adds points to the map, and that it "is very compute-intensive because it's also doing the bundle adjustment, which is a large optimization problem". He described the cost being minimized as a combination of two error terms, the reprojection error of map points in the keyframes and an IMU integration term, and said that after this bundle adjustment "the map is globally consistent".[4]

Egocentric capture

The Machine Perception Services (MPS) that Meta runs on recordings from Project Aria glasses make the same distinction between fast odometry and globally optimized maps. Their documentation describes the open loop trajectory as high-frequency odometry with good local accuracy but accumulating drift, while closed loop trajectories "are fully bundle adjusted with detected loop closures, reducing the VIO drift"; it also notes that the loop-closure correction can make short-term relative accuracy worse than in the open loop output. Both trajectories are output at the IMU rate of 1 kHz.[17]

3D capture and neural scene reconstruction

Bundle adjustment is also the final refinement step of offline structure from motion and photogrammetry pipelines, which recover camera poses and sparse point clouds from photographs.[2] The open-source SfM package COLMAP added Caspar, a GPU-accelerated bundle adjustment backend, in version 4.1.0 (June 2026); the release notes describe it as often one to two orders of magnitude faster than the Ceres CUDA backend for medium- to large-scale problems.[18] The idea also carries over to learned scene representations: BARF (Bundle-Adjusting Neural Radiance Fields, ICCV 2021) by Chen-Hsuan Lin, Wei-Chiu Ma, Antonio Torralba and Simon Lucey trains a neural radiance field from imperfect or unknown camera poses by optimizing the scene representation and the camera registration jointly.[19]

Software

Software Developer Notes
SBA Manolis Lourakis and Antonis Argyros (FORTH) Generic sparse Levenberg-Marquardt bundle adjustment in C/C++, GNU GPL; Schur complement of the points submatrix[2]
Ceres Solver Sameer Agarwal, Keir Mierle and the Ceres Solver Team Open-source C++ non-linear optimization library, Apache 2.0 license, in production at Google since 2010; its documentation says large-scale bundle adjustment was "one of the main reasons" it was written[5][20]
g2o Kuemmerle et al. Graph optimization framework whose Levenberg-Marquardt implementation ORB-SLAM uses for all its optimizations, including bundle adjustment[6]
Multicore Bundle Adjustment Changchang Wu, Sameer Agarwal, Brian Curless, Steven M. Seitz CPU and GPU solver, reported up to 10 times (CPU) and 30 times (GPU) faster than earlier methods[11]
COLMAP COLMAP project SfM pipeline with Ceres-based bundle adjustment and, since 4.1.0, the GPU Caspar backend[18]

Research

Research continues on speed, scale and learning. Agarwal and colleagues' inexact Newton work and Wu and colleagues' multicore solver targeted Internet-scale reconstruction.[7][11] Shuzhen Qin, Qiang Liu, Bo Yu and Shaoshan Liu's π-BA (IEEE FCCM 2019) is a hardware-software co-designed bundle adjustment engine on an embedded FPGA system-on-chip that exploits the fact that not every point appears in every image; the authors report better performance and lower power consumption than existing software implementations.[21]

Learning-based systems combine bundle adjustment with neural networks:

System Authors and venue Role of bundle adjustment
BA-Net Chengzhou Tang and Ping Tan, ICLR 2019 Solves structure from motion by "feature-metric" bundle adjustment inside a differentiable network, so the network learns features that make the BA problem more tractable and recovers dense per-pixel depth[22]
BARF Chen-Hsuan Lin, Wei-Chiu Ma, Antonio Torralba, Simon Lucey, ICCV 2021 Joint optimization of a neural radiance field and camera poses from imperfect or unknown initial poses[19]
DROID-SLAM Zachary Teed and Jia Deng, NeurIPS 2021 Deep SLAM system that updates camera poses and per-pixel depth through a "Dense Bundle Adjustment layer"; trained on monocular video but able to use stereo or RGB-D input at test time[23]

See also

References

  1. ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 1.15 Bill Triggs, Philip McLauchlan, Richard Hartley, Andrew Fitzgibbon (2000). "Bundle Adjustment - A Modern Synthesis". Vision Algorithms: Theory and Practice, Lecture Notes in Computer Science, vol. 1883, pp. 298-372. Springer. doi:10.1007/3-540-44480-7_21. https://doi.org/10.1007/3-540-44480-7_21. Retrieved 2026-10-06.
  2. ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 Manolis Lourakis. "sba: A Generic Sparse Bundle Adjustment C/C++ Package Based on the Levenberg-Marquardt Algorithm". Institute of Computer Science, FORTH. https://users.ics.forth.gr/~lourakis/sba/. Retrieved 2026-10-06.
  3. ↑ 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 Georg Klein, David Murray (2007). "Parallel Tracking and Mapping for Small AR Workspaces". 6th IEEE and ACM International Symposium on Mixed and Augmented Reality (ISMAR 2007). doi:10.1109/ISMAR.2007.4538852. https://www.robots.ox.ac.uk/~gk/publications/KleinMurray2007ISMAR.pdf. Retrieved 2026-10-06.
  4. ↑ 4.0 4.1 Ananth Ranganathan (2022-06-27). "The Oculus Insight positional tracking system". AI Accelerator Institute. https://www.aiacceleratorinstitute.com/the-oculus-insight-positional-tracking-system-2/. Retrieved 2026-10-06.
  5. ↑ 5.0 5.1 "Non-linear Least Squares (tutorial)". Ceres Solver documentation. http://ceres-solver.org/nnls_tutorial.html. Retrieved 2026-10-06.
  6. ↑ 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 Raul Mur-Artal, J. M. M. Montiel, Juan D. Tardos (2015). "ORB-SLAM: a Versatile and Accurate Monocular SLAM System". IEEE Transactions on Robotics, vol. 31, no. 5, pp. 1147-1163. doi:10.1109/TRO.2015.2463671. https://arxiv.org/abs/1502.00956. Retrieved 2026-10-06.
  7. ↑ 7.0 7.1 7.2 7.3 Sameer Agarwal, Noah Snavely, Steven M. Seitz, Richard Szeliski (2010). "Bundle Adjustment in the Large". European Conference on Computer Vision (ECCV 2010), Crete, Greece. https://grail.cs.washington.edu/projects/bal/bal.pdf. Retrieved 2026-10-06.
  8. ↑ 8.0 8.1 Tong Qin, Peiliang Li, Shaojie Shen (2018). "VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator". IEEE Transactions on Robotics, vol. 34, no. 4, pp. 1004-1020. doi:10.1109/TRO.2018.2853729. https://arxiv.org/abs/1708.03852. Retrieved 2026-10-06.
  9. ↑ Manolis I. A. Lourakis, Antonis A. Argyros (2009). "SBA: A Software Package for Generic Sparse Bundle Adjustment". ACM Transactions on Mathematical Software, vol. 36, no. 1, pp. 1-30. doi:10.1145/1486525.1486527. https://doi.org/10.1145/1486525.1486527. Retrieved 2026-10-06.
  10. ↑ "Bundle Adjustment in the Large". University of Washington GRAIL. https://grail.cs.washington.edu/projects/bal/. Retrieved 2026-10-06.
  11. ↑ 11.0 11.1 11.2 Changchang Wu, Sameer Agarwal, Brian Curless, Steven M. Seitz (2011). "Multicore Bundle Adjustment". University of Washington GRAIL (CVPR 2011). https://grail.cs.washington.edu/projects/mcba/. Retrieved 2026-10-06.
  12. ↑ Hauke Strasdat, J. M. M. Montiel, Andrew J. Davison (2012). "Visual SLAM: Why Filter?". Image and Vision Computing, vol. 30, no. 2, pp. 65-77. doi:10.1016/j.imavis.2012.02.009. https://www.doc.ic.ac.uk/~ajd/Publications/strasdat_etal_ivc2012.pdf. Retrieved 2026-10-06.
  13. ↑ "Andrew Davison: Publications". Imperial College London. https://www.doc.ic.ac.uk/~ajd/publications.html. Retrieved 2026-10-06.
  14. ↑ Christian Forster, Luca Carlone, Frank Dellaert, Davide Scaramuzza (2017). "On-Manifold Preintegration for Real-Time Visual-Inertial Odometry". IEEE Transactions on Robotics, vol. 33, no. 1, pp. 1-21. doi:10.1109/TRO.2016.2597321. https://arxiv.org/abs/1512.02363. Retrieved 2026-10-06.
  15. ↑ Carlos Campos, Richard Elvira, Juan J. Gomez Rodriguez, Jose M. M. Montiel, Juan D. Tardos (2021). "ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM". IEEE Transactions on Robotics, vol. 37, no. 6, pp. 1874-1890. doi:10.1109/TRO.2021.3075644. https://arxiv.org/abs/2007.11898. Retrieved 2026-10-06.
  16. ↑ Joel Hesch, Anna Kozminski, Oskar Linde (2019-08-22). "Powered by AI: Oculus Insight". Meta AI. https://ai.meta.com/blog/powered-by-ai-oculus-insight/. Retrieved 2026-10-06.
  17. ↑ "MPS output - Trajectory". Project Aria Tools documentation. Meta. https://facebookresearch.github.io/projectaria_tools/docs/data_formats/mps/slam/mps_trajectory. Retrieved 2026-10-06.
  18. ↑ 18.0 18.1 "COLMAP 4.1.0 release notes". GitHub. COLMAP. 2026-06-26. https://github.com/colmap/colmap/releases/tag/4.1.0. Retrieved 2026-10-06.
  19. ↑ 19.0 19.1 Chen-Hsuan Lin, Wei-Chiu Ma, Antonio Torralba, Simon Lucey (2021). "BARF: Bundle-Adjusting Neural Radiance Fields". IEEE/CVF International Conference on Computer Vision (ICCV 2021). https://arxiv.org/abs/2104.06405. Retrieved 2026-10-06.
  20. ↑ "Ceres Solver - A Large Scale Non-linear Optimization Library". Ceres Solver documentation. http://ceres-solver.org/index.html. Retrieved 2026-10-06.
  21. ↑ Shuzhen Qin, Qiang Liu, Bo Yu, Shaoshan Liu (2019). "π-BA: Bundle Adjustment Acceleration on Embedded FPGAs with Co-observation Optimization". IEEE International Symposium on Field-Programmable Custom Computing Machines (FCCM 2019). https://arxiv.org/abs/1905.02373. Retrieved 2026-10-06.
  22. ↑ Chengzhou Tang, Ping Tan (2019). "BA-Net: Dense Bundle Adjustment Networks". International Conference on Learning Representations (ICLR 2019). https://openreview.net/forum?id=B1gabhRcYX. Retrieved 2026-10-06.
  23. ↑ Zachary Teed, Jia Deng (2021). "DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras". Advances in Neural Information Processing Systems (NeurIPS 2021). https://arxiv.org/abs/2108.10869. Retrieved 2026-10-06.