SVO

Forster 2014 · Paper

One-line summary — A semi-direct visual odometry method that detects FAST corners only on keyframes but tracks motion by direct photometric alignment of small patches, reaching hundreds of frames per second.

Problem

Feature-based pipelines (PTAM and its MAV-adapted variants) spend most of their per-frame budget on feature extraction and robust matching, while dense direct methods (DTAM) need a GPU. Micro aerial vehicles need precise pose estimates at very high rate and low latency on small onboard computers, and neither camp fit that budget. SVO (“SVO: Fast Semi-Direct Monocular Visual Odometry”, ICRA 2014) eliminates “costly feature extraction and robust matching techniques for motion estimation” by operating directly on pixel intensities, and pairs this with a probabilistic mapping method that explicitly models outliers.

Method & architecture

Two parallel threads as in PTAM: motion estimation and mapping. Feature extraction happens only when a keyframe is selected; per-frame motion estimation is descriptor-free and proceeds in three steps.

1. Sparse model-based image alignment — frame-to-frame pose from direct alignment of 4×4-pixel patches around features with known depth dud_{\mathbf{u}}:

Tk,k1=argminT12iRˉδI(T,ui)2,δI(T,u)=Ik(π(Tπ1(u,du)))Ik1(u)\mathbf{T}_{k,k-1}=\arg\min_{\mathbf{T}}\frac{1}{2}\sum_{i\in\bar{\mathcal{R}}}\lVert\delta I(\mathbf{T},\mathbf{u}_i)\rVert^2,\qquad \delta I(\mathbf{T},\mathbf{u})=I_k\big(\pi(\mathbf{T}\cdot\pi^{-1}(\mathbf{u},d_{\mathbf{u}}))\big)-I_{k-1}(\mathbf{u})

solved by Gauss-Newton with the inverse compositional formulation (constant, precomputed Jacobians), coarse-to-fine over a 5-level pyramid. This step implicitly satisfies the epipolar constraint and yields outlier-free correspondences.

2. Feature alignment (relaxation) — each patch’s 2D position is refined individually against the keyframe with the closest observation angle, using 8×8 patches with affine warp Ai\mathbf{A}_i and inverse compositional Lucas-Kanade:

ui=argminui12Ik(ui)AiIr(ui)2\mathbf{u}_i'=\arg\min_{\mathbf{u}_i'}\frac{1}{2}\lVert I_k(\mathbf{u}_i')-\mathbf{A}_i\cdot I_r(\mathbf{u}_i)\rVert^2

This deliberately violates epipolar constraints to gain subpixel correspondence and re-anchors measurements to the map, breaking the frame-to-frame drift chain.

3. Pose & structure refinement — the reprojection residual created in step 2 (≈0.3 px on average) is minimised by motion-only BA, Tk,w=argminT12iuiπ(Tk,wwpi)2\mathbf{T}_{k,w}=\arg\min_{\mathbf{T}}\frac{1}{2}\sum_i\lVert\mathbf{u}_i-\pi(\mathbf{T}_{k,w}\,{}_w\mathbf{p}_i)\rVert^2, then structure-only BA; optional local BA is skipped in the fast setting.

Mapping — a recursive Bayesian depth filter per new feature (FAST corner with highest Shi-Tomasi score per 30×30 cell), initialised at the average scene depth with high uncertainty. Each new frame contributes a triangulated depth d~ik\tilde{d}_i^k from the best epipolar-line match, modelled as a Gaussian + Uniform inlier/outlier mixture:

p(d~ikdi,ρi)=ρiN(d~ikdi,τi2)+(1ρi)U(d~ikdimin,dimax)p(\tilde{d}_i^k\mid d_i,\rho_i)=\rho_i\,\mathcal{N}\big(\tilde{d}_i^k\mid d_i,\tau_i^2\big)+(1-\rho_i)\,U\big(\tilde{d}_i^k\mid d_i^{min},d_i^{max}\big)

with inlier probability ρi\rho_i and geometric variance τi2\tau_i^2 (one-pixel disparity assumption), parameterised in inverse depth. A 3D point enters the map only after the filter converges, keeping outliers out by construction. Keyframes are selected when distance to all keyframes exceeds 12% of average scene depth.

Results

On an 84 m MAV trajectory with motion-capture ground truth, SVO’s relative pose error is 0.0059 m/s (fast setting) and 0.0051 m/s (accurate setting) versus 0.0164 m/s for the MAV-tuned PTAM of Weiss et al., with smoother trajectories and far fewer 3D outliers. Runtime: 3.04 ms per frame on a laptop (Intel i7, >300 fps; 6 ms with local BA) and 18.17 ms on the onboard Odroid-U2 ARM computer (55 fps), against 91 and 27 fps for PTAM — using at most 2 CPU cores and only 120 tracked features in the fast setting. The depth filter lets SVO track reliably in repetitive high-frequency texture (asphalt, grass) where PTAM produces many outlier points. Released as open source.

Why it matters for SLAM

SVO demonstrated that dropping per-frame feature extraction and descriptor matching enables extremely low-latency, subpixel-precise odometry, making it the estimator of choice for micro aerial vehicles and embedded platforms for years. It defined the “semi-direct” category between feature-based (PTAM, ORB-SLAM) and direct (LSD-SLAM, DSO) methods, and its Gaussian+Uniform depth filter (from Vogiatzis & Hernández, also used in REMODE) was reused by many later systems. SVO2 extended the recipe to multi-camera rigs, fisheye/catadioptric lenses, edgelets, and motion priors.