StereoDepth
如何放置
Python
Python
1pipeline = dai.Pipeline()
2stereo = pipeline.create(dai.node.StereoDepth)输入和输出
debugDispLrCheckIt1、debugDispLrCheckIt2、debugExtDispLrCheckIt1、debugExtDispLrCheckIt2、debugDispCostDump 和 置信度图。StereoDepth 节点内部框图

当前可配置模块
- 立体模式:
- 左右校验:
- 左右校验(LR-Check)用于移除因物体边界遮挡(左右相机视图略有不同)导致的错误视差像素。
- 通过 R->L 方向匹配计算视差。
- 通过 L->R 方向匹配计算视差。
- 结合步骤 1 和 2 的结果,在 Shave 上运行:每个像素 d = disparity_LR(x,y) 与 disparity_RL(x-d,y) 比较。如果差值超过阈值,则最终视差图中 (x,y) 处的像素失效。
- 您可以使用
debugDispLrCheckIt1和debugDispLrCheckIt2调试输出进行调试/微调。
- 左右校验(LR-Check)用于移除因物体边界遮挡(左右相机视图略有不同)导致的错误视差像素。
- 扩展视差:
- 扩展视差模式允许检测给定基线下的更近距离物体。这会将最大视差搜索范围从 96 增加到 191,即范围为 [0..190]。
- 在原始尺寸图像(例如 1280x720)上计算视差。
- 在 2 倍下采样图像(例如 640x360)上计算视差。
- 在 Shave 上结合两级视差,有效覆盖总计 191 像素的视差范围(相对于原始分辨率)。
- 您可以使用
debugExtDispLrCheckIt1和debugExtDispLrCheckIt2调试输出进行调试/微调。
- 扩展视差模式允许检测给定基线下的更近距离物体。这会将最大视差搜索范围从 96 增加到 191,即范围为 [0..190]。
- 亚像素视差:
- 亚像素模式提高了精度,在远距离测量中尤其有用。它还有助于更好地估计表面法线。
- 在此模式下,立体相机执行:94 个深度步长 * 8 个亚像素深度步长 + 2(最小/最大值)= 754 个深度步长。
- 如需比较正常视差与亚像素视差图像,请单击此处。
- 左右校验:
- 深度滤波器:
- 深度滤波 / 深度后处理 在深度管线的末尾执行,有助于降噪并提升整体深度质量。
- 网格文件:
- 网格文件(单应性矩阵)通过相机内参、畸变系数和矫正旋转矩阵生成。这些文件有助于克服相机畸变,提高准确性,并在使用广角镜头时发挥作用。
- 目前,网格文件仅在标定过程中在主机上为立体相机生成。生成的网格文件存储在 depthai/resources 中,用户可以将其加载到设备上。这一过程将在未来的版本中迁移至设备端完成。
- 置信度阈值:
- 置信度阈值:立体深度算法在右摄像头图像中搜索与左图像匹配的特征(沿 96 个视差级别)。过程中,它会计算每个视差级别的代价,并选择两个视差之间的最小代价,进而计算每个像素的置信度。仅当深度置信度低于置信度阈值时,Stereo 节点才会输出视差/深度像素(置信度值越低,深度精度越高)。
- LR 检查阈值:当 LR 和 RL 视差之间的差异小于 LR 检查阈值时,视差才会被纳入输出。
局限性
- 当子像素模式设置为 4 或 5 位时,中值滤波禁用。
- 要实现 RGB-深度对齐,RGB 摄像头必须与立体摄像头对处于同一水平线上。
- 使用视差偏移时,RGB-深度对齐无法工作。
运行时更改相机标定
device.setCalibration() 方法更改,适用于因环境因素导致设备立体质量随时间下降的场景。 相同的数据可通过 device.getCalibration() 获取。深度预设
深度预设
| 特性 | 默认 | 人脸 | 高细节 | 机器人 |
|---|---|---|---|---|
| 基础配置文件 | HIGH_DENSITY | HIGH_DENSITY | HIGH_ACCURACY | HIGH_DENSITY |
| 中值滤波 | 7x7 核 | 关闭 | 关闭 | 7x7 核 |
| 子像素精度 | 3 位 | 5 位 | 5 位 | 3 位 |
| 扩展视差 | 否 | 是 | 是 | 否 |
| 范围 | 0-15 米 | 3 厘米-3 米 | 0-15 米 | 0-10 米 |
| 时间滤波 | 启用 | 启用 | 启用 | 禁用 |
| 用例 | 通用 | 人脸跟踪、生物识别 | 3D 扫描、物体细节 | 导航、障碍物检测 |
- 左右一致性检查
- 2 倍降采样(像素跳跃)
- 斑点滤波(范围:200,阈值:2)
- 3 个用于后处理的硬件资源
立体深度帧率
| 处理 \ 分辨率 | 400P [ms] | 720P [ms] | 800P [ms] |
|---|---|---|---|
| 校正 | 1.5 | 5 | 6 |
| 广视场角校正 | 2.5 | 8 | 9 |
- LR:左右检查(
stereo.setLeftRightCheck())。需要执行 2 次立体匹配操作(L→R 和 R→L 方向),然后合并结果。 - Ext:扩展视差模式(
stereo.setExtendedDisparity())。需要执行 2 次立体匹配操作(原始和降采样),然后合并结果。 - Sub:子像素匹配(
stereo.setSubpixel())。每个像素需要 96 字节的代价图(每个视差级别一个字节),因此对于 800P 帧,约 98MB 的数据需要传输到 CMX 内存(供 SHAVEs 使用)进行子像素计算。此 情况下的瓶颈是内存带宽(~4.1GB/秒)。子像素位数不影响延迟。
| 处理过程 \ 分辨率 | 400P [毫秒] | 720P [毫秒] | 800P [毫秒] |
|---|---|---|---|
| 无LR, 无Ext, 无Sub | 3.4 | 7.4 | 8.1 |
| 无LR, 无Ext, Sub | 6.2 | 21.7 | 23.9 |
| 无LR, Ext, 无Sub | 8.5 | 21.5 | 23.5 |
| 无LR, Ext, Sub | 11 | 32.7 | 36.7 |
| LR, 无Ext, 无Sub | 7.4 | 18 | 19.8 |
| LR, 无Ext, Sub | 10.1 | 27.6 | 30.5 |
| LR, Ext, 无Sub | 16.7 | 43.7 | 48.3 |
| LR, Ext, Sub | 20.4 | 56 | 62 |
3x3、5x5、7x7)不影响延迟:| 处理过程 \ 分辨率 | 400P [毫秒] | 720P [毫秒] | 800P [毫秒] |
|---|---|---|---|
中值滤波(3x3 / 5x5 / 7x7) | 0.8 | 1.8 | 1.8 |
使用方法
Python
Python
1pipeline = dai.Pipeline()
2stereo = pipeline.create(dai.node.StereoDepth)
3
4# 更好地处理遮挡:
5stereo.setLeftRightCheck(False)
6# 更近的最小深度,视差范围翻倍:
7stereo.setExtendedDisparity(False)
8# 远距离精度更高,分数视差32级:
9stereo.setSubpixel(False)
10
11# 预先定义并配置MonoCamera节点
12left.out.link(stereo.left)
13right.out.link(stereo.right)功能示例
- 深度预览
- RGB深度对齐 - 将深度图与彩色摄像头对齐(RGB-D)
- 立体深度后处理滤波器