用于OAK相机深度图采集、可视化、参数调优和数据发布
oak_depth_calibration/
├── oak_align_standard_depthaiSDK.py # 利用官方SDK接口,完成参数设置
├── oak_align_standard_combine.py # 利用SDK api接口,共同完成
├── oak_align_standard_depthai.py # 利用官方api接口,在底层node完成参数设置
└── README.md # 项目说明文档
API 接口
API 接口具备强大的参数配置,支持所有参数的自定义设置,同时提供最丰富的滤波器种类选择,能够满足复杂场景下的精准处理需求。但是,由于参数存在功能关联,不同参数的配置组合容易引发冲突,导致异常。
SDK 接口说明
SDK 接口的使用简洁直观,可快速配置与部署。缺点是可配置的参数范围有限,仅支持基础调节,无法实现精细化的参数定制
同时利用SDK api接口的优化效果是最理想的,如果需要对特定的情景进行调参,直接在oak_align_standard_combine.py 的参数列表中进行修改
- ROS 2支持: 通过ROS 2节点发布深度数据
- 参数配置: 支持多种滤波和校准参数
- 硬件优化: 可配置硬件资源分配
- 多话题发布: 发布原始深度图、彩色深度图、视差图
- 轻量级实现: 简化的深度数据采集和发布
- ROS 2支持: 基础的ROS 2节点功能
发布的话题:
/camera/depth/image_raw- 原始深度图/camera/color/image_raw- 彩色图像/camera/depth/colormap- 彩色化深度图/camera/disparity- 视差图/camera/fps- 帧率信息
stereo.setConfidenceThreshold(220) # 范围: 0-255原理: 过滤低置信度的深度值
- 低值: 更严格的过滤,减少噪声但可能增加空洞
- 高值: 保留更多数据但可能包含更多噪声
stereo.setLeftRightCheck(True)原理: 验证左右视差图的一致性,过滤错误匹配
- True: 提高深度图精度,增加计算量
- False: 减少计算量,可能包含更多错误
实际在调参过程中对结果的影响很小
stereo.setExtendedDisparity(True)原理: 扩展视差范围,提高近处物体的深度精度
- True: 增加视差范围,提高近距离精度
- False: 标准视差范围 Extended Disparity是否开启,会在根本上影响参数设置的逻辑
stereo.setSubpixel(True)
stereo.setSubpixelBits(3) # 亚像素位数原理: 提供亚像素级别的视差计算,提高深度图分辨率
- 高位数: 高精度
- 低位数: 低精度
stereo.setMedianFilter(dai.MedianFilter.KERNEL_5x5)原理: 减少椒盐噪声,平滑深度图
- KERNEL_3x3: 轻微平滑
- KERNEL_5x5: 中等平滑
- KERNEL_7x7: 强平滑
stereo.config_wls(
wls_level=WLSLevel.HIGH,
wls_lambda=8000,
wls_sigma=1.5
)原理: 利用RGB图像的边缘信息优化深度图
- wls_level: 滤波强度 (LOW, MEDIUM, HIGH)
- wls_lambda: 平滑强度参数
- wls_sigma: 边缘感知参数
config.postProcessing.temporalFilter.enable = True原理: 利用时间相关性平滑深度图,减少动态噪声
config.postProcessing.speckleFilter.enable = True
config.postProcessing.speckleFilter.differenceThreshold = 2
config.postProcessing.speckleFilter.speckleRange = 50原理: 去除小的孤立区域(散斑噪声)
- differenceThreshold: 相邻像素差异阈值
- speckleRange: 散斑区域大小限制
stereo_node.setPostProcessingHardwareResources(
hardware_shaves=3,
hardware_memory_slices=2
)原理: 配置硬件资源,提升性能
- hardware_shaves: 分配的SHAVE处理器数量
- hardware_memory_slices: 分配的内存切片数量
- 降低分辨率可以提高帧率(分辨率需最先设置,否则分辨率的变化会影响滤波的效果)
- 减少滤波器的数量可以显著提高处理速度
- 启用亚像素模式提高分辨率
- 调整置信度阈值过滤噪声
- 合理配置硬件资源分配
- 降低置信度阈值
- 关闭或调整散斑滤波
- 降低相机分辨率
- 减少滤波强度
- 优化硬件资源配置
- DepthAI官方文档
作者: VAN