The projective map that carries one plane onto another. A single 3×3 matrix H with 8 degrees of freedom, acting on homogeneous coordinates. Feed it four point-correspondences and the Direct Linear Transform recovers the map exactly — the transform behind panorama stitching and rectified planes. Rendered, not quoted.
source Hartley & Zisserman, Multiple View Geometry in Computer Vision, 2nd ed. §4.1 (Direct Linear Transform), Cambridge University Press, 2003 · ISBN 9780521540513 · robots.ox.ac.uk/~vgg/hzbook AMBER no stable open full-text; cited author/title/year.
A point on plane π is written homogeneously as x = [x, y, 1]ᵀ. The homography maps it to x′ ∼ H·x, then the perspective divide recovers pixel coordinates: (u,v) = (Hx)₀/(Hx)₂ , (Hx)₁/(Hx)₂.
H has 9 entries but only 8 DoF — it is defined up to overall scale (we pin h₃₃=1). Each correspondence gives 2 linear constraints, so 4 points fix H. The DLT stacks those constraints and solves the linear system.
One plane onto another — the-homography is the homogeneous-coordinate projective map fitted from correspondences. It is the plane-to-plane special case of the-perspective-projection, and the fitting kernel beneath panorama stitching: overlapping photos of a scene are aligned by the H that maps one image plane onto the next.
neighbour → the-perspective-projection (full 3×4 camera) · the-homogeneous-coordinates (the space H acts in).
Re-solves H from the live correspondences and checks that every one of the four maps back onto its target after the divide. It re-runs on demand and flips red the instant window 6 tampers the solver.
WITNESS — not yet runFour source→target correspondences, generated from a genuinely projective ground-truth H (h₃₁, h₃₂ ≠ 0, so it is not merely affine):
The DLT solves H live from the four correspondences and maps the unit quad. Blue = source square, green = mapped quad (open dots = target correspondences it must hit).
mapped: ...
Proven result: H recovered from 4 correspondences reproduces each one exactly after the perspective divide.
booting...Real failure modes of DLT homography estimation:
• Degenerate configuration: if 3 of the 4 source points are collinear, the constraint matrix drops rank and H is not determined.
• Un-normalised coordinates: raw pixel values make the DLT matrix badly conditioned; Hartley normalisation (centre + scale to √2) is needed for accuracy on real data.
• Points at infinity / h₃₃=0: pinning h₃₃=1 fails when the true map sends the origin to infinity; the general solution takes the null-vector of the stacked matrix instead.
• Noise & outliers: exact 4-point solve has no redundancy; real pipelines use RANSAC + many points + a nonlinear (reprojection-error) refinement.
“A homography preserves parallel lines and distances.”
→ No. It preserves collinearity and cross-ratio only. Parallel lines meet at a finite vanishing point; lengths, angles and ratios of areas are not preserved.
“3 correspondences are enough to fit H.”
→ No. 3 points give 6 constraints for 8 DoF — under-determined. Assuming a unique H silently forces an affine map (window 6).
“H and 2H are different transforms.”
→ No. H is homogeneous — scaling every entry leaves the map after the divide identical.
Disclosed planted void: solve H from only 3 of the 4 correspondences. Six constraints cannot fix 8 DoF, so the solver falls back to an affine map (h₃₁=h₃₂=0). It fits those 3 exactly but misses the 4th. The witness (7) catches it.