Step 1: Coordinate Normalization
Normalize the coordinates of points in both images by computing similarity transformations (T1) and (T2) for each set of points:
This normalization makes subsequent computations more stable and reduces sensitivity to variations in scale and location.
Step 2: Formulate the Fundamental Matrix Equation
Given each pair of corresponding points in the first image and the second image:
Step 3: Solve for F Using SVD
Viewpoint 1 (Points) | Viewpoint 2 (Epipolar Lines) |
---|---|
![]() |
![]() |
![]() |
![]() |
Step 1: Calculate the Essential Matrix E
The essential matrix E relates corresponding points in two views and is derived from the fundamental matrix F and the intrinsic matrices K1 and K2 of the two cameras. The calculation is as follows:
E = K2T · F · K1
Step 2: Normalize E
To maintain a consistent scale, normalize the essential matrix E such that its last element equals 1:
E = E / E3,3
E
Viewpoint 1 | Viewpoint 2 |
---|---|
![]() |
![]() |
![]() |
![]() |
Random Sampling and Model Fitting: Each iteration:
compute_F
).Error Calculation and Inlier Counting: For each calculated F:
dynamic_threshold
) and updates F if this count exceeds the previous best.Dynamic Threshold and Early Stopping: The threshold tightens every 10% of iterations. If inlier counts stabilize for a set number of rounds, iterations stop early.
Viewpoint 1 (Points) (8 points) |
Viewpoint 2 (Epipolar Lines) (8 points) |
Viewpoint 1 (Points) (7 points) |
Viewpoint 2 (Epipolar Lines) (7 points) |
% of Inliers vs. # of Iterations |
---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Object | 8 Points | 7 Points |
---|---|---|
Ball | ![]() |
![]() |
Hydrant | ![]() |
![]() |
Bench | ![]() |
![]() |
Remote | ![]() |
![]() |
Example Multi-View Images | Output |
---|---|
![]() |
![]() |
![]() |
![]() |
Viewpoint 1 (Points) | Viewpoint 2 (Epipolar Lines) |
---|---|
![]() |
![]() |
![]() |
![]() |
Question 1: What happens if we reduce the number of input images in COLMAP?
Question 2: How does adjusting tolerance parameters affect the COLMAP reconstruction pipeline?