How far can a worn stereo pair measure depth?
On a path surface, a cyclist's helmet cameras, 109.5 mm apart, had a matching spread of 0.35 to 0.70 px (robust 1 sigma). That implies a depth spread of 3.5 cm at 2.8 m, 12 cm at 4.8 m and 2.3 m at 16.4 m. These are spreads about a fitted path plane, not errors against measured depth: the ride has no ground-truth depth.
The recording
TUM-VIE (arXiv 2108.07329) records sequences with a rig of two global-shutter cameras, each a 1024 x 1024 px greyscale image at 20 Hz. A board triggers both in hardware, so left and right frames carry one timestamp and one exposure time. In the bike sequences the rig is on a helmet worn by the rider. The published calibration puts the cameras 109.5 mm apart, where the paper gives 10.86 cm. They are nearly parallel, with 0.50 degrees of relative rotation, but their lenses are fisheye, so the pair has to be rectified first.
We used a 12 s window (158.0 to 170.0 s) of sequence bike-easy: a daytime ride at 17 to 22 km/h along campus paths, past a railing, lamp posts, trees and a building facade. The cameras look ahead, so the bicycle and the rider are out of view. It is public research footage, not ONME data.
After rectification, a feature sits on one row
Left, rectified
Right, rectified“TUM-VIE: The TUM Stereo Visual-Inertial Event Dataset, sequence bike-easy” by Simon Klenk, Jason Chui, Nikolaus Demmel and Daniel Cremers, via the TUM-VIE dataset page. CC BY 4.0. Trimmed, rectified and re-encoded by ONME. The raw view is trimmed, resized and re-encoded only. No endorsement by the dataset's creators is implied.
From shift to distance
Left, rectified
Disparity (OpenCV SGBM)facade 19.2 mlamp post 4.7 mrailing 8.0 mrailing 2.6 mFour read-outs from that frame
| Point | Disparity (px) | Depth (m) | Block search (px) |
|---|---|---|---|
| Railing, left | 29.0 | 2.64 | 28.9 |
| Lamp post | 16.4 | 4.66 | 17.0 |
| Railing, right | 9.6 | 7.96 | 9.5 |
| Building facade | 4.00 | 19.16 | 4.00 |
Depth spread on the path by distance
- Model lines: matching spread of 0.25, 0.5, 1 px, Z² · Δd / (B · f) with B = 0.10949 m and f = 700 px.
- Shaded: the matching spread measured on the surface, 0.35 to 0.7 px.
- Dots: 6 distance bins of the surface, each the measured matching spread converted to depth.
Show the numbers
| Distance (m) | Matching spread (px) | Depth spread (cm) | Points |
|---|---|---|---|
| 2.83 | 0.35 | 3.5 | 429,774 |
| 3.45 | 0.39 | 6.0 | 1,629,515 |
| 4.79 | 0.39 | 11.8 | 1,675,343 |
| 7.14 | 0.45 | 30.5 | 1,021,975 |
| 10.92 | 0.50 | 80.5 | 642,772 |
| 16.36 | 0.70 | 226.6 | 311,125 |
What the spread implies
A fixed matching spread in pixels is a larger share of a smaller disparity, so depth uncertainty grows with the square of distance. At the measured 0.50 px at 10.9 m, where the disparity is about 7 px, the standard stereo model gives a relative error of about 7 percent. At 16.4 m the disparity is about 4.7 px and the same model gives about 14 percent. One pixel of disparity is about 5 m of depth at 20 m, so beyond about 20 m depth is coarse.
For the pixels that passed the checks, the median depth was 10.2 m. Sky and smooth asphalt were the main losses.
Method
We rectified both views with the published Kannala-Brandt calibration into a virtual pinhole pair (1024 x 1024 px, f = 700 px, a 72.4 degree horizontal field). To check that the calibration still fits this sequence, we matched SIFT features on 24 frames; the first figure gives the result.
Disparity came from OpenCV StereoSGBM. A pixel kept its value only if the left-to-right and right-to-left searches agreed within 1 px, both views saw it, and the mean horizontal gradient over a 7 x 7 window was at least 4.5 grey levels; without that texture check, smooth walls are filled with values that cannot be verified.
For the spread, we fitted the path plane in disparity space by RANSAC on the part of the image below its centre, in 24 frames, and took the robust spread of the residuals, binned by the plane's depth.
Where depth is missing
Left
Right
DisparitySpeed from the pair
A stereo pair fixes metric scale, so camera motion between frames is a length. We matched stereo points to the left image 0.25 s later and solved the camera's motion with PnP and RANSAC, every 2.5 s. Over the cycling part of the ride (102.5 to 197.5 s) the median speed was 19.3 km/h, with a 10th to 90th percentile of 15.8 to 24.0 km/h, and 17 to 22 km/h in the clip. The estimate includes the head's own motion, and no speedometer or GPS checks it.
Research uses
- Dense depth from rectified pairs: the Aria Gen 2 Pilot Dataset (arXiv 2510.16134) computes depth images from the glasses' front camera pair with a stereo model, and reports errors that increase with distance and vary from frame to frame.
- Zero-shot stereo matching, a model class that estimates dense depth from rectified pairs without per-domain fine-tuning: FoundationStereo: Zero-Shot Stereo Matching (arXiv 2501.09898).
- Wearer body pose from stereo views: 3D Human Pose Perception from Egocentric Stereo Videos (arXiv 2401.00889) uses depth features from a 3D scene reconstruction module.
- Hand and object tracking: HOT3D: Hand and Object Tracking in 3D from Egocentric Multi-View Videos (arXiv 2411.19167) finds that multi-view methods significantly outperform single-view ones. Its views are several cameras on one headset, the stereo arrangement extended to more cameras.
What a recording needs
- Stereo is two cameras on one wearer with a fixed, calibrated baseline. Several wearers, whose distance to each other changes over time, are multi-egocentric video instead.
- Depth is inversely proportional to the shift between the two images: Z = B f / d for baseline B, focal length f and disparity d. Both images are taken at the same moment, so this also works for moving people and balls, and it fixes metric scale. Source: OpenCV depth map tutorial.
- On Aria Gen 2 the two front computer-vision cameras form a stereo pair with significant overlap; its single colour camera is separate. Project Aria's Gen 2 announcement reports a stereo overlap of 80 degrees, up from 35 degrees on Aria Gen 1. Source: Aria Gen 2 hardware specification.
- Calibration of the pair must be kept current: in one recording, taking off first-generation Aria glasses rotated the two cameras by about 25 arcmin, roughly 1.5 px. Source: Project Aria: A New Tool for Egocentric Multi-Modal AI Research, arXiv 2308.13561, section 4.2.
- Rectification puts matches on the same image row. Matching timestamps are not enough if the shutters fire at different times; a global shutter avoids row-by-row skew during head motion.
- Precision falls with distance, as the depth spread figure shows. Only the region seen by both cameras has depth, and plain surfaces give nothing to match. Source: TUM-VIE dataset page.
Where the format matters in sport
| Cycling | A helmet pair gives a rider's speed without a sensor on the bike; the estimate, with its median, spread and limits, is under Speed from the pair. Source: TUM-VIE dataset page. |
|---|---|
| Badminton | A shuttle is fast, so both cameras must expose at the same instant: at 89.6 m/s it moves about 4.5 m between frames at 20 fps, the rate of the ride clip analysed in this note (ONME arithmetic). A legged robot that returns shots uses a body-mounted stereo camera (arXiv 2505.22974), a robot's and not a wearer's. Source: A Correlational Analysis of Shuttlecock Speed Kinematic Determinants in the Badminton Jump Smash. |
| Bouldering | In one benchmark, off-the-shelf video methods placed climbers about 1.4 to 1.5 m off on vertical walls, and a method adding LiDAR depth to RGB reached about 0.1 m. Whether worn stereo depth gives a similar gain is untested there. Source: ClimbingCap: Multi-Modal Dataset and Method for Rock Climbing in World Coordinate, arXiv 2503.21268. |
Limits
No ground-truth depth or speed exists for this ride, so none of the figures above is an error against measured values; motion capture covers only the indoor start and end. Metric scale rests on the published calibration: the paper and the calibration file differ by 0.8 percent on the baseline, and the path plane gives a plausible camera height of 2.04 m, which is a plausibility check and not a scale measurement.
The spread is measured on an asphalt path and includes surface texture, so it bounds the matching noise from above for that surface. Frames are 8-bit JPEGs from the dataset archive, not the cameras' 12-bit output. The two sensors share one timestamp per frame, which fits hardware triggering; the start of each exposure was not independently measured.
This is one helmet rig on one daytime ride, in greyscale. It says what a calibrated pair on a head can do, not what any other camera does.
Sources
- TUM-VIE dataset page and calibration fileRead
- TUM-VIE: The TUM Stereo Visual-Inertial Event Dataset, arXiv 2108.07329Read
- OpenCV 4.13.0 tutorial: depth map from stereo imagesRead
- Aria Gen 2 Pilot Dataset, arXiv 2510.16134Read
- FoundationStereo: Zero-Shot Stereo Matching, arXiv 2501.09898Read
- 3D Human Pose Perception from Egocentric Stereo Videos, arXiv 2401.00889Read
- HOT3D: Hand and Object Tracking in 3D from Egocentric Multi-View Videos, arXiv 2411.19167Read
- Aria Gen 2 hardware specificationRead
- Aria Gen 2 announcementRead
- Project Aria: A New Tool for Egocentric Multi-Modal AI Research, arXiv 2308.13561Read
- A Correlational Analysis of Shuttlecock Speed Kinematic Determinants in the Badminton Jump SmashRead
- Learning coordinated badminton skills for legged manipulators, arXiv 2505.22974Read
- ClimbingCap: Multi-Modal Dataset and Method for Rock Climbing in World Coordinate, arXiv 2503.21268Read