3、光学系统设计:发射端与接收端的光学博弈

光学系统设计,说白了就是给ToF相机配一副好「眼镜」。发射端要看得准,接收端要听得清。我做了这么多年产品,发现很多团队在算法上花了大功夫,结果光学设计没做好,整机性能直接拉胯。今天咱们就聊聊这块硬骨头。

3.1 发射端光学设计

发射端的核心任务就一个:把激光器的光均匀地投射到目标场景上。这里有两个关键元件——Diffuser和DOE。

3.1.1 Diffuser(扩散片)

Diffuser的作用是把激光器的点光源变成均匀的面光源。我个人习惯用全息扩散片,它的衍射效率高,能到85%以上。普通磨砂扩散片虽然便宜,但光效损失大,而且容易出现中心亮斑。

经验之谈: 我在项目里遇到过Diffuser选型不当导致FOV(视场角)不达标的情况。后来发现,扩散角度和激光器的发散角要匹配。比如VCSEL激光器发散角通常为20°-30°,那Diffuser的扩散角最好选在60°-90°之间。

3.1.2 DOE(衍射光学元件)

DOE是发射端的灵魂。它把单束激光复制成多束,形成点阵或线阵。这里有个关键参数——衍射效率。我建议至少做到80%以上,否则能量浪费严重。

DOE设计时要注意几个坑:

  • 零级衍射抑制: 零级光太强会直接干扰接收端。我习惯用二元光学设计,把零级效率压到1%以下。
  • 均匀性: 点阵中每个点的光强差异要控制在±10%以内。我曾经用遗传算法优化过相位分布,效果不错。
  • 温度稳定性: 激光器发热会导致波长漂移,DOE的衍射角会跟着变。建议用低热膨胀系数的材料,比如熔融石英。
// 一个简单的DOE相位分布计算示例(伪代码)
function calculateDOEPhase(targetPattern) {
    // 使用GS算法迭代优化
    let phase = randomPhase();
    for (let i = 0; i < 100; i++) {
        let field = FFT(amplitude * exp(i * phase));
        phase = angle(IFFT(targetPattern * exp(i * angle(field))));
    }
    return phase;
}

3.2 接收端光学设计

接收端要解决的核心问题是:在强环境光下准确捕捉反射回来的激光信号。这里有两个关键元件——窄带滤光片和微透镜阵列。

3.2.1 窄带滤光片

窄带滤光片的作用是只让激光波长通过,滤掉其他环境光。我建议带宽控制在10nm以内,中心波长要和激光器匹配。比如940nm的激光器,滤光片中心波长就选940nm±2nm。

注意: 滤光片的入射角会影响中心波长偏移。我曾经在项目里没注意这个,结果大角度入射时信号衰减严重。后来加了角度补偿设计才解决。

滤光片的关键指标:

参数 典型值 注意事项
中心波长 940nm 与激光器匹配
带宽(FWHM) 10nm 太宽会引入环境光噪声
峰值透过率 >90% 越高越好
截止深度 OD4以上 抑制带外光

3.2.2 微透镜阵列

微透镜阵列(MLA)的作用是把每个像素上的光汇聚到感光区域。说白了就是提高填充因子。我见过很多方案用单一大透镜,结果边缘视场光效差。MLA能很好地解决这个问题。

设计MLA时要注意:

  • 透镜间距: 要和像素间距匹配,通常1:1对应。
  • 曲率半径: 决定了聚焦效果。我习惯用Zemax优化,目标是把光斑控制在像素感光区内的90%以上。
  • 材料选择: 硅基或玻璃基。硅基成本低,但红外透过率差;玻璃基性能好,但贵。

3.3 光学串扰抑制

光学串扰是ToF相机的老大难问题。简单说就是发射端的光直接或间接地进入接收端,造成深度测量误差。

串扰的来源主要有三个:

  1. 内部反射: 光在镜头内部多次反射后进入传感器。
  2. 盖板玻璃反射: 发射端和接收端共用盖板时,光在玻璃表面反射。
  3. 散射: 空气中的颗粒或镜头表面的灰尘造成光散射。

我常用的抑制方法:

  • 物理隔离: 在发射端和接收端之间加遮光泡棉。厚度至少2mm,材质选黑色硅胶。
  • 镀增透膜: 所有光学表面镀宽带增透膜,反射率降到0.5%以下。
  • 结构设计: 发射端和接收端的光轴夹角控制在5°-10°,减少直接反射路径。
避坑指南: 我曾经在一个项目里忽略了盖板玻璃的反射,结果近距离(10cm以内)测量误差达到5cm。后来在盖板玻璃上做了磨砂处理,并在发射端加了遮光罩,问题才解决。

3.4 杂散光分析

杂散光分析是光学设计的最后一道防线。说白了就是找出所有不该进入传感器的光,然后想办法干掉它们。

分析流程我一般这么走:

  1. 建立光学模型: 在LightTools或TracePro里建好完整的光路模型。
  2. 追迹光线: 设置100万条光线,追踪所有可能的路径。
  3. 识别杂散光路径: 找出非设计路径的光线,比如经过两次反射才进入传感器的。
  4. 优化设计: 加挡光结构、调整表面粗糙度、优化镀膜。

杂散光的典型表现:

  • 鬼影: 图像上出现虚假的亮斑或条纹。
  • 对比度下降: 深度图整体模糊,边缘不清晰。
  • 测量偏差: 特定距离下深度值跳变。
小技巧: 我习惯在镜头内部加环形挡光片(baffle),位置选在镜片之间的光阑处。挡光片的内径要刚好让设计光线通过,外径尽量大。这样能有效抑制大角度杂散光。

嗯,光学设计这块内容确实不少。但说白了,核心就是让发射端的光精准投射,接收端的光干净接收。中间那些串扰和杂散光,都是要一个个拔掉的钉子。我做了这么多项目,最大的体会就是:光学设计不能靠理论推演,一定要搭实验平台验证。有时候仿真结果完美,实际一测就露馅。

ToF深度相机光学系统设计框架 发射端光学设计 Diffuser DOE 均匀性 > 90% 衍射效率 > 80% 零级抑制 < 1% 接收端光学设计 窄带滤光片 微透镜阵列 带宽 < 10nm 透过率 > 90% 填充因子 > 90% 光学串扰抑制 物理隔离 | 增透膜 | 光轴夹角5°-10° | 遮光泡棉 杂散光分析 光线追迹 | 鬼影抑制 | 挡光结构 | 表面粗糙度优化

最后说一句,光学设计没有银弹。每个项目都要根据实际场景做取舍。比如室内场景可以放宽对滤光片的要求,但户外强光下就必须用窄带宽的。我建议新手从简单的方案开始,先跑通一个demo,再逐步优化。别一上来就想搞个完美的设计,那往往是最慢的路。