RealSense SDK 核心功能与关键配置项
三、核心功能与关键配置项
SDK 的功能可以按"取流、处理、参数控制"三层来梳理。
| 功能 | API 或参数 | 说明 |
|---|---|---|
| 启动数据流 | rs2::pipeline::start(config) | 用 config 指定要开启的流与格式 |
| 同步取帧 | wait_for_frames() | 阻塞等待一组时间对齐的帧 |
| 取深度帧 | frameset.get_depth_frame() | 返回深度帧对象 |
| 查询距离 | depth_frame.get_distance(x, y) | 直接返回以米为单位的距离 |
| 深度对齐彩色 | rs2::align(RS2_STREAM_COLOR) | 把深度重投影到彩色视角 |
| 点云生成 | rs2::pointcloud | 把深度图转成三维点云 |
| 去孔洞滤波 | hole-filling filter | 填补深度图中的空洞 |
| 时域滤波 | temporal filter | 跨帧平均以降噪,快速运动时会产生拖影 |
| 空间滤波 | spatial filter | 在空间邻域内平滑深度 |
| 阈值滤波 | threshold filter | 裁掉超出有效范围的深度 |
| 预设切换 | visual preset | 切换设备内置参数集 |
| 高级模式 | Advanced Mode + JSON | 加载或保存完整参数集,便于批量复制配置 |
关键配置项与选型建议如下。深度分辨率与帧率是一对矛盾:高分辨率高帧率会显著增加 USB 带宽与主机 CPU 负载,通常的做法是按下游算法的实际需求选择,够用即可。深度单位必须从设备读取,代码里写死一个常数是最常见的错误来源之一。激光投射器功率可以调整,近距离小物体扫描时可以调低,避免过曝导致深度失效;远距离或弱纹理场景需要调高。自动曝光在光照变化剧烈的场景中建议关闭并固定曝光值,避免深度图亮度随环境波动导致一致性下降。
后处理滤波链的顺序也有讲究。一般建议的顺序是:先做阈值滤波裁掉无效范围,再做空间滤波平滑,接着做时域滤波降噪,最后做去孔洞填补。如果把时域滤波放在最前面,快速运动时的拖影会污染后续所有处理。而时域滤波的权重参数需要根据帧率与运动速度调整,帧率高时可以适当加大历史权重。

