2、结构光原理基础:结构光编码方式(散斑、条纹、格雷码)、三角测量原理、深度计算流程
结构光模组的选型与硬件搭配,其底层逻辑必须建立在对结构光原理的透彻理解之上。无论是消费级3D人脸识别、工业视觉引导,还是医疗口腔扫描,其核心都是通过主动投射已知图案,并分析被物体表面调制后的图像畸变,来恢复三维几何信息。本章将深入拆解三种主流编码方式(散斑、条纹、格雷码)的物理本质与适用场景,推导三角测量的几何模型,并梳理从原始图像到深度点云的完整计算链路。只有掌握了这些底层机制,工程师才能在模组选型时准确判断分辨率、基线距离、投射功率等关键参数的合理性,避免“参数好看但实际点云质量差”的工程陷阱。
上图展示了结构光深度计算的核心链路:投射器发出编码图案,经物体表面调制后由IR相机采集,最终通过三角测量模型解算深度。需要特别强调的是,编码方式的选择直接决定了链路中“对应点匹配”的算法复杂度与鲁棒性。散斑编码依赖空间随机性进行块匹配,条纹编码通过相位信息实现亚像素精度,而格雷码则利用时间序列的二值化图案逐像素解码。三种方式在硬件实现、计算开销与抗环境光能力上存在显著差异,这也是选型时的重要权衡维度。
2.1 三种主流编码方式:原理、特性与选型逻辑
2.1.1 散斑编码(Speckle Encoding)
核心原理:散斑结构光通过衍射光学元件(DOE)将VCSEL激光器发出的相干光分裂为数千个随机分布的亮点,形成具有高空间唯一性的“指纹”图案。当该图案投射到物体表面时,由于物体深度不同,散斑点在IR图像中的位置会发生局部偏移。深度计算的核心是块匹配相关算法:将采集图像中的每个小窗口(如7×7像素)与参考平面上的散斑图进行归一化互相关(NCC)或差和(SAD)匹配,找到最佳匹配位置后,利用视差计算深度。
| 特性维度 | 散斑编码 | 条纹编码(相移法) | 格雷码编码 |
|---|---|---|---|
| 编码维度 | 空间(单帧) | 时间+空间(多帧) | 时间(多帧) |
| 典型分辨率 | 中低(受窗口大小限制) | 高(亚像素相位) | 中(像素级) |
| 运动敏感性 | 低(单帧可解算) | 高(需多帧静止) | 高(需多帧静止) |
| 环境光鲁棒性 | 中(需带通滤光片) | 低(易受环境光干扰) | 中(二值化阈值敏感) |
| 硬件成本 | 低(单VCSEL+DOE) | 高(需高帧率投射器) | 中(需时序控制) |
| 典型应用 | 消费级人脸识别、RGB-D相机 | 工业高精度测量、逆向工程 | 静态场景三维重建 |
工程判断方法:在选型时,若目标应用是动态场景(如人脸解锁、手势识别),散斑编码是唯一可行方案,因为其单帧即可完成深度解算。但需注意,散斑点的密度与DOE的衍射效率直接相关,密度过低会导致匹配歧义,过高则增加计算量。对于静态高精度测量(如精密零件尺寸检测),条纹编码的相位解包裹算法能提供微米级精度,但要求物体在投射多帧条纹期间保持静止。格雷码则常用于需要深度信息的场景,其逐像素解码特性避免了散斑的窗口平滑效应。
2.1.2 条纹编码与格雷码的互补性
条纹编码(通常采用三步或四步相移法)通过投射不同相位的正弦光栅,利用反正切函数计算包裹相位,再通过时间相位展开获得相位。其优势在于亚像素精度,但存在两个工程难点:一是相位解包裹在深度不连续处容易产生“跳变”错误;二是对物体表面反射率变化敏感。格雷码编码则通过投射一系列黑白相间的二进制图案(如10-12幅),将投射空间划分为2^N个编码区域,每个像素获得唯一的二进制码字。格雷码的优点是定位,不存在累积误差,但分辨率受限于像素尺寸。
实战中的混合策略:工业级结构光系统常采用格雷码+相移的混合编码:先投射格雷码图案确定每个像素的周期序号,再投射相移条纹在周期内进行亚像素插值。这种方案既获得了深度信息,又实现了高精度,但需要投射15-20帧图案,仅适用于静态场景。在硬件选型时,若采用此方案,投射器必须支持高速图案切换(通常需要DLP或高频LCD),且IR相机需具备全局快门以同步采集。
2.2 三角测量原理:从几何模型到深度公式
三角测量是结构光深度计算的核心几何基础。其基本模型为:激光投射器与IR相机之间具有固定的基线距离B,投射器向物体表面投射光线,相机从另一角度观察物体表面的光斑或图案。当物体深度变化时,光斑在相机成像平面上的位置发生横向位移,该位移称为视差d。深度Z与视差d呈反比关系,具体公式为:
Z = (f × B) / (d + δ)
其中,f为相机焦距(像素单位),B为投射器与相机光心之间的水平距离,δ为由于投射器与相机光轴不完全平行引入的偏移修正量。在实际系统中,投射器与相机通常并非严格平行放置,而是存在一个会聚角,因此δ需要通过标定获得。
深度计算流程(以散斑为例):
- 图像采集:IR相机同步采集投射散斑图案的物体图像,同时采集一张不含散斑的环境光图像(用于背景减除)。
- 预处理:对采集图像进行去噪、对比度增强,并通过带通滤光片减少环境光影响。
- 块匹配:将图像划分为N×N像素的参考块,在参考散斑图中搜索最佳匹配位置,计算视差d。
- 深度映射:利用标定参数(f、B、δ)将视差图转换为深度图,公式为Z = f·B/(d+δ)。
- 后处理:对深度图进行空洞填充、双边滤波平滑,并去除离群点。
| 流程步骤 | 输入数据 | 关键参数/操作 | 输出 | 常见问题 |
|---|---|---|---|---|
| 1. 图像采集 | IR图像序列 | 曝光时间、增益、同步信号 | 原始灰度图 | 运动模糊、过曝 |
| 2. 预处理 | 原始灰度图 | 高斯滤波、背景减除 | 增强图像 | 噪声残留 |
| 3. 块匹配 | 增强图像+参考图 | 窗口大小、搜索范围、相似度阈值 | 视差图 | 匹配歧义、遮挡 |
| 4. 深度映射 | 视差图 | 标定参数f、B、δ | 深度图 | 标定误差放大 |
| 5. 后处理 | 深度图 | 中值滤波、空洞填充 | 优化深度图 | 边缘过度平滑 |
2.3 深度计算流程的工程实现与标定要点
完整的深度计算流程不仅包含算法,还涉及硬件触发同步、标定参数精度和温度漂移补偿。在硬件搭配上,投射器与IR相机的触发同步是首要问题。对于散斑方案,通常采用单帧触发模式,即投射器常亮或与相机曝光同步脉冲;对于条纹/格雷码方案,投射器需按帧切换图案,相机必须在每个图案切换后立即曝光,这要求主控(如FPGA或MCU)提供精确的时序控制信号。
标定流程清单:
- 内参标定:使用棋盘格标定IR相机焦距、主点、畸变系数(径向+切向)。
- 外参标定:确定投射器光心与相机光心的相对位置关系(旋转矩阵R和平移向量T),其中基线B = |T|。
- 视差-深度映射标定:在多个已知距离(如0.2m、0.4m、0.6m、0.8m、1.0m)放置平面靶标,采集散斑图并计算视差,拟合Z与d的关系曲线,修正δ。
- 温度补偿:记录不同温度下的视差偏移量,建立温度补偿查找表。
总结复盘:结构光模组的选型与硬件搭配,本质上是编码方式、三角测量几何、深度计算流程三者之间的协同优化。散斑编码适合动态、低成本场景,但需接受其有限的分辨率;条纹/格雷码适合静态高精度场景,但需解决多帧同步与运动伪影问题。在硬件层面,基线B、焦距f、传感器尺寸和投射功率共同决定了深度测量范围与精度。建议工程师在选型初期,先明确目标应用的最大测量距离、最小深度分辨率和允许的帧率,再反向推导所需的基线长度、传感器分辨率和投射器功率,最后通过实际标定验证系统性能。下一阶段,我们将进一步探讨投射器与IR相机的具体选型参数及其对深度质量的影响。