1. ToF技术原理:从光子到深度图

大家好,我是你们的老朋友。今天咱们来聊聊ToF技术的底层原理。说实话,我刚接触ToF时也被那些调制解调、相位计算搞得一头雾水。但干这行久了你会发现,ToF的核心思想其实很朴素——就是测量光飞一趟的时间。

你想想看,光速是固定的,每秒30万公里。如果我们能精确测出光从发射到返回的时间,那距离不就出来了吗?嗯,道理很简单,但工程实现上,这里面的门道可不少。

1.1 iToF与dToF:两种测距思路

ToF技术分两大流派:iToF(间接飞行时间)dToF(直接飞行时间)。我在项目中两种都折腾过,各有各的脾气。

对比项 iToF dToF
测距原理 通过相位差间接计算 直接测量光子飞行时间
典型芯片 TI OPT系列、索尼DepthSense ST VL53L系列、苹果LiDAR
精度 毫米级(近距离) 厘米级
抗干扰 易受多路径干扰 抗环境光能力强
典型应用 人脸识别、手势交互 AR测距、扫地机避障

iToF 说白了就是「间接测量」。它不直接计时,而是发射连续调制的光波,然后检测反射光与发射光之间的相位偏移。相位差跟距离成正比,算一下就出来了。我在做手机前置3D摄像头时,用的就是iToF方案——近距离精度确实能到毫米级,但一到室外强光下就有点吃力。

dToF 就粗暴多了。它直接发射一个光脉冲,然后用高精度计时器记录光子往返的时间。你想想看,光1纳秒走30厘米,要测厘米级精度,计时精度得达到皮秒级。苹果的LiDAR用的就是SPAD阵列做dToF,我在iPad Pro上测过,5米外还能稳定出深度,确实猛。

核心结论:近距离高精度选iToF,远距离抗干扰选dToF。没有绝对的好坏,看场景。

1.2 调制解调方式:iToF的灵魂

iToF的调制方式,我习惯把它分成两类:连续波调制(CW)脉冲调制。目前主流方案是CW调制,尤其是正弦波和方波。

正弦波调制:发射的是连续正弦波信号。接收端通过四个相位采样点(0°、90°、180°、270°)来解算相位差。公式很简单:

距离 d = (c × Δφ) / (4π × f_mod)

其中:
c = 光速(3×10⁸ m/s)
Δφ = 测量到的相位差(弧度)
f_mod = 调制频率(Hz)

举个例子,调制频率100MHz,波长就是3米。如果相位差是90°,那距离就是0.75米。嗯,这里要注意——相位模糊问题。因为相位是周期性的,超过半个波长就会产生歧义。我早期做项目时就踩过这个坑,测出来的距离跳来跳去,后来加了多频调制才解决。

方波调制:用高低电平的方波信号,通过相关采样计算相位。方波的好处是驱动电路简单,但谐波分量多,精度不如正弦波。我个人习惯在低成本方案里用方波,高精度场景还是老老实实上正弦波。

我的经验:调制频率的选择是个权衡。频率越高,精度越好,但测距范围越小。100MHz下最大不模糊距离是1.5米,50MHz下是3米。选频率前先想清楚你的目标场景。

1.3 深度图与置信度图生成

好了,前面讲了原理,现在说说实际输出。ToF传感器最终会给你两样东西:深度图置信度图。这两张图是后续所有处理的基础。

深度图:每个像素存储的是距离值,单位通常是毫米。格式上,我见过8位、16位、甚至32位浮点。16位是最常见的,能表示0到65535毫米,约65米,够用了。

深度图生成流程大致如下:

  1. 采集四个相位图像(I0、I90、I180、I270)
  2. 计算相位差:Δφ = arctan((I270 - I90) / (I180 - I0))
  3. 根据调制频率换算距离
  4. 做非线性校正(每个传感器都有自己的标定参数)
  5. 输出深度图

置信度图:这个很多人会忽略,但它其实特别重要。置信度图每个像素的值表示该点深度测量的可靠程度。值越高,说明信号质量越好。

置信度通常由以下几个因素决定:

  • 接收光强:反射光越强,置信度越高
  • 信噪比:信号与噪声的比值
  • 调制对比度:反映调制信号的清晰度
  • 一致性检查:多帧之间的稳定性

避坑指南:我曾经在项目里直接用原始深度图做重建,结果边缘全是飞点。后来才发现,那些飞点的置信度值极低。从那以后,我养成了一个习惯——任何深度处理前,先用置信度图做掩膜。置信度低于阈值的点直接扔掉,效果立竿见影。

实际应用中,我一般这样用置信度图:

# 伪代码示例
depth_img = load_depth("frame_001.depth")
confidence_img = load_confidence("frame_001.conf")

# 设置置信度阈值
threshold = 0.7
mask = confidence_img > threshold

# 只保留高置信度的深度点
filtered_depth = depth_img * mask

嗯,就是这么简单。但效果真的立竿见影。

1.4 知识体系总览

为了让大家有个整体认识,我画了张图,把ToF技术原理的核心脉络梳理了一下:

ToF技术原理知识体系 ToF测距原理 iToF 间接飞行时间 dToF 直接飞行时间 连续波调制(CW) 脉冲调制 SPAD单光子探测 TDC时间数字转换 调制解调方式 深度图与置信度图 正弦波调制 方波调制 相位解算 置信度评估 输出:深度图 + 置信度图 → 三维重建

这张图把ToF技术原理的核心脉络串起来了。从iToF和dToF两大分支出发,到调制解调方式,再到最终的深度图和置信度图输出。你跟着这个框架走,就不会迷失方向。

我的建议:初学者先别急着调参。先把iToF和dToF的区别搞清楚,再理解调制解调的原理。等你真正动手处理深度图时,你会发现置信度图才是那个「救命的家伙」。

好了,这一章的内容就到这里。ToF的原理说复杂也复杂,说简单也简单——无非就是测光飞的时间。但工程实现上,每一个环节都有坑。我在后面几章会继续分享实际项目中的踩坑经验,咱们一步步来。


公众号:蓝海资料掘金营,微信deep3321