时间编码之相移法:三步相移、四步相移、多频外差原理

各位同学,今天我们来聊聊结构光编码里一个非常经典的方法——相移法。说实话,我在刚入行那会儿,觉得相移法挺玄乎的,不就是几幅正弦条纹图嘛,怎么就能算出三维坐标了?后来亲手搭了一套系统,踩了不少坑,才真正理解它的精髓。

相移法属于时间编码的一种。你想想看,空间编码是一次拍一张图,时间编码则是拍多张图,利用时间维度来编码信息。好处很明显——精度高,抗干扰能力强。坏处嘛,就是被测物体得保持静止。嗯,这里要注意,如果物体在动,相移法基本就废了。

一、三步相移法

三步相移,顾名思义,就是拍三张条纹图。每张图之间的相位差是120度,也就是2π/3。为什么是三步?因为三个方程解三个未知数——背景光强、调制光强、还有我们最想要的相位。

数学上长这样:

I1(x,y) = A(x,y) + B(x,y) * cos[φ(x,y) - 2π/3]
I2(x,y) = A(x,y) + B(x,y) * cos[φ(x,y)]
I3(x,y) = A(x,y) + B(x,y) * cos[φ(x,y) + 2π/3]

解出来的相位公式是:

φ(x,y) = arctan[ √3 * (I1 - I3) / (2*I2 - I1 - I3) ]

我个人习惯用三步相移做快速标定。为什么?因为少拍一张图,速度快。但代价是什么?噪声敏感度比四步相移高。我在项目中遇到过,环境光稍微有点波动,三步相移解出来的相位就毛毛躁躁的。

小技巧:三步相移适合对速度要求高、但精度要求不那么苛刻的场景。比如在线检测,每分钟要测几百个零件,三步相移就比四步相移有优势。

二、四步相移法

四步相移,每步相差90度(π/2)。四张图,四个方程,解三个未知数——这是个超定方程组,有冗余。冗余意味着什么?意味着更鲁棒。

四步相移的条纹图:

I1 = A + B * cos(φ - 3π/4)
I2 = A + B * cos(φ - π/4)
I3 = A + B * cos(φ + π/4)
I4 = A + B * cos(φ + 3π/4)

相位解算公式:

φ(x,y) = arctan[ (I4 - I2) / (I1 - I3) ]

你看,这个公式比三步相移的漂亮多了。没有√3,没有系数,计算量也小。而且四步相移对二阶非线性误差有天然的抑制能力。我曾经做过对比实验,同样的投影仪和相机,四步相移的相位均方根误差比三步相移低了差不多30%。

避坑指南:我曾经犯过一个低级错误——投影仪的gamma非线性没校正,直接上四步相移。结果解出来的相位有周期性波纹,怎么调都消不掉。后来才意识到,相移法对投影仪的线性度要求很高。所以,做相移法之前,一定要先做gamma校正。

三、多频外差原理

好,现在问题来了。不管是三步还是四步相移,解出来的相位都是包裹相位——范围在[-π, π]之间。说白了,就是相位被折叠了,你不知道它是第几个周期。这就叫相位解包裹问题。

多频外差法,就是用来解决这个问题的。它的核心思想很简单:投影不同频率的条纹,利用频率之间的差频来得到一个等效的低频条纹,从而确定绝对相位。

假设我们投影两种频率的条纹:

  • 频率f1,对应的包裹相位为φ1
  • 频率f2,对应的包裹相位为φ2

外差后的等效频率:

f_eq = |f1 - f2|

等效相位:

φ_eq = φ1 - φ2

如果f1和f2选得合适,f_eq可以做到全场只有一个周期。这样,φ_eq就是绝对相位,不需要解包裹了。

我常用的频率组合是:

频率组合 主频率 辅助频率 等效频率 适用场景
双频外差 70 64 6 中等精度,速度快
三频外差 100 90, 80 10, 20 高精度,抗噪强
四频外差 120 110, 100, 90 10, 20, 30 极端环境,鲁棒性优先

你想想看,如果只用双频外差,等效频率是6,意味着全场有6个周期,还是需要解包裹。但如果你用三频外差,先做一次外差得到10个周期,再做一次外差得到1个周期——全场唯一,完美解决。

核心要点:多频外差的本质是用时间换空间。你投影的条纹越多,解包裹越可靠,但测量时间也越长。实际项目中,我一般推荐三频四步相移——三个频率,每个频率四步相移,总共12张图。精度和速度的平衡点,我个人觉得这个组合最舒服。

四、相移法整体流程

说了这么多,我们来梳理一下相移法的完整流程。我画了一张图,方便你理解整个知识体系:

相移法结构光三维测量流程 步骤1:投影条纹 三步/四步相移条纹 步骤2:采集图像 相机同步拍摄 步骤3:相位解算 arctan计算包裹相位 多频? 是(多频外差) 步骤4a:多频外差解包裹 频率外差 → 绝对相位 否(单频) 步骤4b:空间解包裹 邻域相位展开 步骤5:相位-高度映射 标定参数 → 三维坐标 图:相移法结构光三维测量完整流程

从图上你可以看到,相移法的核心就两个阶段:相位解算和相位解包裹。相位解算靠三步或四步相移,相位解包裹靠多频外差或空间展开。我个人更推荐多频外差,因为它逐像素独立处理,不会像空间解包裹那样出现误差传播——一个点错了,后面全错。

实战建议:如果你刚开始搭建相移法系统,我建议从四步相移+三频外差开始。四步相移抗噪好,三频外差解包裹可靠。等把流程跑通了,再根据实际需求去优化——比如换成三步相移提速度,或者换成双频外差减少投影张数。

好了,相移法的核心内容就这些。说白了,三步相移和四步相移是获取包裹相位的手段,多频外差是解开包裹相位的钥匙。三者结合,才能得到完整的绝对相位,进而重建出三维形貌。下次你看到那些条纹投影的三维扫描仪,心里就有数了——背后就是这套原理。