Reading and display settings

Appearance

System follows your operating system and keeps following it, even if you change it later. The header's sun, moon and monitor cycle the same three options.

Text size (%) 100%

Default. Scales every text size on the site, equations and tables included.

Reading width 70ch

How much text runs across one line of prose. Narrower is easier to track; wider fits more on screen.

Line spacing 1.6

The leading on body text. Taller leading helps a tired eye stay on the line.

Density

Padding and gaps around controls, cards, and tables — how much breathing room the layout leaves itself.

Motion

System follows your operating system. Reduced removes every transition on this site. Full keeps them on unless your system asks for less.

Multi-View Geometry, Interactively

The projective plane, homogeneous coordinates, the congruence symbol, and the point/line duality every later part depends on.

Part 0
Projective geometry & homogeneous coordinates

The projective plane, homogeneous coordinates, the congruence symbol, and the point/line duality every later part depends on.

Part 1
Conics & the absolute conic

A conic as the quadratic form x̃ᵀCx̃=0, how a projective map transforms it, and the absolute conic whose image ω=K⁻ᵀK⁻¹ is exactly what calibration recovers.

Part 2
The projective transformation hierarchy

Euclidean ⊂ similarity ⊂ affine ⊂ projective: the degrees of freedom each group adds, the quantities each destroys, and cross-ratio as the invariant that survives.

Part 3
Three-dimensional projective space & Plücker lines

Points and planes in P³ with their dual incidence rule, the plane at infinity, and Plücker coordinates (d, m) for lines together with the d·m = 0 constraint.

Part 4
The pinhole camera

Perspective projection, focal length and field of view, coordinate-convention traps, lens distortion, and the general projective camera P.

Part 5
Camera calibration

How you actually get K: Zhang's method, checkerboard capture, the image of the absolute conic, skew, and what a good reprojection error looks like.

Part 6
Epipolar geometry

The epipolar constraint, essential and fundamental matrices, and why matching points between two images collapses to a 1D search along a line.

Part 7
Robust estimation: RANSAC

Outlier rejection with RANSAC and its descendants (MSAC, LO-RANSAC, MAGSAC), minimal samples, the iteration-count formula, and Sampson vs. algebraic error.

Part 8
Homography

The planar homography, the pure-rotation special case, DLT estimation, and why it silently breaks once points leave the plane.

Part 9
Stereo rectification & disparity

Rectifying an image pair so epipolar lines become horizontal scanlines, block matching and SGBM, disparity maps, and Z = fB/d.

Part 10
Triangulation & recovering pose

Recovering relative camera pose from the essential matrix, and triangulating 3D points from two known views, linear vs. nonlinear.

Part 11
PnP: camera resection

Recovering absolute camera pose from 2D-3D correspondences: DLT resection, P3P, EPnP, and PnP+RANSAC, the way every new camera enters a reconstruction.

Part 12
Three views and the trifocal tensor

Why a third camera view is fully predictable from the first two, and the trifocal tensor that captures three-view geometry directly.

Part 13
The five-point algorithm & minimal relative-pose solvers

Why a calibrated pair needs only five correspondences: the essential matrix's equal-singular-value and rank-2 constraints, Nister's solver, and how it beats the eight-point fit on difficult scenes.

Part 14
Affine factorization: the Tomasi-Kanade method

Under weak perspective the tracked features form a rank-3 measurement matrix; one SVD factors it into camera motion and 3D shape, with the affine gauge fixed by rotation orthonormality.

Part 15
Bundle adjustment & structure from motion

The reprojection-error cost over every camera and every point, why it connects straight back to Gauss-Newton and Levenberg-Marquardt, and a toy SfM demo you run yourself.

Part 16
SfM pipelines

Incremental structure-from-motion (COLMAP-style) versus global SfM, self-calibration, and the stratified projective to affine to metric upgrade.

Part 17
Self-calibration & Kruppa's equations

Recovering the image of the absolute conic from images alone: Kruppa's equations, the absolute dual quadric, and the linear solve that upgrades a projective reconstruction to a metric one.

Part 18
Degenerate configurations

Planar scenes, pure rotation, critical surfaces and near-degenerate baselines: the geometric coincidences that break the estimators, and how pipelines detect them.

Part 19
Beyond multi-view geometry

Where the field goes next: SLAM, dense multi-view stereo, and the learned successors (NeRF, 3D Gaussian Splatting, DUSt3R/VGGT), framed as the same geometry in new representations.

Open the 20-part guide →

Nonlinear Optimization, Interactively

Gradient descent, Newton's method, Gauss-Newton and Levenberg-Marquardt, built around one running example: a robot figuring out where it is.

Open the 5-part guide →

Lie Groups & Lie Algebras, Interactively

Average two compass headings, add two sets of Euler angles, sum two rotation matrices - and watch each one fail in a way that points at the same missing idea.

Part 1
Why rotations don't add

Average two compass headings, add two sets of Euler angles, sum two rotation matrices - and watch each one fail in a way that points at the same missing idea.

Part 2
Groups, matrix groups and manifolds

The four group axioms tested live on SO(2), SO(3), SE(3) and friends, and the smooth, locally flat surface that turns a group into a Lie group.

Part 3
SO(2): the whole story in one dimension

The circle, its tangent line, exp as wrapping and log as unwrapping, and the plus and minus operators every later part generalises.

Part 4
The tangent space and so(3)

Differentiate R(t)R(t)ᵀ = I and a skew-symmetric matrix falls out: hat and vee, the three generators, and the Lie bracket as the cost of reordering two rotations.

Part 5
Exp and Log on SO(3)

Rodrigues' formula two ways, the Log map and its two numerical traps, and the ball of radius π that holds every rotation exactly once.

Part 6
Euler angles, axis-angle and quaternions

Drive a gimbal into lock, watch a quaternion take 720° to come home, and compare every way of writing a rotation down.

Part 7
SE(2) and SE(3): rigid motion

Homogeneous matrices, twists, and why the exponential of a constant velocity is a screw - a helix you can shape with two sliders.

Part 8
The adjoint: moving tangent vectors between frames

One perturbation, applied on the left or on the right of a pose, and the matrix that converts between them - plus what each library means by a 'delta'.

Part 9
Jacobians on Lie groups

Right and left Jacobians, Baker-Campbell-Hausdorff to first order, and a table of elementary derivatives you can check numerically with one click.

Part 10
Optimization on manifolds

Gauss-Newton with a retraction: align two point clouds on SE(3), average noisy rotations, and close the loop on a small SE(2) pose graph.

Part 11
Uncertainty on Lie groups

Gaussians that live in the tangent space, the banana-shaped cloud of a robot driving with a shaky heading, and covariance propagated through composition.

Part 12
Interpolation, integration and IMU preintegration

Geodesics and slerp, integrating an angular velocity without drifting off the group, and the preintegrated gyro measurement that makes visual-inertial odometry fast.

Formula sheet
Lie theory formula sheet

Hat, vee, Exp, Log, adjoint and both Jacobians for SO(2), SO(3), SE(2) and SE(3) on one page, with the conventions used by the major libraries.

Open the 12-part guide →

Guide Kit Demo

A minimal page proving the new subject-neutral guide kit renders: guide.css styling, a Guide.drawBars() canvas demo driven by a slider, and a GuideMath helper call.

Open the 1-part guide →