From Matches to Motion — Four Cameras, One Right Answer
- 1The Pinhole Camera — A Pixel Is a Ray
- 2Where Is the Camera? — R, C and t
- 3Points at Infinity — Horizons, Vanishing Points and the Floor
- 4Finding the Camera From Known Points — P by Least Squares
- 5Lens Distortion — Bending Straight Lines Back
- 6What calibrateCamera Actually Does
- 7Epipolar Geometry — A Point Becomes a Line
- 8Triangulation — Two Rays That Almost Meet
- 9From Matches to Motion — Four Cameras, One Right Answer
- 10Stereo Depth — Rectification and Z = fB/d
- 11From Two Photos to a Point Cloud
Summary
Two photos, a few hundred matches and K: where is camera 2? This read estimates F from eight matches, throws out the bad matches by voting, splits E into four candidate cameras, and keeps the one that sees the points in front of both. After it you can say what findEssentialMat and recoverPose do, and why the translation they return is always one unit long.
Table of Contents
- 1. Eight Matches, One Matrix2
- 2. Throwing Out the Bad Matches2
- 3. From E to Four Cameras3
- 4. Only One Sees the Point in Front3
- 5. Two Photos Cannot Tell a House From a Doll's House4
- 6. In OpenCV4
- 7. What Came Next4
- 8. References4
- 9. Connections4
Read 8 used camera 2's pose as given. Take it away. You have two photos, a few hundred matches, and K from read 6. Where is camera 2, and which way is it looking?
The whole read is four steps, and the chain below lights the part of the series they belong to:
- fit a matrix to the matches (F, or E once K is known);
- vote out the matches that are plain wrong;
- split E into the four cameras it could have come from;
- test one point against each and keep the camera that sees it in front.
Brush up on these first ;)
- Epipolar Geometry — A Point Becomes a Line: E = [t]ₓR, F = K⁻ᵀEK⁻¹, and the condition x₂ᵀFx₁ = 0 that every match obeys.
- Triangulation — Two Rays That Almost Meet: the four rows that turn one match and two cameras into a point.
- Finding the Camera From Known Points — P by Least Squares: normalise the pixels before a least-squares fit, and "zero the smallest singular value".
- Where Is the Camera? — R, C and t: the depth of a point in a camera, and its sign.
One rig carries us through, the same as in every read of the series. Both cameras share
camera 1 sits at the origin, camera 2 at C̃₂ = (1, 0, 0) m, turned 10° toward camera 1, and the point X = (0.3, −0.2, 4) m lands at x₁ = (357.5, 215) and x₂ = (320.644, 215.374) px. This time we pretend we never knew where camera 2 was, and get it back.
1. Eight Matches, One Matrix
Camera: focal length and principal point
Camera 1: move it and turn it
Camera 2: move it and turn it
Think of every match as a witness. One witness says "x₂ lies somewhere on the line F draws from x₁". That alone does not pin F down, but each new witness rules out a little more, and with enough of them only one F agrees with everybody.
What the figure shows:
- every blue dot in camera 1 has a rust partner in camera 2, and the six rust lines are l′ = Fx₁ for six of them, fitted from all 32 matches;
- with normalised coordinates and 0.5 px of noise, the rust lines sit on the grey true lines;
- switch to raw pixels, or turn on the one bad match, and the lines swing away, every one of them, not just the bad match's own.
Why can matches fit F at all? Because x₂ᵀFx₁ = 0 is linear in the nine numbers of F. Multiply it out and every match gives one row. Let's write it:
- (u₁, v₁) and (u₂, v₂) are the two pixels of match i, in px.
- f is F read row by row as a 9-vector; A stacks one row aᵢ per match.
- F only matters up to scale, so we ask for ‖f‖ = 1. The answer is the right singular vector of A with the smallest singular value (Hartley & Zisserman, Ch. 11 Computation of the Fundamental Matrix F, eq. 11.3, pp. 279–280).
- Nine numbers minus the scale leaves eight, so eight matches fix F. That is the eight-point method.
On exact matches this gives back read 7's F, up to scale:
(scaled so F₃₃ = −1). Set the noise to 0 in the figure and the rust lines land exactly on the grey ones.
Why it exists. Matches are all we have, and this turns them into F with one singular vector. Everything after it in the read (E, the four cameras, the winner) starts from this fit.
What it assumes. - Every match is right. A least-squares fit has no way to tell a wrong row from a noisy one. - The matches are in general position: at least eight, not all on one plane, and the two cameras do not share a centre (H&Z Ch. 11 Computation of the Fundamental Matrix F, table 11.1, p. 296). - The lens bends nothing, so epipolar lines are straight. Undo the distortion of Lens Distortion — Bending Straight Lines Back before you fit.
Where it breaks. - One bad match pulls every line, not just its own. Try this: press "one bad match": the mean distance of x₂ to its line goes from 0.19 px to 7.53 px. Section 2 is the fix. - A flat scene, or a camera that only turns. If all points sit on a plane, or camera 2 only rotates, the matches are related by a homography and A has at least a two-parameter family of solutions: the fit returns some F that fits, not the right one (H&Z Ch. 11 Computation of the Fundamental Matrix F, §11.9.2–11.9.3, pp. 296–297). Configurations close to these give an ill-conditioned fit. Try this: open "Camera 2: move it and turn it" and set camera 2 sideways x to 0: the figure says the cameras share a centre and there is no F. - Noise. ‖Af‖ is an algebraic number, not a distance in pixels, so with noise this is not the best F. The book's Gold Standard fit minimises the pixel distances of the matches instead, starting from this one (H&Z Ch. 11 Computation of the Fundamental Matrix F, §11.4.1, alg. 11.3, pp. 284–285).
Two fixes turn this into something you can trust with real matches.
Fix one: force rank 2. A true F has rank 2: all its epipolar lines meet at the epipole e′. A fitted F from noisy matches has three non-zero singular values, so its lines do not meet in one point. The cure is read 4's rule, zero the smallest singular value (H&Z Ch. 11 Computation of the Fundamental Matrix F, §11.1.1 and alg. 11.1, pp. 280–282):
- U, V are F's singular vectors, σ₁ ≥ σ₂ ≥ σ₃ its singular values.
- The result is the rank-2 matrix nearest to F (in the sum of squared entries), and it replaces F.
- For our rig, the true F sends every line through e′ = (−2515.64, 240) px, far off the left edge of camera 2's picture. A noisy fit has no such point until the fix gives it one. The figure's first tile shows det F before the fix: small, never exactly 0 with noise.
Why it exists. A fitted F with three non-zero singular values has no epipole, and E, the four cameras and every epipolar search after this need one.
What it assumes. - "Nearest" means the smallest change in the sum of squared entries, as if all nine entries of F were equally well measured.
Where it breaks. - They are not: some entries are pinned down much harder by the matches than others, so with noise the nearest rank-2 matrix is not the best one. The book calls this step "not optimal" and fits a rank-2 F directly instead, either by minimising the algebraic error over the epipole (alg. 11.2) or the pixel distances (alg. 11.3) (H&Z Ch. 11 Computation of the Fundamental Matrix F, §11.3–11.4, pp. 282–285).
Fix two: normalise first. Raw pixels put a product of two pixel coordinates, u₂u₁, in the same row as a 1, and the fit listens to the big columns only. So move each picture's matches to have their centroid at 0 and their RMS distance from it √2, fit there, force rank 2 while still there, and only then undo the move: F = T₂ᵀF̂T₁, with T₁, T₂ the two normalising transforms ([HART97]; H&Z Ch. 11 Computation of the Fundamental Matrix F, alg. 11.1, p. 282). Flip the coordinates toggle and watch the third tile, the conditioning of A, blow up.
F has 7 degrees of freedom (nine numbers, minus the scale, minus det F = 0), which is why seven matches can also do it: they leave a one-parameter family, and det F = 0 picks one or three members from it (H&Z Ch. 11 Computation of the Fundamental Matrix F, §11.1.2, p. 281).
Try this: switch to raw pixels and add noise: the lines swing; normalise and they settle.
2. Throwing Out the Bad Matches
| Matches per sample, s | Samples needed, N |
|---|---|
| 5 (E, five-point) | 146 |
| 7 (F, seven-point) | 588 |
| 8 (F, eight-point) | 1177 |
Table. 1 Samples needed to draw at least one clean sample with probability p = 0.99 when half the matches are wrong (ε = 0.5). The same numbers are in table 4.3 of [HART04], Ch. 4 *Estimation – 2D Projective Transformations*, p. 119.
Camera: focal length and principal point
Camera 1: move it and turn it
Camera 2: move it and turn it
The first figure again, with one bad match out of 32: every line swings, not just that match's own. A real matcher gives you far more than one. A repeated texture, a window that looks like the next window, and the match is not a little off, it is somewhere else entirely.
So hold an election instead of an average. This is RANSAC, random sample consensus [FISC81]:
- pick a few matches at random, just enough to fit (eight, seven, or five);
- fit F (or E) to them;
- count the inliers: matches whose x₂ lies within a pixel or so of its line l′ = Fx₁;
- repeat, and keep the fit with the most inliers;
- refit on all its inliers: the matches that won the election are a starting point, not the answer (H&Z Ch. 11 Computation of the Fundamental Matrix F, §11.6 and alg. 11.4, pp. 290–291).
A sample containing even one bad match fits garbage and wins few votes. We only need one sample that is entirely clean. How many tries is that?
- p is the chance we want of drawing at least one clean sample;
- ε is the fraction of bad matches;
- s is the number of matches per sample, and (1 − ε)ˢ the chance that one sample is clean;
- N is the number of samples to draw (H&Z Ch. 4 Estimation – 2D Projective Transformations, eq. 4.18, p. 119).
With p = 0.99 and half the matches bad, N = log(0.01) / log(1 − 0.5⁵) rounds up to 146 samples of five. Seven matches need 588 and eight need 1177. At that rate, every extra match per sample roughly doubles the work, because the chance of a clean sample halves; the book makes the same point for seven against eight (H&Z Ch. 11 Computation of the Fundamental Matrix F, p. 290).
Why it exists. A least-squares fit averages the bad matches in. The vote only works if we draw enough samples to hit a clean one, and N says how many.
What it assumes. - You know ε. You rarely do: the book starts from a worst case and lowers N each time a bigger set of inliers turns up (H&Z Ch. 4 Estimation – 2D Projective Transformations, §4.7.1 and alg. 4.5, pp. 120–121). - A clean sample gives a model good enough to collect the other inliers. It need not: in the book's line example, two clean neighbouring points give a line with 4 votes where a better clean pair gets 10 (H&Z Ch. 4 Estimation – 2D Projective Transformations, p. 118), which is one more reason to refit on all the inliers. - The noise on a good match is Gaussian with a known σ, so "within a pixel or so" can be set: for F the book takes t² = 3.84σ² (H&Z Ch. 4 Estimation – 2D Projective Transformations, table 4.2, p. 119).
Where it breaks. - Many bad matches. N climbs fast with ε: for samples of eight it is 78 at 30%, 272 at 40% and 1177 at 50% (H&Z Ch. 4 Estimation – 2D Projective Transformations, table 4.3, p. 119). Smaller samples are the cure, hence the five-point method below. - A scene that is mostly one plane. A sample drawn from the plane does not fix F, and a whole family of F's fits every match on the plane (H&Z Ch. 11 Computation of the Fundamental Matrix F, table 11.1 and §11.9.2, pp. 296–297), so a wrong F can collect all the plane's matches as inliers and win the vote.
That is why OpenCV's findEssentialMat does not run the eight-point method at all. With K known it fits E directly with Nistér's five-point method, which solves for E from five matches, the fewest that can fix it (E has 5 degrees of freedom, read 7), and hands back up to ten candidate E's for the vote to sort out [NIST04].
3. From E to Four Cameras
Camera: focal length and principal point
Camera 1: move it and turn it
Camera 2: move it and turn it
Here is the surprise of the read. Give someone E and ask "where is camera 2?". They have to answer with four cameras, not one.
What the figure shows:
- the four small pictures are the four candidates: two rotations, each with the baseline pointing one way or the other;
- the large scene is the candidate you picked; on the default, [R_a | −u₃], the two rays meet at X in front of both cameras;
- step to R_b and camera 2 is turned right round about the baseline: its y₂ and z₂ axes flip.
With K known, F gives E, and E has a special shape:
- K is the matrix above (500 px, 320, 240); [t]ₓ is the cross-product matrix of t from read 7.
- E's two non-zero singular values are equal, read 7's fingerprint. It works the other way too: a 3×3 matrix with two equal singular values and a third of 0 is an essential matrix (H&Z Ch. 9 Epipolar Geometry and the Fundamental Matrix, res. 9.17, p. 257). E itself is Longuet-Higgins' matrix [LONG81].
- From a noisy F, KᵀFK comes out with two singular values that are close but not equal. Set both to their average and the third to 0: that is the nearest essential matrix (H&Z Ch. 11 Computation of the Fundamental Matrix F, res. 11.1, p. 294).
- For our rig, E = [[0, −0.17365, 0], [0, 0, 1], [0, −0.98481, 0]] and its singular values are (1, 1, 0).
Why it exists. F carries the pictures' pixels; E carries only the cameras' motion. Taking K off is what lets the motion be read back out of the matches.
What it assumes.
- K is right, and it is the same for both pictures. With two different cameras it is E = K₂ᵀFK₁ (H&Z Ch. 9 Epipolar Geometry and the Fundamental Matrix, eq. 9.12, p. 257). The usual findEssentialMat call takes one camera matrix and assumes it for both pictures; for two cameras use its overload with two camera matrices [OPEN24].
- The pixels are pinhole pixels: distortion already undone (Lens Distortion — Bending Straight Lines Back).
Where it breaks. - A wrong K. KᵀFK is then not an essential matrix: its two singular values come out unequal (res. 9.17). Res. 11.1 still hands you the nearest E, and that E is a pose for cameras that are not yours, with no warning. The fix is upstream: What calibrateCamera Actually Does.
Two equal singular values mean E can be split into a rotation and a direction in exactly four ways (H&Z Ch. 9 Epipolar Geometry and the Fundamental Matrix, §9.6.2, res. 9.18–9.19, pp. 258–259):
- W is a quarter turn about the third axis, and Wᵀ the quarter turn the other way.
- u₃ is the third column of U, a unit vector: it spans the null space of Eᵀ, the direction t must point along.
- So there are two rotations, R_a = UWVᵀ and R_b = UWᵀVᵀ, each with ±u₃.
The numbers, with the SVD built so that det U = det V = +1:
- R_a = UWVᵀ is R₂ exactly: [[0.98481, 0, 0.17365], [0, 1, 0], [−0.17365, 0, 0.98481]].
- R_b = UWᵀVᵀ = [[0.98481, 0, −0.17365], [0, −1, 0], [−0.17365, 0, −0.98481]]: R₂ turned 180° about the baseline. The book calls R_a and R_b a twisted pair.
- u₃ = (0.98481, 0, −0.17365). With this SVD that happens to be −t₂, but another SVD routine could hand you +t₂. So write u₃ = ±t and let the next section decide.
Why it exists. E is a product, [t]ₓR, and we need the two factors back. Its two equal singular values are exactly what makes that split possible.
What it assumes. - The cameras do not share a centre, so t ≠ 0. - E is a true essential matrix, (σ, σ, 0). From noisy matches, take res. 11.1's nearest E first. - U and V are rotations, det +1: the NOTE below.
Where it breaks. - No translation. With t = 0, E = [t]ₓR is the zero matrix and there is nothing to split (H&Z Ch. 11 Computation of the Fundamental Matrix F, §11.9.3, p. 297). Close to it, with a very short baseline, the fit is ill-conditioned, as near any degenerate case (H&Z Ch. 11 Computation of the Fundamental Matrix F, p. 296), and u₃ swings with the noise. Try this: in the figure above, open "Camera 2: move it and turn it" and set camera 2 sideways x to 0. - The length of t. u₃ is a unit vector, so the metres are gone here for good: section 5.
NOTE: an SVD routine may return U or V with determinant −1, and then UWVᵀ is a reflection, not a rotation. Negate the third column of U (or of V): E does not change, because σ₃ = 0 multiplies that column. OpenCV's
recoverPosedoes not leave this to you; it callsdecomposeEssentialMat, which negates the whole U or V instead. That flips the sign of E, which does no harm, because E only matters up to scale.
Try this: step to R_b and look at camera 2's axes: z₂ points away from the scene.
4. Only One Sees the Point in Front
Camera: focal length and principal point
Camera 1: move it and turn it
Camera 2: move it and turn it
The same figure, opened at the twisted pair. Think of the four candidates as four alibis. Each one explains the two photos perfectly; only one of them puts the point where a camera could actually see it.
The test is read 8 plus read 2. Triangulate one match under each candidate, with P₁ = [I | 0] and P₂ = [R | t] in normalised coordinates x̂ = K⁻¹x (here x̂₁ = (0.075, −0.05, 1) and x̂₂ = (0.001287, −0.049252, 1)), then check its depth in both cameras:
- X = (X, Y, Z) is the triangulated point in camera 1's frame, so its depth there, Z₁, is Z;
- Z₂ is its depth in the candidate camera 2: r₃ is the third row of the candidate's R (its forward axis) and C̃ = −Rᵀt its centre;
- a negative depth means the point is behind that camera. This is the cheirality test: which side of the camera the point is on.
The four candidates on our match, depths in camera 1 / camera 2:
| Candidate | Triangulated X (m) | Depth in camera 1 (m) | Depth in camera 2 (m) |
|---|---|---|---|
| [R_a | +u₃] | (−0.3, 0.2, −4) | −4 | −4.061 |
| [R_a | −u₃] | (0.3, −0.2, 4) | 4 | 4.061 |
| [R_b | +u₃] | (0.75, −0.5, 10) | 10 | −10.152 |
| [R_b | −u₃] | (−0.75, 0.5, −10) | −10 | 10.152 |
Table. 2 The four candidates from res. 9.19 (H&Z Ch. 9 *Epipolar Geometry and the Fundamental Matrix*, p. 259) on the worked match. Only [R_a | −u₃] is in front of both cameras, as fig. 9.12 of [HART04] (H&Z Ch. 9 *Epipolar Geometry and the Fundamental Matrix*, p. 260) says it must be.
- One of four passes: [R_a | −u₃], which is R₂ and t₂ = (−0.98481, 0, 0.17365), and the point comes back as X = (0.3, −0.2, 4) m.
- One candidate sees the point behind both cameras: the baseline reversed.
- The twisted pair sees it in front of one camera and behind the other, always.
One point is enough on exact data (H&Z Ch. 9 Epipolar Geometry and the Fundamental Matrix, p. 259). With noise and the odd wrong match, recoverPose triangulates every match under all four candidates, counts how many land in front of both, and keeps the candidate with the most.
Why it exists. All four candidates explain the matches equally well; x₂ᵀEx₁ = 0 cannot tell them apart. Which side of each camera the point is on is the only thing left that can.
What it assumes. - A real camera sees only forward: every true point has positive depth in both. - The match is right, and its two rays cross at a real angle, so the triangulated point lands clearly on one side.
Where it breaks.
- Far points and short baselines. When the rays are close to parallel (Triangulation — Two Rays That Almost Meet: the angle between the rays sets the accuracy), a little noise can push the triangulated point through infinity to the other side, and its depth flips sign. One such point votes for the wrong candidate. OpenCV's recoverPose has an overload with distanceThresh that throws out points farther than that as points at infinity before counting [OPEN24].
- No translation. There is no E to split and no candidate to test (section 3).
Try this: step through: one candidate sees the point behind both cameras, two see it behind one.
5. Two Photos Cannot Tell a House From a Doll's House
Camera: focal length and principal point
Camera 1: move it and turn it
Camera 2: move it and turn it
Film a corridor, then film a perfect doll's house copy of it, half the size, with the camera half as far away. Same pictures. The book says it of its own corridor photos: "It may be two metres, one metre. It is even possible that this is an image of a doll's house" (H&Z Ch. 10 3D Reconstruction of Cameras and Structure, §10.2, p. 264).
What the figure shows:
- the slider scales everything about camera 1's centre: the point, the 32 target corners, the floor and the baseline;
- the dims read B = 1 m and Z = 4 m on the default, and change with the slider;
- the two small pictures do not change by a single pixel.
No new equation is needed. Scale the scene and the baseline by the same λ: every point in camera 2's frame becomes R(λX − λC̃₂) = λR(X − C̃₂), and the pixel divides λ straight back out. At λ = 0.5 and at λ = 2 the pictures still show (357.5, 215) and (320.644, 215.374) px.
So E only knows t up to scale. The book and OpenCV both pick the length 1 (H&Z Ch. 9 Epipolar Geometry and the Fundamental Matrix, p. 259):
recoverPosereturns t = (−0.98481, 0, 0.17365), with |t| = 1;- that is our t₂ exactly, but only because our baseline happens to be B = 1 m. Move camera 2 to 2 m and you get the same unit vector back;
- one known length gives back the metres: a measured baseline, a known object in the scene, one tape-measured distance.
This ambiguity never goes away, even with perfect K; Longuet-Higgins showed it is the only one left for calibrated cameras (H&Z Ch. 10 3D Reconstruction of Cameras and Structure, pp. 264–265). Without K things are worse, and the book climbs out in steps (H&Z Ch. 10 3D Reconstruction of Cameras and Structure, table 10.1, p. 278). In words:
- matches alone give the scene up to a projective warp: straight lines stay straight, and nothing else is promised;
- add parallel lines or vanishing points (read 3) and you get it up to an affine warp: parallel lines stay parallel;
- add K (read 6) and you get it up to scale: angles and length ratios are right, which is what this read did;
- add one known length and you have metres.
Try this: play the scale: the world shrinks to a doll's house, and neither picture changes by a single pixel.
5.1 Where I Met This
- At Cloudastructure I "built a camera mapping framework leveraging SfM, photogrammetry, MCMO tracking, and ground-plane alignment". Structure from motion starts with exactly this two-view step: matches, E, the four candidates, and the one in front.
6. In OpenCV
| Here | OpenCV | Shape | Series value |
|---|---|---|---|
| E with RANSAC | findEssentialMat(points1, points2, cameraMatrix, method=RANSAC, prob=0.999, threshold=1.0) → E, mask | 3×3 | five-point solver [NIST04]; threshold is the distance to the epipolar line in px |
| F with RANSAC | findFundamentalMat(points1, points2, FM_RANSAC, ransacReprojThreshold=3, confidence=0.99) → F, mask | 3×3 | FM_7POINT takes exactly 7 matches, FM_8POINT 8 or more |
| the four candidates | decomposeEssentialMat(E) → R1, R2, t | 3×3, 3×3, 3×1 | R_a and R_b (in either order), t = ±u₃; the four poses are [R1, ±t], [R2, ±t] |
| the winner | recoverPose(E, points1, points2, cameraMatrix) → count, R, t, mask | t has length 1 | R₂, (−0.98481, 0, 0.17365) |
| newer estimators | USAC_MAGSAC, USAC_DEFAULT, USAC_ACCURATE … as the method flag (from OpenCV 4.5) | flag | — |
Table. 3 This read in OpenCV 4.x [OPEN24]. The count from recoverPose is the number of inliers that pass the cheirality check.
- OpenCV's R, t take camera 1's frame to camera 2's, the same direction as ours.
probis the p of eq. 4.18, andthresholdis "within a pixel or so". The defaults differ between the two functions: 0.999 and 1 px for E, 0.99 and 3 px for F.
7. What Came Next
We now have R, the direction of t, and, with one known length, the scale. One match gave us one point. A depth map wants every pixel, and searching a whole epipolar line for each of a few hundred thousand pixels is slow. Turn both pictures first, so that every epipolar line becomes a row, and triangulation becomes a single division: that is Stereo Depth — Rectification and Z = fB/d.
8. References
- [HART04] R. Hartley, A. Zisserman, Multiple View Geometry in Computer Vision, 2nd ed., Cambridge University Press, 2004. Chapters used in this read: Ch. 4 Estimation – 2D Projective Transformations; Ch. 9 Epipolar Geometry and the Fundamental Matrix; Ch. 10 3D Reconstruction of Cameras and Structure; Ch. 11 Computation of the Fundamental Matrix F.
- [OPEN24] OpenCV 4.x, Camera Calibration and 3D Reconstruction (calib3d).
- [HART97] R. Hartley, In Defense of the Eight-Point Algorithm, 1997.
- [LONG81] H. C. Longuet-Higgins, A Computer Algorithm for Reconstructing a Scene from Two Projections, 1981.
- [NIST04] D. Nistér, An Efficient Solution to the Five-Point Relative Pose Problem, 2004.
- [FISC81] M. A. Fischler, R. C. Bolles, Random Sample Consensus, 1981.
9. Connections
What this page builds on, cites or links to, and what points back at it. A plain box is a “builds on”; “cited” and “linked in the text” are the lighter links. Hover a box for a preview.
Related
- Read · this builds on it (earlier in the series)
- Read · this builds on it (earlier in the series)
- Read · builds on this (next in the series)
- Read · same series: Multiple View Geometry
- Read · same series: Multiple View Geometry
- Read · same series: Multiple View Geometry
Go deeper
-
Start withRead
-
Read
-
Read
-
Read
-
Read
-
Read
-
Read
-
Read
-
You are hereFrom Matches to Motion — Four Cameras, One Right AnswerRead
-
ThenRead
-
Read
Go broader
- Sits under
- SeriesMultiple View Geometrypart 9 of 11 · start from the first part
- Its tags on the map
- Ask the mapWhat connects Relative pose and …type the other page's name; the map answers with the chain of links between them