2、ToF相机基础:ToF测距原理(连续波调制、脉冲调制)、深度图数据格式、深度精度与误差模型
ToF(Time-of-Flight,飞行时间)相机的核心思想是测量光信号从发射器出发、经目标物体反射后回到图像传感器的时间差,从而直接获得场景的深度信息。与结构光或双目视觉不同,ToF不依赖纹理特征或三角测量,而是基于光速与时间差的物理关系,因此具有实时性强、算法简单、低光照适应性好等优势。本章将系统梳理ToF的两大主流调制方式——连续波调制(CW-ToF)与脉冲调制(Pulsed-ToF),深入解析深度图的数据格式与存储约定,并重点讨论深度精度的理论极限与工程误差模型,为后续滤波与增强算法提供物理依据。
上图展示了ToF深度数据从发射、调制、反射、接收到深度计算的完整链路。可以看到,无论是连续波还是脉冲调制,最终都需要通过像素内的光电转换与电荷解调来获取携带深度信息的信号分量。深度图的质量不仅取决于调制方式,还受到传感器噪声、环境光、物体反射率以及运动状态的综合影响。下面我们逐一展开。
2.1 连续波调制(CW-ToF)测距原理
核心原理:连续波调制ToF并不直接测量光子的飞行时间,而是通过测量发射信号与接收信号之间的相位差来间接计算距离。系统通常使用高频正弦波或方波对光源(VCSEL)进行强度调制,调制频率一般在10MHz~100MHz之间。光信号经目标反射后,传感器像素中的解调单元(通常为两个或四个光门)在特定相位窗口内累积电荷,从而得到与相位差相关的采样值。
以四相位采样为例(0°、90°、180°、270°),设四个相位对应的强度测量值为C0、C1、C2、C3,则接收信号的幅度A和相位偏移φ可由以下公式计算:
I = C0 - C2
Q = C1 - C3
A = sqrt(I² + Q²) / 2
φ = atan2(Q, I) // 弧度
深度d与相位差φ的关系为:
d = (c / 4πf) × φ
其中c为光速(约3×10⁸ m/s),f为调制频率。由于相位差具有2π周期性,CW-ToF存在距离模糊问题,最大无模糊距离为d_max = c / (2f)。例如,20MHz调制频率对应的最大无模糊距离约为7.5m。
| 调制频率 | 最大无模糊距离 | 典型应用场景 |
|---|---|---|
| 10 MHz | 15 m | 大范围工业测量 |
| 20 MHz | 7.5 m | 室内机器人导航 |
| 30 MHz | 5 m | 消费级手势识别 |
| 60 MHz | 2.5 m | 近距离高精度扫描 |
判断方法:在实际工程中,选择调制频率需要在最大量程与深度精度之间权衡。频率越高,相位差对距离变化越敏感,精度越高,但无模糊距离越短。若需要扩展量程,可采用双频或多频调制方案,通过不同频率的相位差组合来解算距离。
2.2 脉冲调制(Pulsed-ToF)测距原理
核心原理:脉冲调制ToF直接测量光脉冲从发射到接收的时间差。系统发射极窄的光脉冲(通常为几纳秒到几十纳秒),传感器像素中的高速快门在精确的时间窗口内开启,记录返回光子的数量。通过在不同延迟时间窗口内累积光子,可以重建出光脉冲的飞行时间分布,从而确定距离。
脉冲调制通常采用直接ToF(d-ToF)或间接ToF(i-ToF)两种实现方式。d-ToF使用单光子雪崩二极管(SPAD)和时间数字转换器(TDC)直接记录每个光子的到达时间,精度可达厘米级甚至毫米级;i-ToF则通过多个时间窗口的电荷比例来推算飞行时间,实现成本较低但精度略逊。
对于i-ToF脉冲调制,设两个时间窗口的电荷累积量分别为Q1和Q2,脉冲宽度为T_p,则飞行时间t可估算为:
t = T_p × Q2 / (Q1 + Q2)
深度d = c × t / 2。脉冲调制不受相位模糊限制,理论上可以测量更远的距离,但需要更高精度的时钟同步和更快的快门控制。
操作流程:脉冲调制ToF的典型工作流程包括:① 发射短脉冲;② 传感器在多个延迟窗口内采样;③ 计算各窗口光子计数比例;④ 根据比例估算飞行时间;⑤ 输出深度值。由于脉冲调制对时间分辨率要求极高,通常需要专用的像素设计和高速读出电路。
2.3 深度图数据格式与存储约定
核心原理:深度图是ToF相机输出的核心数据产品,其格式直接影响后续算法的读取效率和精度处理方式。不同厂商的ToF相机(如英飞凌、索尼、ADI、TI等)在数据格式上存在差异,但主流约定如下:
- 像素位深:常见为16位无符号整数(uint16),单位通常为毫米(mm)或百分之一毫米(0.01mm)。部分工业级相机支持32位浮点(float32),单位为米(m)。
- 无效像素标记:通常使用0x0000或0xFFFF表示无效深度值(如超出量程、低置信度、饱和区域)。
- 坐标系:深度图与RGB图对齐时,需要额外的内参矩阵和畸变系数;深度图本身通常以相机光心为原点,Z轴指向场景前方。
- 伴随数据:多数ToF相机同时输出幅值图(amplitude/confidence map)和噪声估计图,用于后续滤波的权重分配。
| 数据字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
| 深度值 | uint16 / float32 | mm / m | 主深度信息 |
| 幅值 | uint16 | LSB | 接收光强度,反映置信度 |
| 噪声估计 | float32 | mm | 基于光子噪声模型 |
| 标志位 | uint8 | - | 饱和、低置信度、运动模糊等 |
判断方法:在读取深度图时,务必先确认数据字节序(大端/小端)和无效值约定。例如,某相机将深度值0xFFFF定义为无效,而另一相机可能使用0x0000。错误的无效值处理会导致滤波算法将无效像素当作有效值参与计算,产生严重的边缘伪影。
2.4 深度精度与误差模型
核心原理:ToF深度精度受多种物理因素制约,主要误差源包括:
- 散粒噪声(Shot Noise):光子到达的随机性导致测量误差,与接收光强度的平方根成反比。深度标准差σ_d ≈ (c / (4πf·√N)),其中N为累积光子数。
- 多径干扰(Multipath):光线在场景中多次反射后进入传感器,导致深度值被拉近或拉远。在墙角、凹面物体附近尤为明显。
- 运动模糊:物体在积分时间内移动,导致相位或飞行时间分布被展宽,深度边缘出现拖影。
- 温度漂移:VCSEL波长和传感器响应随温度变化,引起系统性深度偏移。
- 非线性误差:像素解调效率的非理想特性导致深度与真实距离呈非线性关系,通常需要标定补偿。
误差模型公式:综合误差可建模为:
σ_total² = σ_shot² + σ_multipath² + σ_motion² + σ_temp² + σ_nonlinear²
其中σ_shot是基础极限,其他误差项可通过算法和标定来抑制。例如,多径干扰可通过频域分离或深度置信度加权来缓解;运动模糊可通过缩短积分时间或运动补偿算法来改善。
案例拆解:某工业检测项目使用20MHz CW-ToF相机测量金属工件表面深度,目标精度为±1mm。实测发现,在工件边缘区域深度误差达到±3mm。分析过程如下:
- 初始现象:边缘区域幅值下降至中心区域的40%,深度噪声明显增大。
- 关键数据:中心区域幅值约1800 LSB,边缘区域约720 LSB;散粒噪声模型预测σ_shot分别为0.8mm和1.9mm。
- 分析判断:边缘区域还存在多径干扰——工件侧面反射的光线叠加到主反射路径上,导致深度被拉近。
- 实际操作:① 在算法中引入幅值阈值(低于800 LSB的像素标记为低置信度);② 对低置信度像素采用邻域中值滤波;③ 对多径区域使用双频调制数据(增加一个60MHz频率)进行相位解缠。
- 结果对比:处理后边缘区域误差降至±1.2mm,满足检测要求。代价是帧率从30fps降至25fps,且需要额外的标定步骤。
- 复盘经验:ToF精度优化不能只依赖滤波,必须结合硬件参数(调制频率、积分时间)和场景特性(反射率、几何结构)综合设计。