APP下载

相位编码条纹投影轮廓术的相位展开误差校正方法

2020-09-29潘艳娟奚冬冬王玉伟唐七星

应用光学 2020年5期
关键词:阶次条纹校正

刘 路,潘艳娟,奚冬冬,王玉伟,唐七星

(1.安徽农业大学 工学院,安徽 合肥 230036;2.安徽省智能农机装备工程实验室,安徽 合肥 230036;3.安徽大学 安徽省工业节电与电能质量控制协同创新中心,安徽 合肥 230031)

引言

结构光三维测量是一种具有非接触、精度高、速度快等优点的光学三维测量技术,广泛应用在医学工程、逆向工程、虚拟现实等各大领域[1-3]。结构光三维测量主要是通过投影仪向物体表面投射光栅条纹,摄像机采集物体表面变形的条纹图像,通过条纹图像分析重建得到物体的三维形貌信息。相移法[4-5]和傅里叶变换法[6]是

2种数字条纹分析算法。其中相移法是目前最常用的相位测量方法之一,其测量精度较高,但只能得到包裹相位,需要进行相位展开恢复出连续相位分布。

目前,相位展开算法大致可分为空域相位展开算法和时域相位展开算法。相对于空域相位展开算法,时域相位展开算法更适合测量复杂形貌的物体。常见的时域相位展开算法包括多频[7]、多波长[8]、格雷码[9]、相位编码[10-13]等。相位编码算法因其较强的鲁棒性,近年来引起学者们的广泛关注。由于环境噪声、相机离焦等因素的影响,容易导致条纹阶次与包裹相位之间发生错位,引入相位展开误差,使得测量精度降低。为了解决上述问题,Lv 等人[14]提出了一种路径跟踪算法,首先定位相位误差点,然后借助邻域信息来校正相位展开误差,但该方法主要适用于表面相对平滑的物体。邓吉等人[15]提出了一种无损阶次校正算法,该算法同样需要借助误差点的邻域信息,很难校正物体边缘处的相位展开误差。Zheng 等人[16]设计了一种自适应中值滤波器来消除相位展开误差,该方法需要将不同尺寸的中值滤波器进行反复迭代至判断条件收敛,处理速度相对较慢,实时校正的能力较弱。Ma 等人[17]提出了一种自对准技术,参考包裹相位将单个条纹周期分割为2个区域,并假设每个区域中像素的条纹阶次相同,将条纹阶次与包裹相位对齐,该方法需要连通域标记等操作,运算复杂度较高。Cai 等人[18]提出了一种半周期校正算法,实现了灰度编码的相位展开校正,同样存在运算复杂度较高的问题。总的来说,上述方法能在一定程度上消除相位展开误差,但均需要借助区域信息,进行复杂的图像运算,具有一定的局限性。为了消除相位展开出现的误差,孙学真等人[19]提出一种互补型格雷码方法,能够逐个校正像素相位展开误差。Zhang 等人[20-21]结合图像抖动算法,将互补型格雷码方法用于高速三维测量,能够消除因为散焦和运动引起的相位展开误差。

在传统的相位编码算法的基础上,将二值条纹与相位编码条纹相结合,获得2组具有半周期错位的条纹阶次与包裹相位进行映射,利用2组编码出现的误码位置的不同构成互补,有效地消除了相位展开误差。仿真和实验结果均表明了该方法的有效性和精确性。

1 原理

1.1 相位编码算法

传统的相位编码算法需要投射2组条纹,1组是正弦条纹,用来计算包裹相位;1组是相位编码条纹,用来计算条纹阶次。本文以三步相移算法为例,正弦相移条纹的强度函数可表示为

式中:I′(x,y)表示背景强度;I′′(x,y)表示调制强度;φ(x,y)表示包裹相位。通过联立公式(1)~(3),可以得到φ(x,y)的计算公式如下:

由于存在反正切计算,包裹相位的取值在[0,2π]之间,需要对其进行相位解包裹得到连续的绝对相位分布。本文采用相位编码算法进行相位解包裹,计算条纹阶次k(x,y)。相位编码条纹的强度函数如下:

式中:表示阶梯相位,可进一步表示为

式中:M表示条纹周期的总数。利用三步相移算法,从采集的相位编码条纹图像中恢复出阶梯相位φs(x,y),进而求解出条纹阶次值k(x,y):

结合包裹相位φ(x,y)和条纹阶次k(x,y),得到连续的绝对相位值Φ(x,y):

1.2 相位展开误差校正算法

上述基于相位编码的相位解包裹方法,由于随机噪声和相机散焦等因素的影响,容易导致条纹阶次与包裹相位之间发生错位,在包裹相位的2π 跳变点附近引入相位展开误差。根据这一特点,本文提出一种利用二值条纹进行相位展开误差校正的方法。引入的二值条纹与相位编码条纹的码字变化位置存在半个周期的错位。由于半个周期的错位,可以得到2种具有互补性的条纹阶次。图1为传统相位编码和改进的方法对相位展开原理,图中Φ是通过传统方法的相位展开结果,可以看出存在明显的相位误差;Φ′是通过改进方法的相位展开结果,通过增加1幅二值条纹计算出1组具有互补性的条纹阶次k(x,y)和k′(x,y),有效地避免了相位展开存在的误差。我们将对本文所改进的方法进行详细说明。本文所采用的二值条纹可表示为

式中:T表示正弦条纹的周期;[mod]表示求余函数。

图1 传统的相位编码方法和改进的相位编码方法Fig.1 Traditional phase-encoding method and improved phase-encoding method

为了消除环境光线和物体反射特性的不均匀带来的影响,本文采用正弦相移条纹的背景强度I′=(I1+I2+I3)/3作为阈值,对所采集的二值条纹进行二值化。由于B(x,y)是相对于k(x,y)有半周期偏移的灰度码,将B(x,y)与k(x,y)结合,生成新的半周期编码序列:

整理得到最终序列:

式中:[floor]为向下取整函数,得到的最终序列如图2所示,从图中可以看出2组条纹阶次半周期相移特点。在进行相位展开时,若每次k(x,y)发生跳变,则结合k′(x,y)来进行互补,当k′(x,y)发生跳变时,则用k(x,y)来进行互补。

根据上述分析,绝对相位Φ′(x,y)的计算公式为

图3进一步对比了传统相位编码和改进方法对相位展开效果,可以看出,利用本文方法可以较好地避免传统相位展开过程中出现的误码问题。

图2 互补性条纹阶次Fig.2 Complementary fringe orders

图3 相位编码原理Fig.3 Principle of phase-encoding

2 仿真分析

本文使用MATLAB 工具箱进行仿真实验,对所提方法的有效性进行验证。我们采用peaks 峰值函数来描述仿真物体的表面形貌。首先,分别将正弦条纹、相位编码条纹和二值条纹投射至物体表面,使用分辨率像素为256×256的摄像机采集这些条纹图像。为了模拟真实环境中的随机噪声,我们调用imnoise函数,向上述条纹图像中添加均值为0、标准差为0.1的高斯噪声;同时,为了模拟摄像机的散焦效应,我们采用imfilter函数,将大小为5×5 且标准差为1.0的高斯滤波器应用于上述条纹图像,如图4(a)~图4(c)所示。图4(d)是通过三步相移算法计算得到的包裹相位。图4(e)~图4(f)分别表示2组条纹阶次信息。

图4 模拟图像Fig.4 Simulated images

本文所提出的方法和传统的相位编码方法目的都是在于如何更加准确地重建出物体的三维形状,图5(a)为传统相位编码方法重建的三维形状;图5(b)为本文方法的结果。通过对比分析可以得到,传统的相位编码算法在进行相位展开时存在一定的毛刺误差,这些问题可以通过在原有的算法基础上附加1幅二值编码条纹得到解决。仿真结果表明,本文所提方法能够有效地消除相位展开误差。

图5 仿真结果Fig.5 Simulation results

3 实验分析

为了进一步验证本文所提出的方法,本文搭建了条纹投影实验平台,包括摄像机(Point Grey Chameleon3)和投影仪(DLP Light-Crafter 4500)。所用摄像机的分辨率像素为1 280×1 024,镜头的焦距为8 mm,投影仪的分辨率像素为912×1 140。利用上述条纹投影实验平台,我们分别进行了如下3个实验。

首先,测量一个单一参考平面,由相机捕获的图像如图6(a)~图6(c)所示。利用公式(4)对正弦条纹进行处理得到包裹相位,如图6(d)所示。由于采用三步相移算法进行包裹相位的求解,得到的相位主值在0~2π之间变化,需要对其进行展开,得到连续相位分布。分别采用传统方法和本文方法重建出参考平面的绝对相位分布。结合公式(9)和(13)计算得到2组条纹阶次,如图6(e)和(f),通过比较得出,图6(e)和图6(f)所展示的条纹阶次之间存在一定的错位,从而构成一组具有互补性的条纹阶次。最后将2组具有互补性的条纹阶次分别与包裹相位相结合,对其进行展开,结果如图7所示。其中,图7(a)为传统方法的重建结果,存在明显的相位展开误差,这些误差是由包裹相位和条纹阶次之间的错位引起的,并且在图7(b)中得到明显的改善。

图6 参考平面的测量结果Fig.6 Measurement result of reference plane

图7 参考平面的绝对相位Fig.7 Absolute phase of reference plane

选取1个表面平滑的球作为测量对象,在实验中,取相移步数N为3,利用投影仪将计算机生成的3组条纹分别投影到被测物体上,相机依次采集被模型调制后的条纹图像,如图8(a)~图8(c)所示。再通过传统的相位编码方法和改进方法恢复被测物体的绝对相位并进行比较,图8(e)和图8(f)分别为求得的2组条纹阶次值,结合公式(10)和(14)对其进行展开。最后将测量对象的绝对相位减去参考平面的绝对相位来重建三维形状。图9分别展示了传统方法和本文方法对球的三维重建结果。其中,图9(a)为传统方法的三维重建结果,球的表面存在严重的毛刺误差;图9(b)为本文方法的三维重建结果,球的表面比较平滑,并无明显的毛刺误差。通过比较分析,本文所提出的方法在对相位编码算法进行相位解包裹时出现的相位展开误差有明显的改善效果。前2组实验结果表明,所提方法与传统的相位编码方法相比,对相位主值误差的鲁棒性更高,不易出现相位展开误差。

图8 球的测量实验结果Fig.8 Measurement result of sphere

图9 球的三维重建结果Fig.9 3D reconstruction results of sphere

为了进一步验证,选取1个具有复杂形貌的哆啦A梦作为测量对象,其实验测量结果如图10所示。图10(a)~图10(c)为相机捕获的图像,其中图10(c)为增加的一幅二值条纹。对采集的图像求解包裹相位并用传统方法和本文改进的方法对其展开。根据相移算法,对采集的3幅正弦条纹进行解相,求得截断相位主值,如图10(d)所示。在进行相位展开过程中,根据截断相位的不同取值范围进行相应的解码后,按照展开算法求出真实相位。其中图10(e)~图10(f)为所求得的2组条纹阶次,可以看出其有一定的位置偏移。通过2种方法分别对哆啦A梦进行展开,结果如图11所示。其中,图11(a)为传统方法的三维重建结果,哆啦A梦的表面存在严重的毛刺误差,这说明传统方法在进行相位展开时,包裹相位与条纹阶次之间出现了错误,导致展开的结果出现了毛刺误差,但这些误差在图11(b)中都被完全消除。通过第3组实验,进一步验证了所提出的方法可以实现更高精度的测量,且可以测量复杂形貌物体。

图10 复杂模型的测量结果Fig.10 Measurement result of complex model

图11 复杂模型的三维重建结果Fig.11 3D reconstruction results of complex model

4 结论

本文针对传统的相位编码算法存在的相位展开误差问题,提出一种相位展开误差校正方法。在相位展开误差产生成因分析的基础上,该方法通过附加的二值条纹与相位编码条纹结合可以获得1组条纹阶次。2组条纹阶次值进行互补,当一组条纹阶次发生错误时,可以通过另一组来进行校正。实验和仿真分析表明,与传统的相位编码算法相比,该方法有效地消除了相位展开误差,更能准确地恢复出被测物体的绝对相位分布,进而重建出被测物体的三维形貌。

猜你喜欢

阶次条纹校正
劉光第《南旋記》校正
阶次分析在驱动桥异响中的应用
谁是穷横条纹衣服的人
基于Vold-Kalman滤波的阶次分析系统设计与实现*
别急!丢了条纹的斑马(上)
别急!丢了条纹的斑马(下)
基于MR衰减校正出现的PET/MR常见伪影类型
基于齿轮阶次密度优化的变速器降噪研究
在Lightroom中校正镜头与透视畸变
机内校正