DEPTH INFRASTRUCTURE FOR ROBOTICS

Better depth.
From robot data
to robot action.

Calibrate your stereo rig in one capture. Turn its images into depth with Leopard. Give your data collection and perception pipelines a measurable foundation in 3D.

See the evidence ↓
LEOPARD / RECORDED OUTPUTPANDA / 01
Recorded Leopard disparity of a plant, table, toy and chairs, shown in a full-spectrum depth color mapDISPARITY / COLORIZED
TWO VIEWS → DEPTH
Farther / 0 pxNearer / 87.3 px

Checked disparity · dark pixels are invalid · upper 1% clipped

OUTPUTS YOU CAN INSPECT

Disparity. Validity.
Geometry for your next step.

↗
THE GEOMETRY CHAIN
Synchronized images→Camera calibration→Leopard depth→Learning & perception

WHY GEOMETRY MATTERS

FOR TEAMS BUILDING PHYSICAL INTELLIGENCE

A robot needs more
than another image.

For systems that learn or act in 3D, where something is matters as much as what it is. Camera geometry connects images to metric space—and depth makes that geometry available to the rest of your stack.

COLLECT & LEARN

Give demonstrations
a spatial foundation.

Preserve calibrated stereo observations alongside robot data. Reconstruct depth and point clouds for 3D learning workflows, with camera parameters that make the geometry interpretable.

DROID includes calibration in its robot-data collection workflow. 3D Diffusion Policy uses point-cloud representations for learning actions. [1] [2]

PERCEIVE & ACT

Put measured geometry
into the action pipeline.

Feed depth into spatial perception and point-cloud processing. Keep invalid measurements explicit so downstream systems can decide where to trust the geometry and where to gather more information.

Contact-GraspNet is one concrete example: it generates grasp candidates from scene point clouds and accepts depth with camera intrinsics. [3]

These research examples establish the use of calibrated 3D observations—not measured improvements in robot task success from our products. Camera-to-robot alignment and task-level validation remain part of integration.

01 / SINGLE-SHOT STEREO CALIBRATION

START WITH THE GEOMETRY
LEFT + RIGHTONE SYNCHRONIZED CAPTURE
1shot
CAMERA PARAMETERS + RECTIFICATION MAPS

One capture.
A calibrated
starting point.

Recover stereo camera geometry from a single synchronized capture in a controlled calibration setup. Generate the parameters and rectification maps your depth pipeline needs—without collecting a sequence of calibration poses.

  • Before data collectionEstablish geometry for depth reconstruction and 3D observations.
  • When the stereo rig changesMake stereo calibration a repeatable setup step.
  • Before depth processingAlign left and right images for stereo correspondence.
12supplied calibration
cases validated
0.10–0.33 pxrange of per-case mean
held-out vertical misalignment

One shot means one left/right image pair with the required calibration setup. Validation spans 7 unique held-out stereo pairs; alignment error is not absolute depth accuracy. This workflow does not replace hand–eye calibration. [4]

02 / LEOPARD STEREO DEPTH

YOUR CAMERAS. YOUR COMPUTE. YOUR DEPTH.

Your stereo camera
doesn’t output depth?
Leopard can.

Turn synchronized, rectified stereo images into disparity on your host processor. Use calibrated camera geometry to recover metric depth. No onboard depth processor or pretrained neural network is required.

Image-based stereo depth is an established robotics architecture. Leopard offers a configurable implementation for that stage of your system. [5]

RECORDED SAMPLE
Leopard disparity before brightness normalization, with gaps on the tabletop
Leopard disparity after local brightness normalization, with more accepted tabletop measurements
BEFORE
AFTER CORRECTION
‹ ›
01 / RUN ON YOUR PLATFORM

C++ CPU · Metal · CUDA

Choose an implementation for your host. Measure latency on the processor and camera resolution you intend to ship.

02 / CONTROL THE TRADEOFF

Speed, rejection & coverage

Select full or faster consistency checking. Keep brightness normalization and hole filling as explicit options.

03 / OWN THE INTEGRATION

License the source

Inspect the implementation, tune it to your scenes, and keep measured depth separate from inferred completion.

THE COMPARISON CUSTOMERS SHOULD SEE

SAME MACHINE · SAME INPUTS

A measured alternative
to OpenCV SGBM.

Compare both OpenCV modes, not just one baseline. Leopard’s advantage depends on the workload, thread budget and consistency check. Explore the actual CPU measurements below.

APPLE M3 PRO / OPENCV 4.13.0

21 warm measurements per method, three shuffled rounds. Fast check uses weaker consistency filtering. Capture, rectification and display excluded. Desktop apps remained active.

“Default” means MODE_SGBM; all other OpenCV parameters are matched to 3WAY. *1440p is upsampled for timing, not native-resolution accuracy evidence. Resolution and disparity range change together. Equal thread budgets do not imply equal core utilization.

Speed is only half the comparison.See accuracy & coverage +

27 real captures, with independent depth reference

Disparity error and usable coverage on the native-resolution evaluation set
MethodMAE ↓pixelsRMSE ↓pixelsValid coverage ↑Valid & within 1 px ↑of all evaluated GT pixels
Leopard FP32 full0.4021.02285.0%80.0%
Leopard FP32 fast0.4551.35687.3%81.0%
OpenCV SGBM default0.5021.46998.3%90.3%
OpenCV SGBM-3WAY0.4351.33097.8%91.1%

Leopard full checking has lower error on the pixels it accepts. Both SGBM modes return more valid pixels and a higher overall correct-pixel yield. These are different acceptance masks—not proof of overall accuracy superiority.

Skoltech3D: three object scenes × three views × three lighting conditions, RealSense D435 IR pairs with an independent scanner reference. Selected GT surfaces span about 0.63–0.88 m. No normalization or hole filling in this CPU comparison. This is not a RealSense factory-spec test or a 4 m benchmark. Dataset ↗

ALSO MEASURED / APPLE METAL67.8 FPS

Matching with GPU brightness normalization at 1248 × 688.
Separate 27-capture experiment; not the CPU/SGBM comparison.

FROM CAMERA OUTPUT TO YOUR ROBOT STACK

A FOCUSED INTEGRATION

Keep your cameras.
Take control of depth.

For robot-learning teams, integrators and stereo-camera makers: evaluate a software depth stage you can inspect and adapt to your application.

01 / YOU BRING

A stereo pair

Synchronized left/right images with overlapping views, a known baseline and suitable calibration. Existing rectified grayscale streams can go directly to Leopard.

02 / WE PROVIDE

Geometry & matching

Evaluate single-shot calibration, Leopard, or both. Choose a compute backend and tune the speed–coverage tradeoff on your scenes.

03 / YOU CONNECT

Your application

Use disparity and validity outputs, then calibrated geometry for metric depth and point clouds. Connect these to your data or perception pipeline.

Evaluate lens distortion, synchronization, exposure, texture, working distance and latency together. Robot-frame transforms, ROS adapters and downstream task validation are integration work, not included performance claims.

THE EVIDENCE BEHIND THE VALUE

PRIMARY SOURCES, CLEAR BOUNDARIES

Why calibrated depth
belongs in the conversation.

[1]

Calibration is part of robot data operations.

DROID’s collection software flags missing or old camera calibrations, helping operators catch moved cameras. Its camera-to-robot calibration is a separate layer from our stereo calibration.

DROID documentation ↗
[2]

3D observations can support policy learning.

3D Diffusion Policy (RSS 2024) learns actions using sparse point-cloud representations. This motivates a depth data pipeline; it does not establish a training gain from Leopard.

Research project ↗
[3]

Depth connects to manipulation geometry.

NVIDIA’s Contact-GraspNet implementation accepts metric depth with camera intrinsics, or point clouds, to generate 6-DoF grasp candidates.

Official implementation ↗
[4]

Camera geometry affects depth quality.

RealSense’s calibration guidance describes how changes to calibration can degrade depth performance and how recalibration can restore it. Our one-shot workflow requires its own validation on each camera setup.

Technical white paper ↗
[5]

Onboard depth is not a prerequisite.

ROS stereo processing uses rectified images and camera metadata to produce disparity and point clouds on the host. Leopard addresses the stereo-matching stage of that architecture.

ROS pipeline reference ↗

Research references describe industry workflows and published methods. They are not customer endorsements or tested integrations. Our performance claims come from our own documented benchmarks.

START WITH YOUR CAMERA. MEASURE WHAT MATTERS.

Bring your stereo rig.
Let’s evaluate the depth.

Tell us what you collect, what your robot needs to see, and where the code will run. We’ll scope an evaluation around your images, accuracy requirements and latency budget.

LEOPARD / MEASUREMENTS

The numbers,
with context.

CPU comparison · 6 November 2026

Apple M3 Pro; OpenCV 4.13.0; Leopard C++ FP32. Same input pairs and thread budgets. Three shuffled rounds of seven warm frames per method. Includes per-frame preparation, matching, rejection and float disparity output. Excludes construction, compilation, decoding, resizing, camera capture, rectification and display. Desktop apps remained active.

OpenCV default MODE_SGBM and SGBM-3WAY share blockSize=5, P1/P2=200/800, uniquenessRatio=10, preFilterCap=31, disp12MaxDiff=1 and no speckle filtering. The disparity range is shown for each resolution. “Default” refers to mode, not factory settings for every parameter.

Leopard fast uses a cheaper projected consistency check, not an independent reverse solve. At one thread and 720p, Leopard full/fast achieved 4.02/7.62 FPS; default SGBM/3WAY achieved 7.38/10.16 FPS. Much of the twelve-thread advantage over default SGBM depends on parallel execution.

Separate Metal experiment

27 recorded captures at 1248 × 688; 15 alternating-order warm repetitions per capture. Summary is the median of per-capture processing rates, including host preparation, transfer, matching and synchronization. CPU normalization + Metal matching: 42.8 FPS. Metal normalization + matching: 67.8 FPS. With optional filling: 62.8 FPS. No capture, rectification or display. These figures are not directly comparable to the CPU test.

Bright tabletop example

frame0408, 640 × 480, fixed ROI x=55:155 and y=125:180; search cap 256 pixels. Same 0–40 pixel display range, with larger values clipped. Dark areas are invalid. Valid coverage rises from 54.7% to 97.9% with normalization, without hole filling. No ground-truth depth is available. Added coverage can include outliers.

Origins and scope

Leopard is our independent implementation and engineering extension of SOS: Stereo Matching in O(1) with Slanted Support Windows (Tankovich et al., IROS 2018). It is not Google’s source code. No robot task-success or training-efficiency result is claimed here.

Original SOS paper ↗
SINGLE-SHOT / VALIDATION

One capture.
Defined conditions.

The Python implementation calibrates a stereo pair from one synchronized left/right capture in the required controlled setup. A single arbitrary scene photograph is not sufficient. Conventional and fisheye lens models are supported.

What was measured

12 supplied calibration cases were rerun. Across those cases, mean absolute vertical misalignment on held-out correspondences ranged from 0.099 to 0.333 pixels. There are 7 unique held-out stereo pairs; repeated evaluation images do not count as independent scenes.

These are rectified-image alignment measurements—not millimeter depth-accuracy guarantees. Some wide-camera edge errors exceed 2 pixels. Production acceptance should examine the whole field of view and the intended depth range.

Where this fits in robotics

The workflow estimates stereo camera parameters and produces rectification maps. Mapping camera coordinates into a robot’s coordinates requires a separate camera-to-robot or hand–eye calibration. Data synchronization and downstream task performance also need validation.

YOUR NEXT STEP

Start with
your application.

Tell us what you are building. We will store your inquiry so Stanford Robotics can follow up with you.

Your details are used to respond to your inquiry. To ask about or request deletion of your information, email leo.pang@gmail.com.

Prefer email? leo.pang@gmail.com ↗