APP下载

快速三维重建的N级灰度编码法

2022-05-22童陈恩蔡柏林

无线电通信技术 2022年3期
关键词:码字解码条纹

童陈恩,蔡柏林,2,梁 栋,2*

(1.安徽大学 互联网学院,安徽 合肥 230039;2.农业生态大数据分析与应用技术国家地方联合工程研究中心,安徽 合肥 230601)

0 引言

基于结构光技术的物体三维形状测量已经应用于逆向工程、生物医学工程、在线检测等各个领域[1-4]。在现有的结构光技术中,条纹投影轮廓术(Fringe Projection Profilometry,FPP)以其非接触、速度快、精度高等优点受到了研究者的广泛关注[5]。在FPP中,相位图主要通过相移技术[6]或基于变换的算法[7-8]恢复。但是,由于求解相位的过程中出现反正切函数,因此上述方法得到的相位被包裹在[-π,π)的范围内,需要进行相位展开来获取连续的相位。

现有的相位展开技术主要分为两大类:空间相位展开法[9-12]和时间相位展开法[13-15]。空间相位展开法主要通过空间几何关系将编码信息蕴含于条纹图案中,解码时通过查找左右条纹的信息来获取码字,空间方法包括可靠性图指导法[9-10]、最小范数法[11]和贝叶斯法[12]。显然这种解码方法在遇到表面形貌陡峭的物体时会导致误差通过路径传播,从而使得最终的测量结果变得不可靠。与此相比,时间相位展开法通过投射多幅条纹图像,逐像素地对相位信息进行展开,有效降低了表面突变导致的误差影响。尽管时间相位展开法需要额外的条纹图像进行相位展开,但由于其可靠的精度,在考虑测量速度和精度的实际情况中有着不错的应用前景。目前典型的时间相位展开法主要有多频率方法[14]、相位编码方法[15-17]和灰度编码方法[18-22]。

灰度编码法由于其易于编码和解码,在相位展开中有着广泛的应用。该方法通过设置条纹图中像素的灰度值来进行编码,例如简单二进制编码法[23]和格雷码[24]。这些方法主要采用二级灰度条纹进行编码,在生成64个码字时至少需要lb64幅条纹图,测量速度因此受到限制。为此,Zheng等人[25]用三级灰度编码提出了一种三值格雷码方法,此方法需要log364幅条纹图来生成64个码字。随后,Zheng等人[26]又提出了一种四元格雷码方法,进一步将编码64个码字所需要的条纹图数量减少到log464幅。由此可见,通过增加条纹图的灰度级可以降低编码时所需要的条纹图像数量,此外随着灰度级增加的同时各灰度级之间的灰度差也在逐渐减小,这会导致解码时容易产生灰度混淆的情况。因此在考虑灰度级数和解码误差的情况下Cai等人[27]提出了一种双灰度编码方法(PWGL)。该方法只需用两幅四级灰度编码图像就可以编码64个码字。由于PWGL方法相较于传统的四级灰度编码策略在编码相同码字的情况下所需的条纹幅数较少,在一些时效性要求较高的场合下具有一定的应用潜力。但该方法在解码过程中需要6个解码掩膜,导致解码过程的时间开销较大,影响了测量速度,并且在条纹缺失、码字丢失等情况时,解码掩膜容易受到误差影响,因此鲁棒性较低。针对PWGL方法在解码过程中的问题,本文对其解码算法进行改进,提出一种相互交叉的二值掩膜取代原有的解码掩膜,对同级码字的码区进行统一解码,从而减少了解码过程中的时间开销,同时也降低了因条纹丢失或图像噪点等误差造成的解码异常。实验结果验证了本文所提解码算法的有效性。

1 原理

1.1 N步相移算法

N步相移算法主要是通投射多幅具有相位差的正弦条纹图像来获取相位信息,常见的算法有三步相移法、四步相移法和五步相移法。相移算法中使用的条纹图案的强度可以表示为:

In(x,y)=A(x,y)+B(x,y)cos[φ(x,y)+δn],

(1)

式中,n表示相位步数,A(x,y)和B(x,y)分别表示背景和调制强度;(x,y)表示图像的像素坐标;φ(x,y)为待求解的相位;δn是指相移图像的相移量,可表示为:

δn=2π(n-1)/N。

(2)

结合N步相移图像的表达式可以分别求出A(x,y),B(x,y),φ(x,y):

(3)

(4)

(5)

通过对包裹相位φ(x,y)进行相位展开以获得绝对相位Φ(x,y)。引入条纹级次K(x,y)可将Φ(x,y)表示为:

Φ(x,y)=φ(x,y)+2πK(x,y),

(6)

所以求绝对相位的问题也就转化为求出每个条纹的级次K(x,y)。

1.2 双灰度编码方案

双灰度编码方法进行物体三维表面测量需要两组条纹。一组用于包裹相位计算的,另一组则用于求条纹级次。由于三步相移算法需要最少的模式数来计算相位图,因此选用三步相移算法来求取包裹相位。再用两幅灰度编码条纹图求取条纹级次,用于确定局部顺序K1(x,y)的灰度编码条纹图G1(x,y)为四级灰度编码,其周期T1和相移条纹周期T相等。G1(x,y)的图像强度可表示为式(7)。式中ceil(m)表示对m向上取整;A(x,y)和B(x,y)与式(1)中的A(x,y)和B(x,y)相同;CS(i),(i=1,2,3,4)代表四级灰度编码。另一灰度编码条纹图G2(x,y)用于计算区域顺序K2(x,y)。G2(x,y)的每个周期被分成两个相等的部分CS1和CS2,并且使用不同的代码序列对这两个部分进行编码。CS1和CS2都包含64个码字,其中CS1编码G2的第一部分,CS2编码G2(x,y)的第二部分。使用这两个代码序列,G2(x,y)可以表示为式(8),式中mod(m,n)返回m除以n后的余数;CS1(i),CS2(i)表示CS1,CS2中的第i个代码。A(x,y)和B(x,y)可以在得到S1(x,y),S2(x,y),S3(x,y)后通过式(4)计算出。CS1和CS2编码的2位码字C1和C2与区域顺序K2(x,y)的对应关系见表1。

表1 K2与C1,C2的对应关系Tab.1 Corresponding relationship between K2 and C1, C2

M=ceil(x/T1),

(7)

(8)

(9)

由上述可知,区域顺序K2(x,y)直接由G2(x,y)决定。对于G2(x,y)的每个周期,其顺序可以通过组合其第一部分和第二部分的码字来确定,K2(x,y)可以由式(9)计算获得。图1显示了PWGL方法中使用的编码策略及其相应的细节。在求得K1(x,y)和K2(x,y)后,条纹阶数K(x,y)可以计算为:

图1 PWGL方法的编码策略Fig.1 Coding strategy of the PWGL method

K(x,y)=K1(x,y)+K2(x,y)。

(10)

最后,将K(x,y)代入式(6)即可求得绝对相位Φ(x,y)。图2说明了整个PWGL方法求绝对相位的流程。

图2 PWGL方法流程图Fig.2 Flowchart of the PWGL method

1.3 解码算法

1.3.1 PWGL解码算法

为了获得条纹阶数,PWGL方法提出了一种解码算法。该算法的主要目的是确定区域顺序K2(x,y),因为局部顺序K1(x,y)可以根据G1(x,y)图像的灰度强度获得。在获取条纹编码时,可以借助相位值将条纹图像进行分割。由于包裹相位的范围为[-π,π),因此选择相位值0可将条纹分成两部分,从而获得两个二值掩模:

(11)

(12)

掩膜maskp(x,y)和maskn(x,y)分别与G2(x,y)点乘便可以区分出C1和C2。此外为求得区域顺序K2(x,y),还需要利用局部顺序K1(x,y),因为K1(x,y)的周期与条纹的周期相同,可以使用它来正确地逐个匹配C1和C2。具体方法是先用K1(x,y)产生4个二值掩膜:

(13)

然后标记Bi(x,y)的连通域,逐个提取每个连通域并与C1,C2点乘。按照这个方法只要遍历整个连通域后就可以求出C1,C2所有的编码,然后根据式(9)求得区域顺序K2(x,y)。解码掩膜Bi(x,y),解码细节如图3所示。

图3 PWGL的解码原理Fig.3 Decoding principle of PWGL

所有解码操作完成后,就确定了局部顺序K1(x,y)和区域顺序K2(x,y)。然后,可以使用式(10)计算条纹阶数K(x,y)。由于在逐个求取C1,C2的编码时使用的二值掩膜Bi(x,y)的每个连通域只包含C1,C2的一个编码。即在大部分情况下区域顺序K2(x,y)的每个条纹级次都要进行4次组合求解,时间开销较大。另外Bi(x,y)由于其覆盖范围只有一个相移条纹周期,容易受到条纹丢失或图像噪点的干扰,尽管可以通过查找左右条纹序列解决,但还是在一定程度上影响了所求条纹级次的准确度。

1.3.2 改进的解码算法

针对所提出的问题,本文对区域顺序K2(x,y)的解码过程进行了一些改进。首先仍然是利用相位值0获取两个二值掩模maskp(x,y)和maskn(x,y),并用其区分出C1,C2的每个编码。由于K2(x,y)的每个序列中的C1,C2编码相同,所以实际上可以对相同码区的码字进行统一求解,而不必逐一对每个编码进行求解,也就不需要为每个码字都设置一个掩膜。根据连通域划分的原理,本文提出的方法只需设置两个解码掩膜便可以求出C1,C2的所有码字。这两个掩模mask1(x,y)和mask2(x,y)利用局部顺序K1(x,y)的值可以表示为:

(14)

(15)

改进的解码掩膜覆盖了3个相移条纹周期,通过对mask1(x,y)和mask2(x,y)进行连通域标记逐一求解每个连通域的编码。为了方便说明,以图4中的区域j1和h1的解码过程为例。首先根据连通域L1的值筛选出mask1(x,y)的连通域L1,将其命名为maskj,然后将maskj分别与C1,C2点乘并用结果矩阵中的唯一非零众位数覆盖整个区域j1的编码,区域h1的编码也可以用同样的方法得出。最后组合两部分的编码就可以还原出区域j1和h1的区域顺序K2(x,y)。同理j2和h2区域的编码也可如此求出。K2(x,y)的解码细节如图4所示。求得K1(x,y),K2(x,y)后,同样使用式(10)计算出条纹阶数K(x,y)。最后将K(x,y)代入式(6)求得绝对相位Φ(x,y)。

图4 改进的PWGL解码原理Fig.4 Decoding principle of improved PWGL

2 实验

2.1 仿真实验

首先,为验证本文方法的有效性,对一个平面进行仿真,并用两种解码算法分别对其进行三维测量,比较二者的测量误差。另外对条纹图像添加了高斯噪声,从而模拟真实测量环境中的系统误差,图5为添加高斯噪声后的条纹图像。图6(a)为本文方法的测量结果,图6(b)为传统方法的测量结果,对两个测量结果进行误差分析得到图6(c)和图6(d)。由误差分析的结果可以看出传统解码算法对图像噪点更加敏感,因此测量结果中的误差更大。

图5 仿真条纹图Fig.5 Simulation of fringe pattern

(a) 本文方法

(c) 本文方法的误差分析

(d) 传统方法的误差分析

2.2 真实实验

为了测试改进的解码算法在实际测量中的性能,建立了一个FPP系统,该系统由一个摄像头(Point Grey Chameleon3)和一个投影仪(DLP Light Crafter 4500)组成。相机和投影仪的分辨率分别为1280×1024 px和912×1140 px。

第一个实验,对一个石膏球分别用本文的解码算法和传统的解码算法进行测量。图7(a)为被测物体,图7(b)~(d)为三步相移条纹图,图7(e)和图7(f)分别为两幅四级灰度图。首先通过三步相移图像获得包裹相位,然后利用相位值精准分割获得两个掩膜maskn(x,y),maskp(x,y)。有了这两个掩膜后便可将图7(f)中G2(x,y)的编码C1,C2区分开,同时maskn(x,y),maskp(x,y)结合图7(e)中的G1(x,y)也可求出图7(i)中的K1(x,y)。利用K1(x,y)的值可以得出两种解码算法所需的二值掩膜,图7(g)和图7(h)分别为本文方法的解码掩膜mask1(x,y)和mask2(x,y)。mask1(x,y)和mask2(x,y)与C1,C2相结合便可求出图7(j)中的K2(x,y),进而求出图7(k)中的K(x,y)。最后进行相位展开获得图7(l)中的绝对相位,并绘制三维形貌。图8(a)为本文方法的测量结果,图8(b)为传统方法的测量结果。由结果可见,本文方法进行三维表面测量时对物体表面形貌恢复得更加精确,特别是物体边缘处的测量结果更完整。

(a) 被测物体

(b) 三步相移图像I1(x,y)

(c) 三步相移图像I2(x,y)

(d) 三步相移图像I3(x,y)

(e) 灰度图G1(x,y)

(f) 灰度图G2(x,y)

(g) 掩膜maskp(x,y)

(h) 掩膜maskn(x,y)

(i) 局部顺序K1(x,y)

(j) 区域顺序K2(x,y)

(k) 条纹级次K(x,y)

(l) 绝对相位

为了进一步验证改进解码算法的有效性,进行了第二个实验,对一个雕像进行测量。图9(a)为相移图像,图9(b)、图9(c)分别为灰度图G1(x,y)、G2(x,y)。首先通过三步相移算法获得包裹相位图9(a),接着由解码算法分别求出图9(d)中的K1(x,y)和图9(e)中的K2(x,y),并根据式(10)求出图9(f)中的K(x,y)。最后再将K(x,y)代入式(6)求得图9(e)中的绝对相位Φ(x,y)。图10对比了两种解码算法的三维测量结果,其中图10(a)为本文改进的解码算法,图10(b)为传统的解码算法。由结果可以看出,在测量复杂物体表面三维形貌时本文解码算法对物体表面细节的还原度较高,另外由图10的放大对比处可反映出改进的解码算法对物体边缘处的还原程度更高。

(a) 本文方法

(b) 传统方法

(a) 三步相移条纹图

(b) 灰度图G1(x,y)

(c) 灰度图G2(x,y)

(d) 局部顺序K1(x,y)

(e) 区域顺序K2(x,y)

(f) 条纹级次K(x,y)

(a) 本文方法测量结果

(b) 传统方法测量结果

3 结束语

本文改进的算法中所用到的掩模mask1(x,y)和mask2(x,y)相较于原PWGL算法的解码掩膜Bi(x,y)覆盖范围更广,因此对图像噪点等异常值的鲁棒性更高。此外,由于只需要两幅mask1(x,y)和mask2(x,y)求解C1,C2所有的编码,而原算法需要四幅解码掩膜,因此算法的时间复杂度也相对减少,有效地提升了测量速度。

用本文改进解码算法可以使PWGL作为一种快速三维重建方法在实际测量过程中有着更好的时效性,同时也可以获取更加精准的物体表面三维形貌信息。

猜你喜欢

码字解码条纹
较大码重最优冲突回避码的具体构造
岁末感怀
文化解码
解码eUCP2.0
谁是穷横条纹衣服的人
文化 解码
文明 解码
放 下
放下
条纹回归