Depth Settings

Depth Modes #

Different depth modes are available to fit your application’s needs. These settings adjust the level of accuracy, range and computational performance of the depth sensing module.

  • PERFORMANCE (Deprecated): designed to be smooth, can miss some details.
  • QUALITY (Deprecated): has a strong filtering stage giving smooth surfaces.
  • ULTRA (Deprecated): offers the highest depth range and better preserved Z-accuracy along the sensing range for computer vision-based technique.
  • NEURAL: AI disparity estimation for a good balance between accuracy and performance.
  • NEURAL LIGHT: AI disparity estimation optimized for performance, delivering faster processing with reduced accuracy.
  • NEURAL PLUS: AI disparity estimation focused on accuracy, providing high-precision depth at the cost of slower processing.
// Set depth mode in NEURAL
InitParameters init_parameters;
init_parameters.depth_mode = DEPTH_MODE::NEURAL;
# Set depth mode in NEURAL
init_parameters = sl.InitParameters()
init_parameters.depth_mode = sl.DEPTH_MODE.NEURAL
// Set depth mode in NEURAL
InitParameters init_parameters = new InitParameters();
init_parameters.depthMode = DEPTH_MODE.NEURAL;

Depth Range #

Depth range corresponds to the minimum and maximum distance at which the depth of an object can be estimated.

ZED Mini
Focal Length3mm
Max Depth Range0.1m to 15m (0.3ft to 49ft)
Ideal Depth Range0.1m to 9m (0.3ft to 13.1ft)
ZED 2I - WideZED 2I - Narrow
Focal Length2.1mm4mm
Max Depth Range0.3m to 20m (1.0ft to 65.6ft)0.5m to 35m (1.6ft to 114.8ft)
Ideal Depth Range0.3m to 12m (1.0ft to 39.4ft)0.5 to 20m (1.6ft to 65.6ft)
ZED X - WideZED X - Narrow
Focal Length2.2mm4mm
Max Depth Range0.2m to 20m (0.7ft to 65.6ft)0.5m to 35m (1.6ft to 114.8ft)
Ideal Depth Range0.2m to 12m(0.7ft to 39.4ft)0.5m to 20m (1.6ft to 65.6ft)
ZED X Mini - WideZED X Mini - Narrow
Focal Length2.2mm4mm
Max Depth Range0.1m to 8m (0.3ft to 26.2ft)0.1m to 14m (0.3ft to 45.9ft)
Ideal Depth Range0.1m to 4.5m (03ft to 14.8ft)0.1m to 8m (0.3ft to 26.2ft)

Minimum Range #

The minimum range can be lowered from its default value using the depth_minimum_distance setting in InitParameters.

InitParameters init_parameters;
init_parameters.coordinate_units = UNIT::METERS;
init_parameters.depth_minimum_distance = 0.15 ; // Set the minimum depth perception distance to 15cm
init_params = sl.InitParameters()
init_parameters.coordinate_units = sl.UNIT.METER
init_parameters.depth_minimum_distance = 0.15 # Set the minimum depth perception distance to 15cm
InitParameters init_parameters = new InitParameters();
init_parameters.coordinateUnits = UNIT.METER;
init_parameters.depthMinimumDistance = 0.15f ; // Set the minimum depth perception distance to 15cm

Tips:

  • Lowering the minimum range to very small values can dramatically increase memory requirements and reduce FPS. Increase this value to improve performance.
  • For applications requiring long-range depth perception, we recommend setting depth_minimum_distance to 1m or more for improved performance.

Maximum Range #

The maximum range can be increased using sl::InitParameters::depth_maximum_distance.

InitParameters init_parameters;
init_parameters.depth_mode = DEPTH_MODE::NEURAL ;  // Set the depth mode to NEURAL
init_parameters.coordinate_units = UNIT::METER;
init_parameters.depth_maximum_distance = 40;      // Set the maximum depth perception distance to 40m
init_params = sl.InitParameters()
init_parameters.depth_mode = sl.DEPTH_MODE.NEURAL  # Set the depth mode to NEURAL
init_parameters.coordinate_units = UNIT.METER
init_parameters.depth_maximum_distance = 40       # Set the maximum depth perception distance to 40m
InitParameters init_parameters = new InitParameters();
init_parameters.depthMode = DEPTH_MODE.NEURAL ;    // Set the depth mode to NEURAL
init_parameters.coordinateUnits = UNIT.METER;
init_parameters.depthMaximumDistance = 40;        // Set the maximum depth perception distance to 40m

Tips:

  • The maximum depth range can be reduced to clamp values above a certain distance using sl::InitParameters::depth_maximum_distance. This is useful to reduce depth jitter at long distances.
  • Increasing the maximum range has no impact on memory or FPS.

Depth Stabilization #

Depth stabilization is a feature that temporally fuses and filters the depth map over several frames. This allows the reduction of jitter and improves depth accuracy on static objects. Depth stabilization works even when the camera is moving by using the positional tracking capability of the ZED SDK. It can also detect moving objects to avoid fusing the depth of dynamic areas.

Depth stabilization is enabled by default. Since it enables positional tracking in the background, you can disable depth stabilization using init_parameters.depth_stabilization = false to improve computational performance.

Tips: For fixed cameras, we recommend enabling PositionalTrackingParameters::set_as_static while using depth stabilization. This allows the depth stabilizer module to know the camera is static so it can disable visual tracking and reduce the computational load.

Depth Accuracy #

Stereo vision uses triangulation to estimate depth from a disparity image, with the following formula describing how depth resolution changes over the range of a stereo camera:

Dr=Z^2*alpha, where Dr is depth resolution, Z the distance and alpha a constant.

Depth accuracy decreases quadratically over the z-distance, with a stereo depth accuracy of 1% of the distance in the near range to 9% in the far range. Depth accuracy can also be affected by outliers’ measurements on homogenous and textureless surfaces such as white walls, green screens and specular areas. These surfaces usually generate temporal instability in the depth measurements.