ZED SDK提供两种深度感应模式:STANDARD和FILL。
该STANDARD
模式是ZED的默认深度感应模式。该STANDARD
模式保留距离度量和形状,并且比FILL
模式运行得更快,但它包含由于视觉遮挡和过滤而产生的洞。这些孔由深度图像中的黑色区域表示。将STANDARD
模式用于自主导航,障碍物检测,3D制图,人员检测和跟踪等应用。
要配置深度感知的STANDARD
方式,设置SENSING_MODE_STANDARD
在RuntimeParameters
。
// Grab depth in STANDARD mode
RuntimeParameters runtime_parameters;
runtime_parameters.sensing_mode = SENSING_MODE_STANDARD.
在STANDARD
模式下,孔(黑色像素)根据其类型具有不同的值。它们与枚举相关联:
NAN
称为OCCLUSION_VALUE。无法估计像素的深度,因为它被遮挡或异常。-INFINITY
称为TOO_CLOSE。无法估计像素的深度,因为它太靠近相机。INFINITY
称为TOO_FAR。无法估计像素的深度,因为它离相机太远。
您可以使用检查有效的深度值isValidMeasure()
。
该FILL
模式提供了一个完全密集的深度图,左图像中的每个像素(X,Y)都有一个Z值。该FILL
模式填充深度图中的孔和遮挡,并添加了一个过滤阶段,可以改善边缘和时间稳定性,但可以改变场景中对象的实际距离。
建议将此模式用于混合现实捕捉和视觉效果等应用。该FILL
模式需要更多资源,并且将以比STANDARD
模式更低的FPS 运行。
要配置深度感知的FILL
方式,设置SENSING_MODE_FILL
在RuntimeParameters
。
深度模式
一些深度模式可用来改善某些应用程序的性能:ULTRA
,QUALITY
,MEDIUM
和PERFORMANCE
。这些设置调整深度感测模块的精度,范围和计算性能水平。
- Ultra模式提供最高的深度范围,并在感应范围内更好地保留Z精度。
- 质量和中等模式在质量和速度之间提供折衷。
- 性能模式禁用某些过滤操作,并以较低的分辨率进行操作以提高性能和帧速率。
一般来说,我们建议ULTRA
在桌面和嵌入式应用程序中使用该模式。如果您的应用程序需要大量资源,请切换到PERFORMANCE
模式。
深度范围
深度范围对应于可以估计物体深度的最小和最大距离。
获取深度数据
要提取场景的深度贴图,请使用grab()
抓取新图像并retrieveMeasure()
检索左图像上对齐的深度。retrieveMeasure()
可用于检索深度图,置信度图或点云。
最小范围
使用中的depth_minimum_distance
设置可以将最小范围从默认值降低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
最大范围
使用可以增加最大范围setDepthMaxRange()
。我们建议使用ULTRA深度模式来提高远距离的深度精度。
InitParameters init_parameters;
init_parameters.depth_mode = DEPTH_MODE_ULTRA ; // Set the depth mode to ULTRA
init_parameters.coordinate_units = UNIT_METER;
zed.setDepthMaxRangeValue(40); // Set the maximum depth perception distance to 40m
提示:
- 使用可以减小最大深度范围以将钳位值限制在特定距离以上
setDepthMaxRange()
。这对于减少远距离的深度抖动很有用。 - 通过增加最小深度感知距离可以改善性能。对于需要远程深度感知的应用,我们建议设置
depth_minimum_distance
为1米或更长。