Does bundle adjustment repair wrong camera poses in a multi-view reconstruction?
research/sensing-ba
With 12 views, 0.5 px noise and every camera pose wrong, bundle adjustment cuts mean surface error from 0.0117 to 0.0014 object radii (the true-pose floor), 8× here and 73× at 0.2 radii of position error, but only 1.4× at 4 px of pixel noise and not at all with 4 views. Synthetic only
What it found
Follows sensing-recon, which found a 1° camera pose error costs as much as about 2 px of pixel noise. On the same synthetic bumpy-ellipsoid rig, every camera gets a random rotation (0–4° per axis) and position (0–0.2 object radii) error; sparse bundle adjustment (SciPy least_squares) then refines all poses and points from the wrong-pose triangulation, and both are scored after a similarity alignment. With 12 views, 0.5 px noise, 0.5° and 0.02 radii the mean surface error falls from 0.0117 to 0.0014, equal to triangulation with true poses; the gain is 73× at 0.2 radii of position error but only 1.4× at 4 px noise (where pixel noise sets the error) and 0.9× with 4 views. A pose prior with the true sigma changed nothing. Limits: synthetic, matches given and correct, no outliers, known intrinsics, a start close to the truth, and alignment to the true points; 8 seeds per cell.
A figure from its own output
Paper, code and results
More in Sensing, imaging and 3D
- Does bundle adjustment that solves for the focal length survive a wrong assumed focal length or lens distortion?With 12 views, wrong poses and a focal length told 5% wrong, a fixed-focal adjustment costs 1.2× the true-focal error (2.7× at 20%); solving for the focal returns the floor with the focal within 0.3%, and for k1 = −0.3 distortion 0.0034 falls to 0.0015, but not at 4 views or above 2 px noise. Synthetic only
- If the lens has a second radial term the solver does not model, does self-calibrating bundle adjustment still recover the surface?Rendering with k1 = −0.2 and k2 swept from −0.2 to +0.4, a bundle adjustment solving for the focal and k1 only returns 0.0015 object radii, the same as one that also solves k2, against 0.0022–0.0030 with no distortion model; the lens parameters are not separately identified (k1 stays near −0.16, k2 sits about 0.16 low) and the gain vanishes by 2 px noise. Synthetic only
- Does a wide field of view make the second radial lens term identifiable in self-calibrating bundle adjustment?Moving the camera in and shortening the focal length (800 to 400 px) raises the largest normalised radius from 0.34 to 0.85, and the spread of the fitted k2 over seeds falls from 0.33 to 0.02 with its mean within 0.01 of truth; the surface then needs k2 (0.0027 with k1 only against 0.0020 with both). Synthetic only
- How many mismatched feature observations can bundle adjustment survive, and does a robust loss help?With 12 views and wrong camera poses, 2% of observations replaced by random pixels already raise bundle-adjustment surface error from 0.0014 to 0.079 object radii, and Huber or Cauchy loss from the usual all-view start only halve that; a per-point RANSAC start fixes 5% (0.0319) but only 24 views get back to the clean floor at 10% (0.0012). Synthetic only
- What does an unmodelled principal-point offset cost a self-calibrating bundle adjustment, and does a wide field of view help or hurt?A 10 px principal-point offset held at the image centre raises the surface error from 0.0019 to 0.0043 object radii on the wide rig (focal 3.5% off) against 0.0019 to 0.0015 fitted on the narrow one; fitting the point recovers it and removes the cost. Synthetic only
- How big a sensor can a K-frame burst of a small sensor stand in for?Inverting the burst break-even formula: the largest sensor-area ratio a K-frame burst matches runs from √K in the dark to K in bright light, so 8 frames at 3 e⁻ read noise match a 4×-area frame from 4.5 e⁻ per pixel per frame, a 6× frame from 21 e⁻ and never an 8× frame; Monte Carlo agrees to 1% in variance at 18 settings. Model only, swept ranges not sourced to a device
All 31 Sensing, imaging and 3D projects →
Other research topics
Proper scoring & elicitation28Effort & peer prediction9Verification games & slashing19Detection & tolerances14Markets as routers13Prediction-market design9Paying contributors8Decentralised training systems23Digital twins & sim-to-real164LLM chip design loops40Robot manufacturing loops53Ambient AI assistant46Self-replicating manufacturing34Simulation-first design64Engineered clothing45Task-specific AI accelerators40Algorithmic chip-design loops42Open-source purpose-built robots44The software-engineering loop43Adversarial human imitation41Open-source residential construction41Autonomous multi-angle capture34Sensing, imaging and 3D31Energy supply and dense energy storage39Robot societies among people31Agentic co-design of low-cost robots27Laundry-hanging robots25Machine learning on qualitative data23Robots on the building site27Civilizations & group psychology1History & human sciences1
Produced with AI assistance (Claude). Results are from the code in this repository and are simulated or stylised unless the abstract says otherwise; nothing here implies affiliation with or endorsement by any lab, researcher or company cited. MIT licensed.