要查看精度测量结果,请参阅 深度精度。
如何放置
Python
Python
1pipeline = dai.Pipeline()
2stereo = pipeline.create(dai.node.StereoDepth)输入和输出
调试输出:
用法
Python
Python
1pipeline = dai.Pipeline()
2stereo = pipeline.create(dai.node.StereoDepth)
3
4# 设置配置文件预设为 ROBOTICS
5stereo.setDefaultProfilePreset(dai.node.StereoDepth.PresetMode.ROBOTICS)
6# 更好地处理遮挡:
7stereo.setLeftRightCheck(True)
8# 更近的最小深度,视差范围加倍:
9stereo.setExtendedDisparity(True)
10# 更远的距离精度更高,小数视差 32 级:
11stereo.setSubpixel(True)
12
13# 提前定义并配置 MonoCamera 节点
14left.out.link(stereo.left)
15right.out.link(stereo.right)功能示例
- 立体深度 - 可视化立体摄像头的立体深度。
- 立体深度重映射 - 将立体深度 <frame> 的几何图形重新映射到彩色帧。
- 主机立体深度 - 使用主机预校正的立 体图像在设备上运行立体视差。
- 立体深度滤波器 - 对立体深度输出应用各种滤波器。
- 立体深度校准更新 - 动态更新立体校准参数。
深度对齐
Python
1pipeline = dai.Pipeline()
2stereo = pipeline.create(dai.node.StereoDepth)
3 # alignment to RECTIFIED_LEFT or RECTIFIED_RIGHT
4stereo.setDepthAlign(dai.StereoDepthConfig.AlgorithmControl.DepthAlign.RECTIFIED_LEFT)Python
1align = pipeline.create(dai.node.ImageAlign)
2stereo.depth.link(align.input)
3rgbOut.link(align.inputAlignTo) # Align depth to RGB
4align.outputAligned.link(sync.inputs["depth_aligned"])配置摄像头以实现高 FPS
Python
1with dai.Pipeline(device) as pipeline:
2 stereo = pipeline.create(dai.node.StereoDepth)
3 mono_left = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_B)
4 mono_right = pipeline.create(dai.node.Camera).build(dai.CameraBoardSocket.CAM_C)
5
6 def configure_cam(cam, size_x: int, size_y: int, fps: float):
7 cap = dai.ImgFrameCapability()
8 cap.size.fixed((size_x, size_y))
9 cap.fps.fixed(fps)
10 return cam.requestOutput(cap, True)
11
12 # Configure MonoCameras for 60 FPS at 640x400
13 mono_left_out = configure_cam(mono_left, 640, 400, 60)
14 mono_right_out = configure_cam(mono_right, 640, 400, 60)在运行时更改摄像头校准
device.setCalibration() 方法更改校准,并且可以与 动态校准 结合使用,以防设备立体质量随时间因环境因素而下降。 可以使用 device.getCalibration() 获取相同的数据。特定平台配置
RVC4
StereoDepth 节点内部框图

深度预设
| 立体深度预设 | 用途 | FPS @800P | FPS @400P | 输出分辨率 | 运动模糊 | 范围(米) |
|---|---|---|---|---|---|---|
| 快速精确 | 通用 | 60 | 60 | 输入分辨率 | 否 | 0–65 |
| 快速稠密 | 通用 | 36 | 60 | 输入分辨率 | 否 | 0–65 |
这些速度将在未来版本的 DepthAI 中提高 — 快速稠密最高可达 72 FPS,快速精确最高可达 120 FPS。
深度配置
扩展视差
- 在原始尺寸图像(例如 1280x800)上计算视差。
- 在 2 倍下采样图像(例如 640x400)上计算视差。
- 合并两个级别的视差。
用法:
Python
1stereo.setExtendedDisparity(True)亚像素视差
LR 检查
用法:
Python
1stereo.initialConfig.algorithmControl.enableSwLeftRightCheck = True
2stereo.initialConfig.algorithmControl.leftRightCheckThreshold = 10 # 设置阈值软件置信度
- 有限过滤:50-100
- 中度过滤:200
- 重度过滤:>200(高度场景特定)
用法:
Python
1stereo.initialConfig.costMatching.enableSwConfidenceThresholding = True
2stereo.initialConfig.costMatching.confidenceThreshold = 200 # 根据所需的过滤级别进行调整置信度指标(遮挡、运动矢量、平坦度)
- 遮挡置信度权重
- 基本执行 LR 检查。比较从左到右和从右到左搜索所产生的视差差异(前向/后向运动矢量一致性)。
- 运动矢量 (MV) 置信度权重
- MV 方差计算每个像素周围局部边缘感知窗口中的方差;给定一个约束以确保同一对象内的深度平滑且一致。
- MV 置信度阈值:MV 方差的阈值偏移量。有效范围 [0,3]。值为 0 允许最大方差。
- 平坦度置信度权重
- 平坦度考虑输入图像纹理,并屏蔽掉纹理相似度过高的低纹理区域。可以通过平坦度阈值调整所需的最小纹理量。
- 平坦度阈值:用于平坦区域检查的阈值。值越高,像素根据 census 特征比较被检测为平坦区域的可能性越大。用于缺乏足够匹配特征的低纹理区域。
- 平坦度覆盖:如果像素被检测为平坦,则将置信度设置为零。
用法:
Python
1# 置信度指标权重(RVC4 必须加起来等于 32)
2stereo.initialConfig.confidenceMetrics.occlusionConfidenceWeight = 12
3stereo.initialConfig.confidenceMetrics.motionVectorConfidenceWeight = 10
4stereo.initialConfig.confidenceMetrics.flatnessConfidenceWeight = 10
5
6# 阈值
7stereo.initialConfig.confidenceMetrics.motionVectorConfidenceThreshold = 1 # 有效范围 [0,3]
8stereo.initialConfig.confidenceMetrics.flatnessConfidenceThreshold = 5
9stereo.initialConfig.confidenceMetrics.flatnessOverride = True # 如果是平坦的,则将置信度设置为零