is linear in the entries of . Each correspondence gives one equation, so eight give a linear system whose null space is — the eight-point algorithm. It works, and it works badly on raw pixel coordinates: the entries of the design matrix span several orders of magnitude and the system is atrociously conditioned. Hartley's normalisation — translate the points to zero mean and scale them to average distance from the origin — is not a refinement, it is the difference between a usable answer and noise.
has only five degrees of freedom (three rotation, three translation, minus one for scale), so the linear solution must be projected onto the essential manifold: take the SVD and replace the singular values with .
What remains ambiguous cannot be settled at all. is defined up to scale, so is recovered as a direction. A scene twice as large, viewed from twice as far apart, produces identical images. From two views of unknown points you get the shape of the scene and the shape of the trajectory, both in units of "one baseline".
Metric scale must come from outside: a known object size, a stereo rig with a measured baseline, an IMU with an accelerometer, a wheel odometer, or a depth sensor. Monocular visual odometry without such an input does not merely have an unknown scale — the scale drifts, because each new pair is scaled relative to the last and the errors compound.
Your monocular VO trajectory has the right shape but is 40% too small, and the error grows over time. Which two problems are these?
Show answer
The constant factor is the unrecoverable global scale — there is nothing to fix, only something to supply, from a sensor or a known dimension. The growth over time is scale drift: each new segment is triangulated relative to the previous map, so scale error accumulates multiplicatively. Loop closure with a similarity transform (7-DoF, including scale) corrects it where loops exist; without loops, only an absolute-scale sensor prevents it.