TL;DR

  1. Structure from Motion (SfM): from 2D-2D correspondences only, jointly estimate the camera poses (motion) and a sparse 3D point cloud (structure). Usually motion first, then structure by triangulation.
  2. Epipolar geometry: a 3D point and the two camera centers span the epipolar plane. This gives the epipolar constraint with the essential matrix , or with the fundamental matrix in pixel coordinates.
  3. From we recover and (up to scale) with an SVD: 4 candidates, and the right one has the point in front of both cameras.
  4. is estimated from correspondences with the (normalized) 8-point algorithm, made robust to wrong matches with RANSAC.
  5. Bundle adjustment refines all cameras and points by minimizing the reprojection error. SfM pipelines are incremental (COLMAP), global (GLOMAP) or hierarchical.
  6. SfM is inherently scale ambiguous.

Exam relevance

One of the most important lectures. The hints for the exam: know the basic SfM pipeline, and understand the derivations of epipolar geometry. Also: how the 8-point algorithm solves the problem, and when it is used. The lecturer’s notes mark almost every slide of this lecture as importance 5/5.

Overview: 1. Introduction, 2. Epipolar geometry, 3. Estimating the fundamental / essential matrix, 4. Bundle adjustment and SfM, 5. Challenges.

Introduction

Inverting the Image Formation Process

Slides 2-7

In Lecture 2.1 we saw how 3D points in the world are mapped to 2D pixels. Now we want the inverse: given 2D pictures, reconstruct the underlying 3D structure. Classical methods usually need at least two images to handle the depth ambiguity. Humans do the same: we understand the 3D structure of a scene by moving around it and looking from different angles.

The Structure from Motion problem

Given a large collection of images of the same scene (from different viewpoints), we want to simultaneously

  • find out where they were taken from (camera intrinsics and poses), and
  • build a sparse 3D model of the scene.

The images are slightly different, but many of them share keypoints, so we have 2D-2D correspondences between them. Example use case: many tourists take photos of the same monument (like the Colosseum) with different cameras, from different poses, showing different parts, but with overlap.

Photo collection of the Colosseum and the sparse 3D reconstruction with camera poses
Slide 5: from a photo collection to a sparse 3D model with camera poses.

Photo Tourism (Snavely et al., SIGGRAPH 2006) was an early work on large photo collections: an interactive system to browse unstructured photo collections. It estimates camera poses and a sparse 3D reconstruction, so you can move smoothly between photographs.

Slide 6: Photo Tourism, reconstruction of the Trevi Fountain from 350 web photos (played 1.5x).

Over time the scale grew from single monuments to entire cities. Building Rome in a Day (Agarwal et al., ICCV 2009) reconstructs cities from web images (in 2009, Flickr had more than 2 million photos for “Rome”). “In a day” is the runtime of the whole pipeline. The scale brings new challenges:

  • robustness: keypoint matching has no 3D awareness, so there will be outliers and mismatches
  • large non-linear problems that need efficient algorithms (e.g. for bundle adjustment)
  • parallel, distributed systems
Slide 7: Building Rome in a Day.

The SfM Problem

Slides 8-10

SfM problem

Given images of fixed 3D points such that

(in homogeneous coordinates), jointly estimate the camera matrices and the 3D points .

  • : projection of point onto image plane ( = camera index, = point index)
  • : intrinsics times global pose of camera
  • : 3D point in world coordinates

We only know !

SfM problem: cameras with unknown K, R, t observing unknown 3D points
Slide 8: cameras and 3D points are both unknown.

The lecture first looks at the case (epipolar geometry: how to estimate the relative orientation of two cameras), then extends to more images (bundle adjustment, SfM pipelines).

A note on correspondences

We assume we have precomputed 2D-2D correspondences: means both observe the point from cameras and . They come from feature detection algorithms (SIFT, SURF, ORB, SuperPoint, …), which find keypoints, describe them by their surroundings, and match them between views. These methods are not part of this course. They are remarkably strong: SIFT can match the ground of Mars from two different views.

We do not assume the correspondences are correct. Dealing with outliers and wrong matches is a huge challenge in every SfM pipeline (→ RANSAC).

Three Components of SfM

Slides 11-13

The whole idea of SfM is to go from 2D-2D correspondences to camera poses and 3D points. Typically we first solve for motion, then infer the 3D points via triangulation.

flowchart LR
  C["Correspondences"] -- "SfM: estimate motion first" --> M["Camera poses<br/>(motion)"]
  M -- "triangulation" --> S["3D points<br/>(structure)"]
  S -- "pose estimation (PnP)" --> M
ProblemGivenWanted
SfMonly 2D-2D correspondencescamera poses and 3D points
Triangulationcorrespondences + known camera poses3D points
Pose estimation (PnP)2D-3D correspondences (3D points known)camera pose
  • Triangulation is a crucial part of most SfM pipelines, but a “simpler” problem, because the camera poses are already known.
  • Pose estimation (Perspective-n-Point, PnP) is the inverse problem. It can be solved with the direct linear transform (see the exercise). It is an important step in incremental SfM: every new image has to be registered into the existing reconstruction.

Triangulation

Slides 14-16

Setting: a point with unknown 3D position is observed by 2 cameras. Task: find the 3D position of . With perfect observations, the two viewing rays intersect exactly at . With noise, we look for the point with minimum distance to both rays.

Two viewing rays from cameras c0 and c1 that nearly intersect at X
Slide 14: with noise, the two rays don't intersect exactly.

Linear triangulation

The point is projected by the camera matrix, (equal up to scale). So and are parallel, and their cross product is zero. This removes the unknown scale:

where is the -th row of . The cross product evaluates to

The last row is a linear combination of the first two, so each camera gives 2 linear equations in . One camera is not enough. With a second camera observing , we stack:

Linear triangulation

Solved in the least squares sense with SVD (the right singular vector of the smallest singular value, with ).

Epipolar Geometry

SfM usually estimates the motion (camera poses) from the 2D-2D correspondences first. We start with the simplest case: 2 cameras. First we need to understand the geometry of two such cameras.

Epipolar Plane, Baseline, Epipoles and Epipolar Lines

Slides 18-30

A scene is viewed by two cameras from slightly different angles.

Epipolar plane through a 3D point and both camera centers
Slide 20: the epipolar plane
Baseline and epipolar points
Slide 23: baseline and epipoles

Epipolar geometry

  • Epipolar plane: every 3D point forms a plane with the two camera centers. It is different for every 3D point.
  • Baseline: the line connecting the two camera centers. Since both centers are in every epipolar plane, the baseline is always part of it.
  • Epipoles (epipolar points): the intersections of the baseline with the image planes. So they also lie in every epipolar plane.
  • Epipolar lines: the intersections of the image planes with the epipolar plane. The epipolar line in image 1 is the projection of the viewing ray of camera 0 into image 1, and vice versa. It connects the observed point and the epipole.

The epipoles don’t have to lie inside the images: that depends on the relative orientation of the cameras, the focal lengths and the image size. If the cameras can’t see each other, the epipole is outside the image. It can even be at infinity.

When are the epipoles at infinity?

Epipolar points can lie outside the image
Slide 24: epipoles outside the images
Epipolar lines as intersection of epipolar plane and image plane
Slide 25: epipolar lines

All epipolar lines in an image converge in the epipole (inside or outside the image).

All epipolar lines converge in the epipole
Slide 26: all epipolar lines meet in the epipole.

2D point matching with epipolar lines

Slides 28-29

Given 2 images and a point in one of them, find the matching point in the other. The naive approach searches the whole image (a 2D search space). With epipolar geometry we know the matching point must lie on the epipolar line (the projection of the viewing ray). This is a 1D search space. For this we need to know where the epipolar line is, which is what the math below gives us.

The corresponding point lies on the epipolar line
Slide 29: the match must lie on the epipolar line.

Overview (Slide 30)

3D point, image points, epipolar points and epipolar lines all lie on the epipolar plane. The epipolar constraint encodes all these relationships in one equation. From it we can later extract the relative camera poses.

Epipolar geometry overview with plane, 3D point, image points, lines and epipoles
Slide 30: epipolar geometry overview.

The Epipolar Constraint

Slides 31-33

Exam

This derivation is exactly what “understand the epipolar derivations” means. Be able to reproduce it step by step.

Formal setup

Slide 31

For now we assume we know everything about the cameras (intrinsics and extrinsics). Two cameras observe a single 3D point . We don’t care about the “true” world frame, so we take camera 0’s frame as world frame.

Notation (important, other sources use other conventions)

  • : rotation from camera 1’s frame to camera 0’s frame
  • : camera 1’s center, expressed in camera 0’s frame
  • Camera matrices:
  • Projection of onto the image planes:
Formal setup: two cameras c0, c1 observing X, relative pose R, t
Slide 31: formal setup.

Derivation

Slides 32-33

Step 1: ray directions in the local camera frames. are pixel coordinates, so we first compute the 3D ray directions by multiplying with the inverse calibration matrix:

Step 2: ray directions in the global frame. Camera 0’s frame is the world frame, so is already global. Directions of camera 1 only have to be rotated:

Step 3: normal of the epipolar plane. Two vectors in the plane are (the baseline, green in the figure) and (the ray of camera 1, red). Their cross product is the normal. We write the cross product as a matrix product with the skew-symmetric matrix (see hat operator):

Step 4: lies in the epipolar plane too, so it is orthogonal to the normal: .

Epipolar constraint and essential matrix

Derivation of the epipolar plane normal from t and R x1
Slide 32: t and R x₁ span the epipolar plane.

Intuition

Two image points that belong to the same 3D point must always satisfy this equation. The essential matrix captures the relative camera pose, and are the calibrated observations. The equation is just the coplanarity of the two rays and the baseline.

Essential Matrix

Slide 34

The essential matrix captures the epipolar geometry of the two cameras. It does not depend on the 3D point, only on the relative camera poses. From we can derive all the geometric relationships from before:

Properties of E (calibrated case)

  • Epipoles: . The (calibrated) epipoles are the zero-value right and left singular vectors.
  • Epipolar lines: is the epipolar line corresponding to (in image 0), is the epipolar line corresponding to (in image 1).
  • has rank 2 and 5 degrees of freedom.

Why rank 2, and why 5 degrees of freedom?

All of these are in the calibrated (canonical camera) frame, because we used instead of .

Fundamental Matrix

Slides 35-36

Going back to the uncalibrated case: with we rewrite the epipolar constraint in pixel coordinates:

Fundamental matrix

(, the order does not matter.)

captures the geometry of the two cameras in the same way:

  • is the epipolar line corresponding to
  • is the epipolar line corresponding to
  • : the epipoles are the zero-value right and left singular vectors
  • has rank 2 (because has rank 2 and the have full rank) and 7 degrees of freedom: 9 entries, for scale, for .

Why does the rank-2 constraint remove a degree of freedom for but not for ?

Essential matrix Fundamental matrix
Constraint
Coordinatescalibrated rays pixels
Definition
Needs intrinsics?yesno
Rank / DoF2 / 52 / 7

Summary: epipolar constraint (Slide 36)

Each correspondence pair must satisfy . It is expressed with (uncalibrated) or (calibrated). If we know or , we can derive a lot: epipoles, epipolar lines, and the relative pose.

Fundamental matrix, epipolar lines and epipoles in pixel coordinates
Slide 35: the fundamental matrix.

Recovering the Relative Pose from E

Slides 37-40

We want the relative camera pose from 2D-2D correspondences, and is a product of and . Can we decompose into and ? Yes, up to scale, with a decomposition theorem (Hartley & Zisserman, 9.6).

Decomposition of E

The SVD of an essential matrix has the form (up to scale)

So we recover and (up to scale) as

Why

, so and : is in the left null space of , i.e. the singular vector with singular value 0. The sign and the length can’t be determined.

This gives 4 possible solutions for the relative orientation of the two cameras.

The four possible solutions for calibrated reconstruction from E
Slide 39: the four solutions (Hartley & Zisserman, Fig. 9.12). Only in (a) the point is in front of both cameras.

How do we find the correct one? Triangulate a single correspondence and check that the point is in front of both cameras (positive depth). Only one of the four configurations passes.

A chicken and egg problem

Slide 40

  • Given the relative pose, we can compute .
  • Given , we can recover and (up to scale).

But how do we get without knowing and ? Next: estimate (or ) from 2D-2D correspondences alone.

Chicken and egg: R, t from E and E from R, t
Slide 40: the chicken and egg problem.

Estimating the Fundamental / Essential Matrix

So far we derived formulas for , and the epipolar constraint, assuming known relative poses. Now the relative poses are unknown: given a set of correspondences, we want to extract them. For this we estimate or from the correspondences.

One Equation per Correspondence

Slides 43-44

A correspondence pair , must satisfy . Written out, this is linear in the 9 entries of :

How many correspondences do we need to estimate F?

The 8-Point Algorithm

Slides 45-49

Given correspondences (, but more is better), stack the linear equations. Row is built from the -th correspondence:

In practice we use correspondences to reduce the effect of noisy measurements. Then there is no exact solution, and we solve in the least squares sense:

Least squares with SVD

The least squares solution is the right singular vector corresponding to the smallest singular value (last column of ). We get the estimate by reshaping into . The constraint excludes and fixes the free scale.

Problem: rank

Epipolar lines from the raw estimate do not meet in one point
Slide 47: estimate with full rank, lines don't meet
After enforcing rank 2 all epipolar lines meet in the epipole
Slide 49: after enforcing rank 2

The epipolar lines from this estimate don’t converge in a single epipole. The reason: with noise, has full rank, but an essential / fundamental matrix has rank 2 (the epipoles are its null vectors).

Enforce rank 2

Find the best rank-2 approximation of :

Solution: compute another SVD and keep only the two largest singular values:

Normalization: the Normalized 8-Point Algorithm

Slides 50-53

One row of is . Typically , so:

  • the entries differ by orders of magnitude (about vs. )
  • is highly unbalanced and not well conditioned
  • this creates problems during the SVD

Solution: transform the image coordinates so that becomes better conditioned. For each image , apply a transformation :

  • translate the image points so that their centroid is at the origin
  • uniformly scale them so that the mean squared distance of the points from the origin is about 2 px
Normalization transformation T moves the centroid to the origin and scales the points
Slide 52: normalization with T.

Normalized coordinates

New homogeneous coordinates . The epipolar constraint becomes

So we estimate with the 8-point algorithm and recover

The 8-point algorithm: summary (Slide 53)

  1. Normalize points
  2. Construct the matrix
  3. Find the SVD of
  4. The entries of are the elements of the column of corresponding to the smallest singular value
  5. Find the SVD of
  6. Set
  7. Denormalize

Exam

Know the algorithm step by step and when it is used: whenever is estimated linearly from pixel correspondences, e.g. inside RANSAC for the geometric verification and for the initialization of an SfM pipeline. With known intrinsics, the 5-point algorithm for is preferred.

RANSAC: Robustness to Outliers

Slides 54-57

A very important theme in reconstruction from 2D correspondences is robustness to wrong correspondences: some points are matched to false points because they locally look similar. With contaminated correspondences, least squares is very unstable: outliers have a very strong effect because of the squared norm.

Correct (green) and wrong (red) matches between two images
Slide 54: correct matches (green) and outliers (red).

Line fitting example: fit a line to 2D points. The least squares fit is pulled away by the outliers (squared distances punish large deviations even more). The intuitively “best” line is the one with the most inliers.

Least squares line fit is pulled by outliers
Slide 55: least squares fit
RANSAC: a line from outliers has 3 inliers, a line from inliers has 20
Slide 56: 3 inliers vs. 20 inliers

RANSAC (RANdom SAmple Consensus): idea

For a given model, count the number of samples that agree with it. Among all possible models, select the one with which the most samples agree.

  • If we estimate a model only from inliers, most of the inliers will agree.
  • If we estimate it with outliers, only few samples agree.

RANSAC algorithm

  1. Randomly choose samples. Typically = the minimal sample size to fit a model (line fitting: 2, essential matrix: 5, fundamental matrix: 8).
  2. Fit a model to those samples.
  3. Count the number of inliers.
  4. Update the best solution found so far.
  5. Repeat.

How many iterations? With an outlier ratio and a desired probability of getting a correct solution:

Intuition

is the probability that one random sample has only inliers. Smaller samples and fewer outliers need fewer iterations. That is why minimal solvers (like the 5-point algorithm) are preferred inside RANSAC.

From Fundamental to Essential Matrix

Slide 58

Now we have a robust way to compute with the 8-point algorithm. If we can recover the intrinsic matrices (they often come as part of the image metadata), we get the essential matrix from , i.e. .

An ideal essential matrix has two identical singular values, up to scale . So we project the estimated such that the singular values are .

Relative pose from 2D-2D correspondences: the full pipeline

flowchart LR
  A["2D-2D<br/>correspondences"] --> B["F: normalized<br/>8-point + RANSAC"]
  B --> C["E = K0ᵀ F K1<br/>singular values 1, 1, 0"]
  C --> D["SVD of E:<br/>4 candidates for R, t"]
  D --> E2["point in front of<br/>both cameras"]
  E2 --> F2["triangulate<br/>3D points"]

is only known up to scale.

Bundle Adjustment and SfM

From Two Views to N Views

Slide 60

So far: epipolar geometry takes us from correspondences on two images to the relative camera poses (8-point algorithm) and the 3D points (triangulation). Extensions to 3 or 4 views exist (trifocal, quadrifocal tensors), but get complicated. Instead, most SfM pipelines incrementally add images to a model and update it with every new observation. The key ingredient is bundle adjustment, which optimizes the registered camera poses and 3D points together.

Bundle Adjustment

Slides 61-62

Bundle adjustment

Minimize the total reprojection error over all 3D points and camera matrices :

  • : indicator whether point is visible in camera
  • : the actual 2D observation of point in camera
  • : the projection of point onto image plane with the current estimates
Bundle adjustment: 3D points projected into several cameras
Slide 61: every visible point-camera pair contributes a reprojection error.

Reprojection error

“How far is the reprojection with the current estimates from the actual observation?” Only point-camera pairs that are actually visible count.

Why can’t we just solve SfM with bundle adjustment?

  • It is usually solved with Gauss-Newton or Levenberg-Marquardt. For large systems, efficient open source tools exist (e.g. Google Ceres), and they can use the sparse structure of the problem. It is still time consuming.
  • Exact methods have cubic runtime (in the number of cameras), approximate methods linear runtime. For whole cities this is not feasible.
  • It is sensitive to initialization and only finds local minima.

Therefore, bundle adjustment is only used as a refinement step in SfM pipelines, after epipolar geometry and triangulation. Some variants optimize only the cameras (points fixed) or only the points to save time.

3D Reconstruction Pipeline

Slides 63-65

flowchart LR
  A["Unstructured<br/>images"] -- "data association" --> B["Scene graph"]
  B -- "SfM" --> C["Sparse model<br/>(poses + sparse points)"]
  C -- "MVS" --> D["Dense model"]
Pipeline from unstructured images to scene graph, sparse model and dense model
Slide 63: the 3D reconstruction pipeline. Dense reconstruction (MVS) is part of Lecture 4.

The dense step (MVS) is explained in Lecture 4.

Data association

Slide 64

  1. Feature extraction: identify keypoints and extract local features (e.g. SIFT).
  2. Feature matching: match features between images to get 2D-2D correspondences. The naive way compares every feature with every feature in every other image; there are more scalable approaches.
  3. Geometric verification: the matching is based on appearance only, without spatial reasoning, so many matches are wrong. We robustly estimate the two-view geometry with epipolar geometry (essential matrix + relative pose, with RANSAC). If enough matches are geometrically consistent, the two views are “geometrically verified” and connected by an edge in the scene graph.
Feature extraction, feature matching and geometric verification
Slide 64: data association.

Scene graph

Slide 65

After data association we have the scene graph: nodes are images, edges are geometrically verified image pairs with their inlier correspondences and first estimates of the relative poses . It tells us (somewhat reliably) which images overlap.

Scene graph with images as nodes and relative poses as edges
Slide 65: the scene graph.

Structure from Motion Paradigms

Slide 66

Most SfM pipelines fall into one of three categories:

  • Incremental: start from two views, and add one more view in each step.
  • Global: process all views simultaneously.
  • Hierarchical: a mix of both. Partition the scene graph into clusters, reconstruct them individually, then stitch them together.
Incremental, global and hierarchical SfM paradigms
Slide 66: the three SfM paradigms.

Incremental SfM (COLMAP)

Slides 67-75

COLMAP is the most popular incremental SfM pipeline. You can see that it is incremental: it adds one camera after the other, together with the newly observed 3D points.

Slide 67: COLMAP reconstruction of 66 images (played 3x).
COLMAP overview: correspondence search, incremental reconstruction
Slide 68: COLMAP method overview. Correspondence search (feature extraction, matching, geometric verification) and incremental reconstruction (initialization, image registration, triangulation, bundle adjustment, outlier filtering).

Incremental SfM

Initialization:

  1. Pick a pair of images with lots of inliers.
  2. Estimate the extrinsic parameters with the robust 5-point or 8-point algorithm. The first camera is , the second .
  3. Triangulate to initialize the 3D points of the correspondences.
  4. Refine using bundle adjustment.

While there are remaining images:

  1. Find the image with many feature matches.
  2. Find 2D-3D correspondences (to the existing 3D points).
  3. Estimate the camera pose (PnP) to obtain the camera registration .
  4. Triangulate new points.
  5. Refine using bundle adjustment.
  6. Filter outliers.
Incremental SfM: registering a new camera and triangulating new points
Slide 74: a new camera is registered via 2D-3D correspondences.

Incremental SfM: challenges (Slide 75)

The initial pair must be chosen carefully:

  • a bad choice leads to an unrecoverable local minimum
  • the cameras should be far apart for a robust initialization
  • dense feature regions are more robust because of redundancies, but bundle adjustment is slower

Next best view problem:

  • an almost identical view → high uncertainty in triangulation
  • a very different view → low overlap and high camera uncertainty
  • a single bad choice may impact the whole reconstruction

Global SfM (GLOMAP)

Slides 76-80

Don’t add views incrementally. Solve for all global poses in one pass. In the GLOMAP demo, all cameras and points are optimized simultaneously.

Slide 76: GLOMAP, global SfM (ECCV 2024).

Given the relative rotation and translation estimates, can we recover the global rotations and translations of the cameras? From pairwise two-view geometry we get relative poses between all cameras that see a common region. They form a view graph. These estimates are noisy (wrong correspondences, inaccurate intrinsics), so we can’t simply chain them: every cycle in the view graph can lead to a clash in the global poses. This is solved with rotation and translation averaging.

View graph with relative poses between cameras and unknown global rotations
Slide 77: the view graph.

Rotation averaging

Estimate the global rotations that minimize the relative rotation error:

are the global camera rotations we optimize for, is the relative rotation estimate between cameras and (from epipolar geometry). In global rotations, the relative rotation is (“back and forth”).

Translation averaging

Similarly, estimate (and filter) the global translations:

The distances are normalized because we can only recover the up to scale.

GLOMAP (Fan et al., ECCV 2024) revisits global SfM after years of COLMAP. There is no loop in the pipeline (no incremental view adding): a global estimation followed by bundle adjustment. It is up to 1-2 orders of magnitude faster than COLMAP with similar or better quality. GLOMAP does not do translation averaging: it introduces global positioning, which estimates the camera translations and the 3D points together (instead of translation averaging followed by triangulation).

GLOMAP pipeline: correspondence search, global estimation, output reconstruction
Slide 80: the GLOMAP pipeline (rotation averaging, global positioning, bundle adjustment, structure refinement).

Hierarchical SfM and Comparison

Slides 81-82

Hierarchical SfM:

  1. Hierarchically cluster the scene graph.
  2. Reconstruct each cluster independently.
  3. Merge the clusters using similarity transformations (each cluster has its own frame and scale).
MethodEfficiencyRobustnessAccuracyExamples
Incremental−+++OpenSfM, COLMAP
Global+++OpenMVG, Theia, GLOMAP
Hierarchical++−−

Teaser: learning-based methods are taking over (→ Lecture 9).

Challenges

Slides 83-89

  • WTFs (watermarks, timestamps, frames): they create matches at the image border that are geometrically consistent (a pure translation), but wrong. Detect translations at the image border.
  • Ambiguities: is the output of SfM uniquely determined by the correspondences? No, SfM is inherently scale ambiguous. Scaling the scene by and the camera matrices by gives the same projections:

Is the reconstruction 1 m or 200 m large? The images can’t tell.

  • Repetitive structures: e.g. the four identical faces of Big Ben. Matches between different faces look consistent but are wrong.
  • Dynamic scenes: moving objects (people, cars) violate the assumption of a static scene.
  • Illumination / weather change: day and night photos of the same place are hard to match.
Scale ambiguity: is the reconstruction 1 m or 200 m?
Slide 86: scale ambiguity
Big Ben from different sides looks the same
Slide 87: repetitive structures

Worked Example: RANSAC Iterations

Summary

The SfM pipeline in one picture

flowchart TD
  I["Images"] --> F1["Feature extraction (SIFT)"] --> F2["Feature matching"]
  F2 --> GV["Geometric verification:<br/>F or E with RANSAC"]
  GV --> SG["Scene graph"]
  SG --> INIT["Initial pair: R, t from E<br/>triangulate, bundle adjustment"]
  INIT --> LOOP["Next image: 2D-3D matches, PnP,<br/>triangulate, bundle adjustment, filter"]
  LOOP --> LOOP
  LOOP --> SP["Sparse model"] --> MVS["MVS: dense model"]

Self-Test

What is the SfM problem, and how do triangulation and PnP relate to it?

How does linear triangulation work?

Define epipolar plane, baseline, epipole and epipolar line.

Why do epipolar lines help with matching?

Derive the epipolar constraint.

Essential vs. fundamental matrix: definition, rank, degrees of freedom?

How do you get and from ?

Why 8 points? Why do we enforce rank 2? Why normalize?

How does RANSAC work, and how many iterations does it need?

What does bundle adjustment minimize, and why is it only a refinement step?

Sketch the incremental SfM pipeline.

What is the idea of global SfM?

Why is SfM scale ambiguous?