Structure from Motion with Non-linear Least Squares David Bargeron Noah Snavely
Structure from Motion Input: Output Applications Projection of a set of 3D points onto a set of camera projection planes Output 3D point locations Camera motion Applications Object tracking “Match Moves” in TV, movies
Structure from Motion Solution: minimize the residual error of the projections of reconstructed 3D points Algorithm: Levenberg-Marquardt (with Conjugate Gradient under the hood)
Levenberg-Marquardt Function to minimize: Jacobian: Hessian:
Levenberg-Marquardt Inverse Hessian: Steepest Descent: Choose c: Modified Hessian: Levenberg-Marquardt: , so
Synthetic Example #1 Generated test data from a rotating sphere Sphere shape Vertex projections
Synthetic Example #1 Solved for 3D vertex positions Parameters of transformation R(Rj p) + tj (Seven global parameters, four parameters per frame) Ran Levenberg-Marquardt for 35 iterations
Synthetic Example #1 Iteration 0
Synthetic Example #1 Iteration 1
Synthetic Example #1 Iteration 2
Synthetic Example #1 Iteration 3
Synthetic Example #1 Iteration 6
Synthetic Example #1 Iteration 7
Synthetic Example #1 Iteration 8
Synthetic Example #1 Iteration 10
Synthetic Example #1 RMS Projection Error vs. Iteration RMS 3D Error vs. Iteration
Synthetic Example #2 Pig shape Vertex projections
Synthetic Example #2 True pig Reconstructed pig
Real Application – Match Move First tracked points in an input video Video Tracked points (Thanks to Li Zhang for the video)
Real Application – Match Move Solved for 3D points, camera motion Reconstructed points
Real Application – Match Move Used camera motion to insert synthetic object Results!