第二章:结构光系统核心组件

结构光系统,说白了就是一套「光与相机」的精密配合。我做了这么多年3D视觉,见过太多系统出问题,最后发现都是某个组件没选对。今天咱们就把投影系统、相机系统、标定板和同步触发这四块,一个一个拆开讲清楚。

2.1 投影系统:DLP、LCoS、LCD

投影系统是结构光的「光源大脑」。它负责把编码好的条纹图案投射到物体表面。三种主流技术,各有各的脾气。

2.1.1 DLP(数字光处理)

DLP 是目前结构光领域的主流选择。它的核心是一块 DMD 芯片,上面密密麻麻排布着微镜阵列。每个微镜都能独立翻转,实现高速开关。

我个人习惯用 DLP,原因很简单:

  • 速度极快:微秒级切换,轻松实现 1000fps 以上的投影速率。我在做高速动态物体扫描时,DLP 是唯一能跟上的方案。
  • 对比度高:黑白分明,条纹边缘锐利。这对相位解包裹非常有利。
  • 分辨率灵活:从 VGA 到 4K 都有成熟产品。

避坑指南:我曾经在项目中选了一款低端 DLP,结果发现它的微镜翻转角度一致性差,导致投影条纹出现「鬼影」。后来换了 TI 的 DLP4500 系列,问题才解决。选 DLP 时,一定要看微镜的翻转角度公差。

2.1.2 LCoS(硅基液晶)

LCoS 是另一种反射式投影技术。它的像素间距可以做得非常小,所以分辨率上限很高。

  • 优点:填充因子高(>90%),画面细腻无网格感。适合需要高分辨率条纹的场景。
  • 缺点:响应速度比 DLP 慢,通常在毫秒级。而且液晶有温度漂移问题,需要做补偿。

嗯,这里要注意:LCoS 的偏振特性会限制某些编码方案。如果你用相移法,LCoS 的偏振态变化可能会引入相位误差。

2.1.3 LCD(液晶显示)

LCD 是最便宜的方案,但也是性能最差的。它的液晶分子响应慢,刷新率通常只有 60Hz 左右。

我建议只在实验室验证阶段用 LCD。真正做产品时,LCD 的拖影和低对比度会让你抓狂。你想想看,一个条纹边缘模糊的投影,怎么保证亚像素级的匹配精度?

参数 DLP LCoS LCD
响应速度 微秒级 毫秒级 10ms+
对比度 高(>1000:1) 中(500:1) 低(200:1)
分辨率上限 4K 8K+ 4K
成本
适用场景 高速/高精度 高分辨率静态 实验室验证

2.2 相机系统:CMOS vs CCD

相机是结构光的「眼睛」。选错相机,投影再好也白搭。

2.2.1 CMOS(互补金属氧化物半导体)

CMOS 传感器是目前的主流。它的每个像素都集成放大器,读出速度快,功耗低。

  • 全局快门:这是结构光的关键要求。CMOS 的全局快门可以同时曝光所有像素,避免运动模糊。我做过一个抓取流水线零件的项目,用的就是全局快门 CMOS,效果很好。
  • 高帧率:轻松实现 100fps 以上,配合 DLP 的高速投影,可以实现实时 3D 重建。
  • 噪声问题:CMOS 的固定模式噪声(FPN)比 CCD 高。但现代 CMOS 通过片上校正,已经可以接受。

我的经验:选 CMOS 时,一定要看它的「动态范围」。结构光场景中,物体表面反射率差异很大(比如黑色塑料和白色金属)。动态范围不够,高光区域会过曝,暗区会欠曝,条纹信息就丢了。我一般要求动态范围 > 60dB。

2.2.2 CCD(电荷耦合器件)

CCD 是传统方案,现在用得少了。它的优点是噪声极低,图像均匀性好。

  • 缺点:读出速度慢,帧率低。而且 CCD 通常只有卷帘快门,不适合动态场景。
  • 适用场景:静态物体的超高精度测量。比如文物扫描、精密零件检测。

说实话,除非你追求极致的信噪比,否则我建议优先选 CMOS。CCD 的卷帘快门在结构光中是个大坑——条纹移动时,卷帘快门会导致图像畸变。

2.3 标定板

标定板是结构光系统的「尺子」。没有它,你的 3D 数据就是一堆乱码。

2.3.1 标定板类型

  • 棋盘格:最经典。角点检测简单,鲁棒性好。我习惯用 12x9 的棋盘格,每个格子 20mm。
  • 圆点阵:圆心定位精度比角点高,适合高精度标定。但圆点阵对透视畸变敏感,需要小心。
  • 编码标定板:每个特征点有唯一编码,可以自动识别。适合多视角系统。

2.3.2 标定板材质

材质会影响标定精度。我踩过坑:

  • 陶瓷基板:热膨胀系数小,精度高。但贵。
  • 玻璃基板:平整度好,但易碎。
  • 亚克力板:便宜,但热变形严重。我曾经在夏天用亚克力板标定,结果温度一高,标定板弯了,标定结果全废。

重要提醒:标定板必须保持平整。我见过有人用手压着标定板拍照,结果标定出来的内参全是错的。标定板要固定在刚性支架上,最好用真空吸附或磁吸。

2.4 同步触发机制

同步触发是结构光系统的「心跳」。投影和相机必须严格同步,否则条纹和图像对不上。

2.4.1 硬件触发

这是最可靠的方式。用 FPGA 或单片机产生触发信号,同时发给投影仪和相机。

// 伪代码示例:FPGA 同步触发逻辑
always @(posedge clk) begin
  if (frame_start) begin
    projector_trigger <= 1;  // 触发投影切换条纹
    #10;                     // 等待投影稳定
    camera_trigger <= 1;     // 触发相机曝光
    #5;
    camera_trigger <= 0;
    #5;
    projector_trigger <= 0;
  end
end

我建议用硬件触发,延迟可以控制在纳秒级。软件触发(比如通过 USB 发送指令)的延迟不稳定,容易丢帧。

2.4.2 软件触发

如果硬件条件有限,也可以用软件触发。但要注意:

  • 操作系统调度会导致延迟抖动(通常 1-10ms)
  • 需要做时间戳对齐
  • 不适合高速场景(>30fps)

2.4.3 同步策略

常见的同步策略有两种:

  • 投影先触发,相机后触发:等投影条纹稳定后再曝光。适合 DLP 这种快速切换的投影。
  • 相机先触发,投影后触发:适合 LCD 这种慢速投影,可以避免拖影。

我个人习惯用第一种。DLP 的微秒级切换,几乎不需要等待。但如果你用 LCD,记得在投影切换后加 10ms 的延迟,等液晶稳定。

2.5 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以把它当作选型时的 checklist。

结构光系统核心组件 投影系统 相机系统 标定板 同步触发 DLP / LCoS / LCD CMOS / CCD 棋盘格 / 圆点阵 硬件 / 软件触发 输出:高质量条纹图像 相位解算 → 立体匹配 → 三维重建 ⚠️ 选型要点 投影速度 > 相机帧率 | 标定板平整度 < 0.01mm | 同步延迟 < 1μs CMOS 全局快门 | DLP 微秒级切换 | 硬件触发优先

这张图里,四个组件是并列关系,缺一不可。投影和相机决定了你能拍出什么样的条纹图像,标定板决定了你能把图像转换成多精确的 3D 坐标,同步触发则保证了这一切在时间上对齐。

我的建议:刚开始做结构光系统时,先别追求高性能。用 DLP + CMOS 全局快门 + 棋盘格标定板 + 硬件触发,这套组合最稳。等跑通流程了,再根据需求升级组件。

好了,核心组件就讲到这里。下一章咱们聊聊编码策略——怎么设计条纹图案,才能让系统又快又准。


专注资料整理