Skip to main content
Ido AvitalAI Engineer · Data Scientist
Menu

Data science & ML

Two-View Reconstruction

Camera poses and 3-D structure from two synthetic views

The two camera poses and the visible 3-D corners of an 'impossible' triangle, recovered from two synthetic renders with epipolar geometry implemented from scratch in NumPy.

Key result On a noise-free synthetic scene with known geometry, the recovered rotation matches the true one to 0.000 degrees and the 12 corners seen in both views are reconstructed exactly: a correctness check, not a robustness result.

Research study Status: Completed Academic · team of 2

Two views Essential matrix Pose bycheirality Triangulatedcorners

Workflow diagram

From two views to cameras and 3-D corners Drawn for this site from the notebook's five functions. The renders are course material and are not shown until the course staff agree.

Research question

From one angle the sculpture looks like an impossible solid triangle; from another it is three separate beams. Two calibrated views are enough to recover where both cameras stood and the true 3-D positions of the corners both can see.

My Role & Leadership

Project Owner · Technical Lead · Developer. Owned and implemented the geometry pipeline of a course assignment: corner detection, the normalised eight-point essential matrix, its four-way pose decomposition, linear triangulation and cheirality-based pose selection. The assignment was done in a course team of two; this implementation is my hands-on part.

  • Led the numerical choices: normalised points, so the eight-point system is well conditioned, and cheirality as the test that selects the one physical pose of the four.

Key findings

Accuracy on the synthetic scene As reported by the project
Epipolar residual
2.3e-11
Rotation error of the recovered pose
0.000 degrees
Corners seen in both views, median error
12 corners, 0.000% of object size

Source: The assignment notebook's saved outputs (noise-free scene, calibrated cameras).

Method

Matched points give the essential matrix; its SVD gives four rotation and translation candidates; triangulating with each and keeping the physically valid one recovers the relative pose, up to the scale two views cannot fix.

  1. Detect corners in both views and take the provided point correspondences.

  2. Estimate the essential matrix with the normalised eight-point algorithm and enforce its singular values.

  3. Decompose it into four rotation and translation candidates.

  4. Triangulate with each candidate and keep the one that puts the points in front of both cameras.

  5. Align the reconstruction to the ground truth (scale cannot be recovered from two views) and measure the error.

What the team built

  • A Shi-Tomasi corner detector on the structure tensor (smallest eigenvalue as the response).
  • The normalised eight-point algorithm, projected onto a valid essential matrix with singular values (1, 1, 0).
  • Decomposition of the essential matrix into its four candidate poses, and selection of the one that puts points in front of both cameras.
  • Linear (DLT) triangulation of the corners visible in both views.

Methodological choices

  • Normalise the points before the eight-point algorithm, so the linear system is well conditioned.
  • Choose among the four poses by cheirality (points in front of both cameras), the one physical test that separates them.

Built on

  • The scene, its two renders and the point matcher: a course helper.
  • The exact projections the 12-corner cloud is triangulated from, and the beam model that supplies the hidden corners and the 18 faces.
  • The 3-D viewers.

Limitations

A noise-free synthetic render with calibrated cameras, so the near-zero errors show correctness, not robustness: there is no noise, no outlier rejection and no real photograph. The 12-corner cloud is triangulated from the provided exact projections, not from the detected corners. The hidden corners and the faces come from the known model, not from the views.

Key technologies

  • NumPy
  • Harris / Shi-Tomasi corners
  • Eight-point algorithm
  • Essential matrix
  • Linear triangulation

Evidence

  • The assignment notebook with its saved outputs, and a four-page theory write-up.
  • The numbers are the notebook's saved outputs; they were not rerun for this site.
All projects

Questions about Two-View Reconstruction