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 Length | 3mm |
Max Depth Range | 0.1m to 15m (0.3ft to 49ft) |
Ideal Depth Range | 0.1m to 9m (0.3ft to 13.1ft) |
ZED 2I - Wide | ZED 2I - Narrow | |
---|---|---|
Focal Length | 2.1mm | 4mm |
Max Depth Range | 0.3m to 20m (1.0ft to 65.6ft) | 0.5m to 35m (1.6ft to 114.8ft) |
Ideal Depth Range | 0.3m to 12m (1.0ft to 39.4ft) | 0.5 to 20m (1.6ft to 65.6ft) |
ZED X - Wide | ZED X - Narrow | |
---|---|---|
Focal Length | 2.2mm | 4mm |
Max Depth Range | 0.2m to 20m (0.7ft to 65.6ft) | 0.5m to 35m (1.6ft to 114.8ft) |
Ideal Depth Range | 0.2m to 12m(0.7ft to 39.4ft) | 0.5m to 20m (1.6ft to 65.6ft) |
ZED X Mini - Wide | ZED X Mini - Narrow | |
---|---|---|
Focal Length | 2.2mm | 4mm |
Max Depth Range | 0.1m to 8m (0.3ft to 26.2ft) | 0.1m to 14m (0.3ft to 45.9ft) |
Ideal Depth Range | 0.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.