改进的三频三步相移算法需要3种频率$\left( {{f_1} > {f_2} > {f_3}} \right)$共5张条纹图像,包括3张频率为${f_1}$的图像,和频率为${f_2},{f_3}$的图像各1张。5张条纹图像的光强表达式表示如下:
式中:${I_i}\left( {x,y} \right)$表示第$i$张编码的正弦条纹图像的光强值,$i = 1,2,3,4,5$,$\left( {x,y} \right)$表示图像像素坐标点;$A\left( {x,y} \right)$和$B\left( {x,y} \right)$分别为背景光强和调制光强值;${\varPhi _1}\left( {x,y} \right)$,${\varPhi _2}\left( {x,y} \right)$和${\varPhi _3}\left( {x,y} \right)$分别为满足传统多频外差算法[12]的3种不同频率$\left( {{f_1} > {f_2} > {f_3}} \right)$的图像对应的相位值。对于横向编码的条纹图像,其表达式如下:
一般采用条纹周期数${T_j} = {f_j} \times width$衡量频率,$width$是投影图像的宽度。例如当${T_1} = 70$,${T_2} = 64$,${T_3}{\rm{ = }}59$, 有如图 1所示的条纹图像。
首先,根据频率为${f_1}$的3张图像(公式(1)~(3))得到$A\left( {x,y} \right)$,$B(x,y)$和包裹相位${\varphi _1}(x,y)$:
公式(9)中由反正切函数计算出的初始包裹相位${\varphi _{1o}}\left( {x,y} \right)$范围在[−π, π),通过转换公式(10)将其转换到[0,2π)范围。为了得到${\varphi _1}\left( {x,y} \right)$的展开相位,需要求得另外两个频率的包裹相位,再通过三频外差算法计算${\varphi _1}\left( {x,y} \right)$对应的条纹级数。由于频率为${f_2}$和${f_3}$的条纹图像均为一张,要得到该频率下的包裹相位,需先求得图像${I_4}$、${I_5}$的背景光强值${A_2}$、${A_3}$和调制光强值${B_2}$、${B_3}$。图 2(a)所示为在同等实验条件下相机拍摄得到的不同频率的三步相移条纹图像,对应的条纹周期数分别为70、64、59、1。图 2(b)、(c)分别为通过三步相移图像计算得到的各个频率的背景光强和调制光强。背景光强相差不大,由于投影仪离焦效应的影响,投影得到的不同频率条纹图像的调制光强值会发生变化。从图 2(c)可以看出,频率越低,调制光强的幅值变化越大,对于频率相近的高频图像来说,不同图像间的调制光强差距较小。
为了减小不同频率之间由于离焦效应对调制光强的影响,同时保持高精度,3种图像频率均为高频,且频率相近[2]。则有:
将计算得到的背景光强$A\left( {x,y} \right)$和调制光强$B\left( {x,y} \right)$代入公式(4)~(5)求解三角包裹相位${\varphi _2}\left( {x,y} \right)$和${\varphi _3}\left( {x,y} \right)$:
由于反余弦函数的限制,三角包裹相位${\varphi _2}\left( {x,y} \right)$和${\varphi _3}\left( {x,y} \right)$的变化范围为$0$~$\pi $。为了适应三频外差算法用于相位展开,需根据三角包裹相位像素坐标斜率变化将其转换到$0$~$2\pi $范围。转换公式如下:
式中:${\varphi _{ju}}\left( {x,y} \right)$为三角包裹相位${\varphi _j}$转换后得到的标准包裹相位,$j = 2,3$;${k_{jx}}\left( {x,y} \right)$为三角包裹相位${\varphi _j}\left( {x,y} \right)$在$x$方向的斜率,可根据邻近像素点之间的相位关系求解。通过比较斜率的正负特性,得到从$0$~$2\pi $变化的标准包裹相位${\varphi _{2u}}\left( {x,y} \right)$和${\varphi _{3u}}\left( {x,y} \right)$,如图 3所示。再由上述得到的包裹相位${\varphi _1}\left( {x,y} \right)$, ${\varphi _{2u}}\left( {x,y} \right)$和${\varphi _{3u}}\left( {x,y} \right)$通过三频外差算法[12]获取条纹级数${N_j}(x,y)$,$j{\rm{ = }}1,2,3$。由3个频率的包裹相位求得的条纹级数在一个周期内保持一致,需要通过取整来进一步计算,当偏差导致取整前的级数误差小于0.5时,不会影响级数正确求解[16],同时可通过常规方法对级数进行矫正[17]。最终通过精度最高的包裹相位${\varphi _1}\left( {x,y} \right)$和条纹级数${N_1}(x,y)$得到展开相位${\varPhi _1}\left( {x,y} \right)$:
利用以上展开相位结果对结构光测量系统中的投影仪和相机图像平面坐标点进行匹配,结合系统内外参数重建得到物体的空间三维信息。