Image Formation & Foundations

homogeneous coordinates

Homogeneous coordinates are a bookkeeping trick that makes the awkward operations of vision — translation and perspective division — into clean matrix multiplications. The idea is to add one extra coordinate. A 2D point (x, y) is written as a 3-vector (x, y, 1), and a 3D point (X, Y, Z) as a 4-vector (X, Y, Z, 1). That spare coordinate is the lever that linearizes everything.

The defining rule is scale invariance: a homogeneous vector represents the same point as any nonzero multiple of itself, so (x, y, 1), (2x, 2y, 2) and (wx, wy, w) all mean the ordinary point (x, y). To convert back to ordinary (Cartesian) coordinates you divide by the last component: (a, b, w) becomes (a/w, b/w). This single division is exactly the divide-by-depth of perspective projection, which is why the whole pinhole mapping x = f X / Z collapses into one matrix product followed by the homogeneous normalization, instead of an explicit nonlinear formula.

Two payoffs make this indispensable. First, translation, rotation, scaling and projection all become a single 3x3 (for 2D) or 3x4 (for projection) matrix, so chains of transforms compose by matrix multiplication — the basis of the camera projection matrix P = K[R|t]. Second, points at infinity get a finite, well-behaved representation: a direction (a vanishing point) is just a homogeneous point with last coordinate w = 0, so parallel lines meeting at infinity is no longer a special case but an ordinary point in projective space. This is the language of all of projective geometry and of estimation tasks like homography and the fundamental matrix.

Because of scale invariance, never compare homogeneous vectors component-by-component without normalizing first — (1, 2, 1) and (2, 4, 2) are equal points. When solving for matrices like a homography, the scale is undetermined, so you fix it with a normalization (e.g. set the last entry to 1, or constrain the matrix norm).

Also called
projective coordinates