Epipolar geometry
Consider two cameras with centres and observing a 3D point . The three points , , and define the epipolar plane. Its intersections with the two image planes are the epipolar lines and . Key insight: given a point in image 1, its corresponding point in image 2 must lie on the epipolar line . This reduces the correspondence search from 2D to 1D.Epipoles
The epipole is the projection of one camera centre into the other image:- — projection of into camera 2
- — projection of into camera 1
Fundamental matrix
The fundamental matrix is the matrix that encodes the epipolar geometry between two uncalibrated cameras: Properties:- has rank 2 (singular matrix), 7 degrees of freedom (up to scale).
- Epipolar lines: and .
- Epipoles satisfy and .
8-point algorithm
Each correspondence gives one linear equation in the 9 entries of . With 8 or more correspondences: Solve via SVD; then enforce rank-2 by zeroing the smallest singular value of the result.Essential matrix
For calibrated cameras (intrinsic matrices , known), the essential matrix relates normalised image coordinates: and are related by: has 5 degrees of freedom (3 for rotation, 2 for translation direction) and satisfies .Triangulation and 3D reconstruction
Given the projection matrices , and a correspondence , the 3D point is recovered by triangulation: This is a linear system in solvable via SVD (DLT). Due to noise the two rays from and do not intersect exactly; the optimal minimises the sum of squared reprojection errors.Trifocal geometry
With three views and projection matrices , , , a point visible in views 1 and 2 can be located in view 3 using two fundamental matrices: The point in the third view is the intersection of the two epipolar lines, computed as the cross product of the two line vectors.MATLAB code examples
Python resources
Epipolar geometry (Colab)
Interactive notebook: fundamental matrix estimation, epipolar line visualisation, and stereo matching.
3D reconstruction (Colab)
Reconstruct 3D point clouds from stereo image pairs using triangulation.
Trifocal geometry (Colab)
Transfer points across three views using the trifocal tensor and fundamental matrices.
Video lectures
Lecture: Epipolar geometry (2021)
Recorded class on the epipolar constraint, fundamental matrix, and the 8-point algorithm.
Lecture: Trifocal geometry and multiple views (2021)
Recorded class on trifocal geometry, multi-view applications, and 3D reconstruction.
Concepts at a glance
What is the difference between F and E?
What is the difference between F and E?
The fundamental matrix works with pixel coordinates and does not require knowledge of the camera intrinsics. The essential matrix works with normalised (metric) image coordinates and embeds the intrinsics — it has only 5 DOF versus 7 for . If and are known, use ; otherwise use .
Why does F have rank 2?
Why does F have rank 2?
The epipolar constraint must hold for all points on the epipole — the epipoles are in the left and right null spaces of . A rank-2 matrix has a non-trivial null space, so and .
How accurate is triangulation?
How accurate is triangulation?
Accuracy depends on the baseline (distance between cameras) and the image noise. A wider baseline gives better depth resolution but increases the chance of occlusion. Noise in the correspondences translates directly into 3D error; the depth error grows as where is the baseline.
What is the trifocal tensor?
What is the trifocal tensor?
The trifocal tensor generalises the fundamental matrix to three views. It is a array that encodes all point and line transfer relationships across three views simultaneously. For point transfer using pairs of fundamental matrices (as in the MATLAB example above) the full tensor is not needed, but for line transfer and other constraints it provides a more complete model.
