Stereo DSO

Wang 2017 · Paper

One-line summary — Stereo DSO extends DSO’s direct sparse photometric bundle adjustment to stereo cameras, coupling static stereo (left-right) constraints with temporal multi-view constraints in one windowed optimization — yielding highly accurate, metric-scale direct odometry at KITTI scale.

Problem

Monocular direct methods like DSO accumulate scale drift and need a slow, motion-dependent bootstrapping phase, since depth only emerges from temporal parallax. A fixed-baseline stereo rig fixes both — but static stereo alone can only triangulate accurately within a limited depth range, and stereo edges parallel to epipolar lines are degenerate. Stereo DSO asks how to integrate static stereo into the direct sparse bundle adjustment of temporal multi-view stereo so the two complement each other: stereo provides absolute scale and depth initialization; temporal observations constrain far points and degenerate directions.

Method & architecture

Pipeline. New stereo frames are tracked against the newest keyframe by coarse-to-fine direct image alignment (Gauss-Newton on an image pyramid, constant-motion initialization); the pose refines the depths of recently selected candidate points. If the scene or illumination changed enough (mean squared optical flow, relative brightness factor), a keyframe is created and added to an active window, where poses, affine brightness parameters, point inverse depths, and camera intrinsics of all keyframes are jointly optimized; old keyframes and points are marginalized by Schur complement. System initialization uses a semi-dense depth map from static stereo matching (NCC over 3×5 patches along the horizontal epipolar line) instead of random depths.

Photometric energy. For points Pi\mathcal{P}_i of frame IiI_i observed in IjI_j, with affine brightness parameters a,ba,b per image:

Eij=pPip~Npωp~Ij[p~]bjeajeai(Ii[p~]bi)γE_{ij}=\sum_{\mathbf{p}\in\mathcal{P}_{i}}\sum_{\tilde{\mathbf{p}}\in\mathcal{N}_{\mathbf{p}}}\omega_{\tilde{\mathbf{p}}}\left\|I_{j}[\tilde{\mathbf{p}}^{\prime}]-b_{j}-\frac{e^{a_{j}}}{e^{a_{i}}}\left(I_{i}[\tilde{\mathbf{p}}]-b_{i}\right)\right\|_{\gamma}

where γ\|\cdot\|_\gamma is the Huber norm, Np\mathcal{N}_{\mathbf{p}} the 8-point residual pattern, ωp=c2/(c2+Ii(p)22)\omega_{\mathbf{p}}=c^{2}/(c^{2}+\|\nabla I_{i}(\mathbf{p})\|_{2}^{2}) down-weights high-gradient pixels, and p=ΠK(TjiΠK1(p,dp))\mathbf{p}'=\Pi_{\mathbf{K}}\left(\mathbf{T}_{ji}\,\Pi_{\mathbf{K}}^{-1}(\mathbf{p},d_{\mathbf{p}})\right) reprojects via inverse depth dpd_{\mathbf{p}}.

Stereo coupling — the core contribution. Each active point produces temporal residuals rtr^{t} toward other keyframes and a static stereo residual rsr^{s} toward the same-instant right image (Tji\mathbf{T}_{ji} fixed by the baseline, so its geometric parameters are only (d,c)(d,\mathbf{c})). Both enter one energy weighted by a coupling factor λ\lambda:

E=iFpPi(jobst(p)Eijp+λEisp)E=\sum_{i\in\mathcal{F}}\sum_{\mathbf{p}\in\mathcal{P}_{i}}\Big(\sum_{j\in obs^{t}(\mathbf{p})}E^{\mathbf{p}}_{ij}+\lambda E^{\mathbf{p}}_{is}\Big)

minimized by Gauss-Newton, δξ=(JTWJ)1JTWr\delta\boldsymbol{\xi}=-(\mathbf{J}^{T}\mathbf{W}\mathbf{J})^{-1}\mathbf{J}^{T}\mathbf{W}\mathbf{r}, over all keyframe poses T\mathbf{T}, inverse depths dd, intrinsics c\mathbf{c}, and left/right affine parameters aL,bL,aR,bRa^{L},b^{L},a^{R},b^{R}, with SE(3)\mathrm{SE}(3) increments applied as xT:=exp(x^)T\mathbf{x}\boxplus\mathbf{T}:=\exp(\hat{\mathbf{x}})\mathbf{T}.

Point management and marginalization. Candidate pixels are picked from gradient-adaptive blocks (block size proportional to image size, which helps wide KITTI images); their depths are initialized by static stereo NCC matching — significantly increasing tracking accuracy over the monocular 0-to-infinity initialization — and refined by subsequent non-keyframes before activation. Marginalization keeps the window bounded: with α\alpha the kept and β\beta the marginalized variables,

(HααHαβHββ1HαβT)xα=bαHαβHββ1bβ\left(\mathbf{H}_{\alpha\alpha}-\mathbf{H}_{\alpha\beta}\mathbf{H}^{-1}_{\beta\beta}\mathbf{H}^{T}_{\alpha\beta}\right)\mathbf{x}_{\alpha}=\mathbf{b}_{\alpha}-\mathbf{H}_{\alpha\beta}\mathbf{H}^{-1}_{\beta\beta}\mathbf{b}_{\beta}

is retained as a prior for subsequent optimizations.

Results

Why it matters for SLAM

Stereo DSO showed that direct methods are not confined to small indoor scenes: with a stereo rig they achieve state-of-the-art large-scale outdoor odometry — beating loop-closing SLAM systems as pure VO. Its recipe of static-plus-temporal stereo in one photometric bundle adjustment and stereo-initialized point depths became a standard design pattern: the “virtual stereo” of DVSO (CNN-predicted right images) and the inertial extension VI-DSO both build directly on it. Study it after DSO to see how a direct pipeline absorbs a second camera.