3、核心成像原理(中):结构光与ToF

好,咱们接着聊深度相机的核心成像原理。上一节讲了双目立体视觉,这一节我重点说说结构光和ToF。这两个技术,我在项目里踩过的坑可真不少,今天一并倒出来给你。

一、结构光原理:散斑与编码光

结构光,说白了就是“主动投射已知图案,然后通过图案变形来算深度”。你想想看,如果场景里没有纹理,双目就抓瞎了。结构光就是自己打光上去,创造纹理。

1. 散斑结构光

散斑结构光,最典型的代表就是初代Kinect。它投射的是随机分布的激光散斑点,像星空一样。每个局部区域的散斑图案都是唯一的,相当于给场景打上了“指纹”。

工作原理:

  • 激光器通过衍射光学元件(DOE),把单点激光变成成千上万个随机散斑点
  • 红外相机拍摄这些散斑在物体表面的变形图案
  • 与预先存储的参考平面散斑图做块匹配,计算视差
  • 视差转深度,原理和双目类似,但基线是“投影仪-相机”

关键点:散斑结构光依赖参考图。出厂前需要在已知距离的平面上标定一张参考散斑图。如果温度变化导致激光器波长漂移,散斑图案会轻微变化,深度精度就会下降。

我记得有一次做机器人避障项目,白天用得好好的,到了晚上温度降了10度,深度图突然出现大面积的“空洞”。排查了半天,发现是激光器温漂导致散斑图案变了,和出厂参考图对不上了。后来我们加了主动加热恒温,才解决这个问题。

2. 编码结构光

编码结构光,投射的不是随机散斑,而是有规律的空间编码图案。比如格雷码、相移条纹、或者De Bruijn序列。

常见编码方式:

编码类型 投射方式 优点 缺点
格雷码 多帧黑白条纹 鲁棒性好,抗干扰强 需要多帧,不适合动态场景
相移条纹 多帧正弦条纹 亚像素精度,分辨率高 对运动敏感,需要解包裹
混合编码 格雷码+相移 兼顾鲁棒性和精度 算法复杂,计算量大

编码结构光的优势在于:每个像素的编码是确定的,不像散斑那样依赖统计匹配。所以精度更高,尤其适合高精度3D扫描。

我的经验:如果你做的是静态物体扫描(比如人脸建模、文物数字化),编码结构光是首选。但如果是动态场景(比如手势识别、机器人导航),散斑结构光或者ToF更合适。别拿编码光去做实时应用,帧率跟不上。

二、ToF(飞行时间法)原理

ToF的原理更直接:发射光脉冲,测量光往返的时间,直接算出距离。公式很简单:距离 = 光速 × 飞行时间 / 2

但实际实现上,ToF分两大流派:iToF和dToF。这两者差别很大,选型时一定要搞清楚。

1. iToF(间接飞行时间法)

iToF不直接测量时间,而是测量发射光和接收光之间的相位差。通过调制连续波(通常是正弦波或方波),用四个相位采样(0°、90°、180°、270°)来解算相位偏移,再换算成距离。

iToF的关键参数:

  • 调制频率:决定了不模糊距离范围。比如20MHz调制,不模糊距离是7.5米。频率越高,精度越高,但测量范围越短。
  • 解相位算法:四个相位采样后,通过反正切函数算出相位差。公式:φ = atan2(Q, I),其中I和Q是同相和正交分量。
  • 多频调制:为了扩大测量范围,iToF通常用两个或多个频率调制,然后通过差频解算绝对距离。

避坑指南:我曾经在一个项目中,iToF相机在强光下深度数据全是噪声。原因是环境光中的红外成分干扰了相位测量。后来加了带通滤光片,并且提高了调制光功率,才勉强能用。记住:iToF对环境光非常敏感,室内用还行,室外强光下基本废掉。

2. dToF(直接飞行时间法)

dToF就简单粗暴了:直接发射一个短脉冲(皮秒级),用单光子雪崩二极管(SPAD)阵列记录每个光子到达的时间。每个像素就是一个“计时器”。

dToF的核心组件:

  • SPAD像素:工作在盖革模式,一个光子就能触发雪崩,灵敏度极高
  • TDC(时间数字转换器):记录光子到达的精确时间,分辨率通常在几十皮秒
  • 直方图累加:多次测量后,统计光子到达时间的直方图,峰值对应真实距离

dToF的优势很明显:

  • 抗环境光能力强(因为只接收与发射脉冲同步的光子)
  • 测量范围远(可达几十米甚至上百米)
  • 多路径干扰小(直方图可以区分一次反射和多次反射)

但dToF也有短板:SPAD阵列分辨率做不高(目前主流是QVGA),而且每个像素需要TDC,芯片面积大、成本高。

选型建议:如果你做手机人脸识别、AR/VR手势交互,iToF够用,成本低。如果你做车载激光雷达、扫地机导航、或者远距离测距,dToF是唯一选择。我去年帮客户选型做AGV避障,一开始选了iToF,结果在仓库里被货架反光干扰得不行,最后换成了dToF才搞定。

三、结构光 vs ToF:怎么选?

我整理了一个对比表,方便你快速决策:

维度 结构光(散斑) 结构光(编码) iToF dToF
测量范围 0.3-5米 0.1-3米 0.1-10米 0.1-100米+
精度 毫米级 亚毫米级 厘米级 厘米级
抗环境光
动态场景
分辨率 高(可达1080p) 中(VGA~720p) 低(QVGA)
成本
典型应用 人脸识别、体感 3D扫描、检测 手势、AR/VR 车载、机器人

嗯,这里要注意:没有完美的技术,只有合适的场景。我见过太多人拿着结构光去做户外导航,或者拿着dToF去做高精度扫描,结果都不理想。选型前,先把你的应用场景、工作距离、环境光照、精度要求列清楚,再对照这张表选。

四、核心逻辑框架图

下面我用一张SVG图,把结构光和ToF的核心逻辑串起来,方便你理解整个知识体系:

深度相机核心成像原理(中) 结构光(主动投射图案) ToF(飞行时间法) 散斑结构光 编码结构光 iToF(间接) dToF(直接) 随机散斑投射 块匹配计算视差 依赖参考图 受温漂影响大 格雷码/相移条纹 多帧投射 亚像素精度 不适合动态场景 连续波调制 相位差测距 对环境光敏感 多频扩展范围 短脉冲+SPAD 直接计时 抗环境光强 分辨率受限 选型核心:场景决定技术,没有万能方案 室内人脸识别 高精度3D扫描 AR/VR手势 车载/机器人 散斑结构光 编码结构光 iToF dToF

这张图把结构光和ToF的脉络理清楚了。你从顶部往下看,先选大类,再看子类,最后对应到应用场景。我建议你把这个图打印出来贴在工位上,选型时扫一眼就心里有数。

最后说一句:理论归理论,真正落地时,你还会遇到很多实际问题——标定精度、温度补偿、多机干扰、运动模糊...这些我在后面的章节会逐一展开。今天先把原理吃透,后面实战才不会慌。


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