冯雷洁,杜虎兵,张高鹏,李燕杰,韩金璐
(1 西安工业大学 机电工程学院,西安 710021)
(2 中国科学院西安光学精密机械研究所,西安 710119)
光电三维轮廓测量技术在工业检测,3D 成像,生物医疗,实验力学等领域具有广泛应用[1]。按照条纹图分析方法的不同,现有的光电三维轮廓测量技术主要分为两类:第一类是相移技术,其需要在时域记录多帧相移条纹图[2];第二类方法则通过一帧条纹图在频域搜索感兴趣的相位分布。尽管相移技术已成功地在很多精密测量场合得到了应用,但其技术有一定的缺陷,例如,易受大气扰动的影响,要求被测对象在测量时状态保持稳定,难于实现快速瞬变现象或动态物理量的测量[3]。相比,单帧条纹图解调技术为研究动态问题提供了一种很好的途径。然而单帧条纹图相位解调是一个病态的反问题,另外研究中很难对相位所有行为进行假定,因此经典的基于物理模型的条纹分析方法在设计可靠的单帧条纹图正交化方法时遇到了困难。传统上,单帧条纹图正交化通常通过引入高频的空间载频将条纹图的轮廓项迁移至高频,然后在频域利用傅里叶变换进行相位解调。然而该技术由于频率混叠、谱泄露等问题,其测量精度和范围有限。更重要的是,傅里叶变换的方法不能用于不含载频的条纹图的处理,例如,干涉条纹图。考虑到条纹图信号具有的非平稳特征,研究者试图采用窗口傅里叶变换、小波变换、经验模态分解(Empirical Mode Decomposition,EMD)等方法克服傅立叶轮廓术的缺陷[4-6]。但此时又产生了空间分辨率和频率分辨率间平衡的问题、模式混合问题等[7-8]。解调单帧条纹图实质是建立条纹图轮廓项的正交变换,即发展条纹图轮廓项正交变换算子。其最方便的方法是对条纹图进行Hilbert 变换。然而Hilbert 变换属于一维变换,对于二维条纹图信号,如果直接使用Hilbert 变换,会破坏条纹图数据的整体性,而且对于一般条纹图,由于其方法常常产生负的空间频率成分,此时又产生了如何正确确定条纹图每一点空间频率符号的问题。最近,TOUNSI Y 等发展了一种基于Riesz 变换的数字相移分析方法[3],该方法实质上是一种二维Hilbert 变换,为单帧条纹图相位恢复提供了新思路。然而在实验中,我们发现该方法对条纹图光强的非正弦性敏感,变换效果较差。总之,尽管单帧测量技术测量速度快、装置简单,但是其方法还存在着对噪音和条纹形状变化敏感,测量时常常需要人工干预等问题,致使发展一种快速、有效的单帧相位解调方法充满了挑战和不确定性。
与传统的假定条纹图相位求解模型具有清晰的解析公式,进而通过一定的线性近似建立的基于模型的条纹图分析方法不同,深度学习方法绕过建立解析模型的严格要求,通过输入、输出条纹图对训练给定的深度网络[9],以非参数的方式学习可靠的先验知识,定义给定网络的功能,从而实现条纹图分析的欠采样问题的正则化。基于学习的条纹分析方法在实现高效、高精的相位恢复方面潜力巨大。例如,使用深度学习网络已经实现了图片分割、信号降噪、解包裹等[10-13]。FENG S 等最早提出采用深度卷积神经网络辅助相位分析[14],发现基于卷积神经网络(Convolutional Neural Networks,CNN)的辅助条纹分析方法使用一帧条纹图计算相位时,比传统的傅里叶变换方法或窗口傅里叶变换方法,能更高精度的预测包裹相位图。NGUYEN H 等[15]制作并发表了训练网络的数据集,并以此评价了全连接卷积神经网络、自编码网络及U-Net 网络的性能,发现U-Net 网络由于具有结构对称和特征图叠合的特点,因而更适合条纹图分析。尽管深度学习在条纹分析中获得了成功,但其本质上是一种数据驱动的方法,需要大量的数据定义所使用的深度网络的条纹解调能力。然而条纹解调过程复杂,包括条纹图降噪、求解包裹相位、相位去包裹和相位高度映射等多个过程,且该过程不连续,与深度学习方法在对某一个过程拟合时在全局上连续的要求相违背,所以发展端-端的条纹分析网络不适应条纹图解调的特点。另外,已有的单帧条纹图处理方法常常要求采集的条纹图具有高的频率,例如,FENG S 的方法[14]应用时需要引入载频项获得高频率的条纹图。然而,低频率条纹图在实际中应用也很广泛,例如,干涉条纹图、莫尔条纹图等。因此,有必要发展一种用于低频率条纹图相位解调网络。
对此,本文提出一种模型和非模型结合的非载频条纹图分析方法。所提方法通过训练单一功能的深度学习网络解调单帧条纹图,首先对条纹图进行降噪归一化处理,然后设计网络对条纹图轮廓项进行正交化处理,最后利用模型的方法提取包裹相位。所提方法适应了深度学习在拟合过程的全局连续性要求,为单帧条纹图相位提取提供了一种有效途径。
采集的非载频条纹图,如使用点衍射的方法,数学模型通常可表示为
式中,a(x,y)为背景项,b(x,y)为调制项,φ(x,y)为测量相位,N(x,y)为噪声。由于式(1)含有四个未知量,显然仅利用式(1)求解测量相位是欠定的。对此,本文首先对条纹图进行降噪和归一化处理,即去除背景项,噪声项,分离条纹轮廓项。
文献[16]提出了一种结合残差模块(Resnetblock)的U-Net 深度卷积神经网络,有效地实现了条纹图降噪归一化处理。该网络模型由编码器(Encoder)与解码器(Decoder)两个模块组成,编码器通过压缩条纹图提取条纹图的主要特征,解码器用于还原条纹图的维度。构建该网络后,在均值为0,方差为2.5,振幅在0.4~1.25 范围的高斯噪音下,使用模拟的条纹图作为训练数据对网络进行训练后,可得归一化的条纹图为
考虑到若直接使用反余弦函数求解精度不高,且求解相位会将测量相位包裹于[0,π],不利于后续相位去包裹处理。因此,本文提出发展深度学习网络,对式(2)进行正交变换,并将变换后的条纹图表示为
因此可得包裹相位θ(x,y)为
显然对包裹相位θ(x,y)进行相位去包裹,即可得相位分布φ(x,y)。
式(2)表示的条纹图模型为偶函数,即cos(φ(x,y))=cos(-φ(x,y))。此时使用U-Net 或其他网络时,网络不区分相位的符号。从而,造成拟合生成的条纹图可能是cos(φ(x,y)+π/2)也可能是cos(-φ(x,y)+π/2),即出现了相位符号模糊的问题。考虑到生成对抗网络[17]中含有一个判别器,能将生成条纹图与真值条纹图进行比较,通过反复迭代,促使二者相似,最终可解决上述正交条纹图生成过程中可能出现的符号不确定的问题,因此本文提出利用生成对抗网络实现条纹图的正交变换。
图1 给出了设计的正交变换网络结构。其原理是:首先利用文献[16]的降噪归一化网络,对条纹图进行降噪归一化,然后将处理后的条纹图输入到生成对抗网络,利用网络已有的特征先验实现条纹图正交化。
图1 正交变换网络的结构Fig.1 Orthogonal transformation network architecture
图2 为生成网络实现条纹图正交化的训练过程。首先,生成网络对归一化的条纹图进行下采样,提取归一化条纹图的特征,然后通过上采样生成正交化条纹图。此时,判别网络将生成网络得到的正交化条纹图与真值条纹图进行真伪判别,经其输出层的sigmoid 函数得到生成条纹图与真值条纹图的相似概率。接着由损失函数计算生成网络和判别网络的损失值(loss),并指导Adam 优化器更新判别网络和生成网络的权重,进而由生成网络形成新的正交化条纹图。上述过程循环迭代,致使生成网络的正交条纹图生成能力不断加强,其结果更加接近真值条纹图,直至纳什平衡,判别网络无法判别生成条纹图与真值条纹图的真伪。
图2 生成网络组成Fig.2 Generative network architecture
数学上,本文的生成对抗网络是通过计算式(5)的交叉熵[18]逼近真值条纹图并评价判别器的精度。
式中,D为判别器的运算函数,用于判别生成图像G(y)与标签图像的真伪,I(y)为输入数据的概率分布,L(x)为标签数据的概率分布。
为了对式(5)进行优化,本文使用Tensorflow2.0 中的Adaptive Moment Estimation 优化器,其学习率为lr=0.000 2,迭代次数epochs=80。
网络训练好后,将实际摄取的条纹图输入到图1 网络结构中,经归一化后,便可由生成网络输出与输入条纹图对应的正交化条纹图。
研究发现,如果设计网络按照直接输入归一化条纹图,输出π/2 相移条纹图的方式工作,此时由于标签的特征较少,生成的相移条纹图易出现断裂及坏点。如图2 所示为了避免该问题,本文提出一种R、G、B 三通道输出方案,其中R 通道输出相对输入有π/2 相移的条纹图,G 通道输出归一化的相位分布:N~φ(x,y),B 通道输出相对输入有3π/2 相移的条纹图。由于本文在网络的输出中增加了cos(φ(x,y)+π/2)、归一化的相位分布N~φ(x,y)、cos(φ(x,y)+3π/2)三个标签,提供了丰富的信息量,从而避免了条纹断裂和坏点的情况。应当指出,R 通道或B 通道的相移条纹图均可用于相位提取,二者没有精度差异,只是符号不同。本文采用了R 通道的结果进行相位的提取。但是应注意,G 通道的输出是归一化相位,不能作为测量相位使用,其作用是用来丰富标签特征的。因为标签的特征越丰富,深度学习网络越容易学习到特征先验。
将网络的输入定义为
网络的输出(标签)定义为三通道RGB 图像,其中R 通道条纹图表示为
G 通道的归一化相位分布为(N~为归一化算子)
B 通道条纹图为
图2 生成网络结构中,网络的第一层到第三层均包含一个卷积层,一个ReLU 函数,一个BatchNormalization 层,具体的参数为3×3×64,3×3×128,3×3×256;为了避免梯度消失,在网络的中间加入了20 个残差模块,每个残差模块含有两组3×3×256 的卷积核,且彼此之间跳跃连接;第四层和第五层为卷积层(具体参数为:3×3×128,3×3×64),最后一层为输出层,输出层包括一个卷积层和一个tanh 函数。生成网络的具体参数见表1。
表1 生成网络参数Table 1 Generative network parameters
判别网络采用了全卷积结构,共五层。第一层到第四层的结构均包含一个卷积层,一个LeakyReLU 函数,一个BatchNormalization 层,每层卷积核的数量分别为64、125、256、512。输出层用于输出概率值,只含有一个卷积核,并采用Sigmoid 函数输出概率值。由于使用了LeakyReLU 函数,本文的判别网络可以加速网络训练并能实现参数的非线性的映射,具体结构如图3,参数设置见表2。
图3 判别网络组成Fig.3 Discriminative network architecture
表2 判别网络参数Table 2 Discriminative network parameters
由于本文方法使用了归一化网络,去除了条纹图中背景项和振幅项的影响,因此训练的数据对可直接通过条纹图模型模拟产生。根据傅里叶级数理论,任意连续函数均可由一系列不同幅值,不同频率,不同相位,不同方向的三角谐波叠加而成,因此设计相位分布为
式中,ai为幅值,fi为频率,ui与vi为正弦波x方向与y方向上的偏导,用以控制当前正弦波的方向,δ(x,y)为相位。上述所有参数均为随机数,因此该方式制作的数据集在足够的规模下完备性较好。
训练中,本文生成了16 000 对输入条纹图和真值条纹图,并按照6∶2∶2 将数据集划分为训练集、验证集和测试集。为了避免过拟合,本文采用了交叉验证的方式,每迭代5 次进行一次验证。
首先对训练好的正交变换网络进行仿真评测。为了使仿真条纹图具有典型性,仿真的相位函数定义为φ(x,y)=peaks(x,y)+,保证了生成的条纹图具有闭型、开型以及疏密变化的特征,仿真生成的条纹图见图4(a)。
仿真时,将仿真的归一化条纹图输入到网络中后(见图4(a)),图4(b)为网络输出的RGB 三通道条纹图,其中R 通道为相对输入有π/2 相移的条纹图,G 通道为归一化的相位分布:N~φ(x,y),B 通道为相对输入有3π/2 相移的条纹图。图4(c)为正交变换后的条纹图。参照图4(a)给出的归一化条纹图,可见,即使是peaks 函数生成的复杂条纹图,本文正交网络也能很好地实现条纹图的正交变换。
图4 条纹图正交变换仿真实验Fig.4 Simulation for fringe pattern orthogonalization
为了进一步量化说明本文正交变换网络的精度,对仿真条纹图进行相位提取。图5(a)给出了真值条纹图的相位,图5(b)为采用正交变换重建的相位,相位去包裹方法参见文献[19]。图5(c)给出的本文方法的相位重建误差,可见提出的正交变换网络相位提取误差不超过0.02 rad。
图5 相位重建仿真实验Fig.5 Simulation for phase reconstruction
为了说明提出方法的效果,以斜面为样品,将Riesz 变换的结果与提出方法的结果进行了比较。图6(b)为本文方法重建的结果,图6(c)为Riesz 变换方法重建的相位分布。参照真值相图(图6(a))可知,通过Riesz 变换方法的结果存在着符号模糊的问题,容易受背景影响,在进行二维正交变换时发生了明显的畸变,而本文的方法具有好的效果。图7(a)和图7(b)给出了Riesz 变换方法的误差分布和本文方法结果的误差分布。仿真实验证明,本文方法的精度比Riesz 变换方法的精度提高了两个数量级。
图6 所提方法与Riesz 变换方法的重建性能比较Fig.6 Comparisons between the proposed method and the Riesz transform method
图7 相位误差Fig.7 Phase error distribution
为了说明本文提出的在网络输出中增加G 通道归一化相位的作用,图8 比较了没有增加归一化相位通道的网络与增加了归一化相位通道的网络对条纹图正交化的结果。可以看出没有归一化通道的网络的输出(图8(b))发生了明显条纹断裂,而增加归一化通道的网络的输出(图8(a)),由于提供了丰富条纹图的标签特征,容易学习到特征先验,得到了一个好的正交化结果。
图8 不同网络输出结果比较Fig.8 Comparisons of the different networks
为了进一步说明所提方法的性能,对实际条纹图进行了正交变换和相位提取。图9 给出了采用点衍射[20]方法,以非球面为测量样品,得到的五帧相移条纹图,其在局部具有闭型、开型以及疏密变化的特征,很好地代表了非载频条纹图的特点,因此保证了实验验证的典型性。
图9 点衍射方法采集的五帧条纹图Fig.9 Five experimental phase-shifting fringe patterns collected by point diffraction interferometer
由于网络设计时输入的图片大小为128×128,实验处理时,首先在图9(a)中随机截取一块大小为128×128 的子图,然后使用降噪归一化网络对子图进行降噪归一化处理[16],再将其输入正交变换网络,得到RGB条纹图,进而分离出π/2 相移条纹,最后使用归一化条纹图和π/2 相移条纹图提取相位分布。为了说明本文方法的重复性,上述操作重复了三次,截取的子图及处理结果见图10。图11 是重建结果。图12 给出了重复上述实验10 次,由误差分布得到的均方根误差曲线,可见本文方法重复性较好。
图10 条纹图正交变换实验Fig.10 Experiment for fringe pattern orthogonalization
图11 相位重建实验Fig.11 Experiment for phase reconstruction
图12 均方根误差分布Fig.12 Root mean square of error
图10(b)为降噪和归一化处理后的条纹图。可见深度学习的方法很好地抑制了采集条纹图的背景项和噪音项。图10(c)和(d)为应用本文方法得到的结果。比较图10(b)和图10(d)可知,所提方法成功地实现了数字相移。
由于实际的原因,参考相位往往难以获取。考虑到AIA 算法[21]是一种高精度的广泛应用的多帧相移求解算法,本文首先应用AIA 算法,使用图9 给出的点衍射条纹图进行了相位解调。然后以其去包裹[19]后的结果作为本文的参考值,计算了本文方法的误差分布。图11 处理的结果表明,本文方法的相图与参考相图非常接近,相位误差不超过0.05 rad。
由以上重建相位结果可知,相比参考相位,所提方法解调出的相位图在边缘处出现了较小的畸变,但在其他部位,重建的相图与参考相图很好的相吻合。考虑到应用多帧条纹图时,因为均化作用可消除求解结果中大多数不确定性因素的影响,而采用单帧条纹图解调相位时,由于条纹信息较少,尽管进行了归一化处理,但由于处理的残差、条纹图光强非正弦分布等因素的影响,单帧解调的结果容易受到条纹图中不确定性因素影响。因此发生较小畸变在所难免。
应当说明,网络的处理过程是各向同性的,所以B 通道和R 通道结果的精度是一样的。为了说明这一点,采用图10 第一行第一个条纹图作为输入数据,再使用B 通道的输出提取相位,然后再比较B 通道和R 通道的输出结果。图13(a)、(b)给出了取反后的相位分布及误差分布,其与R 通道得到相位分布及误差分布(见图11 第一行第二个和第三个图)比较可知,两个方法的结果除了符号相反外,得到的相位分布和误差分布完全相同。因此提出的网络R 通道和B 通道均可用于相位提取。
图13 不同通道输出结果比较Fig.13 Comparisons of output results of different channel
增加B 通道的作用主要是为了丰富标签特征,促使网络容易收敛。图13(c)给出了G 通道的输出的结果,可见该通道的结果不能作为测量相位使用。
图14 给出了图10(a)的第一个图使用Riesz 变换方法的处理结果。由图14(a)可知,Riesz 变换的结果发生了明显的畸变,其方法与参考相位的误差较大,见图14(b)。该实验结果与仿真实验结果类似,证明本文正交化方法具有很好的效果。总之,本文提出的算法具有优良性能,可以很好的实现条纹图正交化,为发展单帧条纹图分析提供了一种有效途径。
图14 Riesz 变换方法结果Fig.14 Result of the Riesz transform method
发展条纹图正交化方法对于非载频条纹图相位解调非常重要,为了解决单帧条纹图正交化欠采样问题,本文发展了一种基于GANs 网络的条纹图正交方法。所提方法实现了归一化条纹图的正交变换,并根据获得的正交信号实现了单帧条纹图相位解调。提出的正交化方法基于GANs 网络,采用制作的数据集对设计的深度学习网络训练后,最终高精度地实现了单帧条纹图相位解调。与典型方法相比,实验以及仿真证明本文方法性能优良。另外,本文方法仅需一帧条纹图可以恢复测量相位,大大节约测量时间,因此结合不断提高的硬件水平为快速测量场合提供了一种实用的途径。后续的研究将集中对所提方法的优化,包括数据集的完备性、网络的集成性等方面,以提高解调精度。