Depth from sensor(深度传感器)
RGB-D相机同时采集彩色图像和逐像素深度图像。直接从硬件获取深度从根本上改变了SLAM问题:不存在需要解决的尺度模糊性,也不需要在地图变得有用之前通过视差三角化点,并且从第一帧开始就可以进行稠密重建。2010-2011年左右廉价消费级深度相机(微软Kinect)的出现让这一领域迅速发展,并催生了以KinectFusion为代表的实时体素融合系统热潮。
两种传感原理(外加一种混合方案)
存在两种主流的传感原理:
- 结构光(Structured light):传感器向场景投射已知的红外点阵图案,并用红外相机观测其形变;深度由投影器与相机之间的三角测量得出。Kinect v1(测距范围约0.8-4米)和Orbbec Astra采用这种方式。
- 主动红外飞行时间(Active IR Time-of-Flight,ToF):传感器发射经调制的红外光,并逐像素测量返回信号的传播时间(相移)。Kinect v2和Azure Kinect使用ToF,通常比结构光具有更好的精度和分辨率。
第三种相关的设计是主动红外立体视觉(active IR stereo)(例如Intel RealSense D400系列):在传统立体相机对的基础上辅以投射的红外纹理,因此它在无纹理表面上也能工作,同时在阳光下能优雅地退化为被动立体视觉。
| 结构光 | 主动红外ToF | |
|---|---|---|
| 原理 | 图案三角测量 | 逐像素传播时间 |
| 典型量程 | 约0.5-4米 | 最高约4-5米 |
| 典型传感器 | Kinect v1、Orbbec Astra | Kinect v2、Azure Kinect |
| 弱点 | 阳光、图案干扰 | 多路反射、阳光 |
深度误差的行为特征
对于任何基于三角测量的传感器(结构光、主动或被动立体视觉),焦距为、基线为、视差为时,深度为。求导后可以看出为何这类传感器在远距离时表现不佳:视差误差产生的深度误差随距离平方增长,
一台在1米处精度达毫米级的传感器,在4米处可能偏差达数厘米。ToF传感器的退化方式不同——其随机噪声随距离增长得更平缓——但它们会受到特有的系统性误差影响:多路干扰(multi-path interference)(发出的光在返回前从两个表面反射,使角落和凹陷区域产生偏差)以及飞散像素(flying pixels)(跨越深度不连续处的虚假深度值)。这正是RGB-D SLAM系统按距离对测量值加权、截断远处读数并过滤深度边缘的原因。
常见设备
- 微软Kinect v1(2010年):结构光,测距范围0.8-4米;开创了消费级RGB-D的先河,并催生了KinectFusion研究热潮。
- 微软Kinect v2(2013年):ToF;精度更高,测距范围可达4.5米,分辨率更高。
- Azure Kinect DK(2019年):100万像素ToF深度、宽视场RGB相机、内置IMU;面向AI/边缘应用。
- Intel RealSense D系列(D415/D435/D455):基于立体视觉的主动红外;紧凑且由USB供电,是机器人和无人机研究中的常见选择。
- Occipital Structure Core:适合移动设备的主动红外传感器,采用宽基线立体视觉。
- Orbbec Astra / Astra Pro:价格亲民的结构光传感器;在基于ROS的研究中很受欢迎。
权衡及其细则
获得免费的度量尺度所付出的代价是一系列硬性的物理限制。测距范围较短(仅几米),因此这类传感器属于室内设备。强烈的红外环境光(阳光)会淹没发射的信号。深色、吸光、透明或高光材质返回的信号很弱或已损坏,导致深度图像出现空洞。深度噪声也随距离增长——对基于三角测量的传感器而言大致呈平方增长——这就是RGB-D SLAM系统对远处测量值加权或截断的原因。
常见陷阱
- 深度相机和彩色相机是不同的相机:深度成像器和RGB成像器位于不同位置,具有不同的内参;若没有精确的外参标定(以及时间同步),彩色点云会在深度边缘处出现颜色”渗色”,而光度+几何方法(例如DVO、ElasticFusion)会在不知不觉中性能下降。
- 无效像素是常态,不是异常:每一帧真实的深度图像都会因吸光、高光或透明材质以及投影器的遮挡阴影而出现空洞(零值/NaN深度)。跟踪和融合代码必须将缺失深度作为一等情形处理,而不是当作错误。
- 检查深度单位和缩放因子:原始深度通常以毫米为单位的16位整数形式给出,而数据集存储深度PNG时会使用特定于该数据集的缩放因子。错误的缩放因子会产生一个尺寸微妙(或严重)错误的地图,而其他一切看起来都正常工作。
- 多个传感器会相互干扰:两台观测同一表面的结构光相机会破坏彼此的点阵图案;多相机系统需要干扰抑制手段(时间复用,或ToF频率分离)。
- 快速运动会直接破坏深度图像本身:运动模糊和类似卷帘快门的伪影会在跟踪算法看到深度之前就已破坏它——无论多稳健的估计方法都无法修正一个在采集时就已出错的测量值。
对SLAM的意义
RGB-D SLAM中的每一个设计决策都源自传感器本身:逐像素的度量深度使得使用ICP和体素TSDF或面元(surfel)融合进行稠密的frame-to-model跟踪成为可能,而传感器的噪声模型、量程限制和材质失效模式决定了这些系统会在何处失效。了解你的深度来自结构光、ToF还是主动立体视觉,能告诉你该系统能在哪些环境中生存——也解释了为什么RGB-D SLAM是一种室内技术,而室外系统则依赖立体视觉或LiDAR。
相关条目
- Camera device —— 相机传感器类型概览
- KinectFusion —— 消费级深度相机促成的系统
- Disparity vs Depth —— 由被动立体三角测量获得深度
- Scale ambiguity —— 深度传感器消除的单目问题
- Frame-to-model tracking —— 稠密SLAM如何处理深度数据流
- ICP —— 由这些测量值驱动的配准算法