3D Reconstruction
Recovering a scene's 3-D structure from photographs taken at nearby viewpoints — epipolar geometry, triangulation, and bundle adjustment.
╌╌╌╌
Structure from motion recovers the 3-D structure of a scene from several photographs taken at slightly different viewpoints. The input is only 2-D pixel correspondences across images; the geometry recovers both where the cameras were and where the world points sit.
Two views of the same point are not independent, and epipolar geometry is what constrains the matches. If a world point projects to in one image and in the other (homogeneous pixel coordinates), the pair obeys the epipolar constraint
where is the fundamental matrix of rank 2. collapses the correspondence search to a line: for each , its match lies on the epipolar line in the other image. Eight or more correspondences fix up to scale — the eight-point algorithm, a linear least-squares solve for the smallest singular vector of the constraint matrix. With known intrinsics , the essential matrix factors into a relative rotation and translation by SVD.
Once the two camera matrices are known, each matched pair back-projects to two rays whose intersection is the world point . Triangulation under measurement noise means the rays rarely meet exactly; the direct linear transform stacks the constraints and and takes the least-squares as the smallest singular vector.
Pose estimation and triangulation each accumulate error, and bundle adjustment corrects both at once, minimizing the total reprojection error over all cameras and points :
where projects a world point through a camera, is the observed pixel, and flags whether point is visible in view . It is a large sparse nonlinear least-squares problem, solved with Levenberg-Marquardt.
You can read the full report.
References
- Project repository
- Reference notes: Vision: Reconstructing the 3D World
- Reference notes: Vision and Perception
- Reference notes: Linear Algebra
╌╌ END ╌╌