1. 引言
随着现代社会工业和科技业的迅速发展结合,三维成像技术被运用的越来越广泛,在机器视觉、文物数字化、医学诊断等领域 [1] [2] 都发挥出了举足轻重的作用,越来越多的领域都需要精确的三维信息和迅速的测量要求。常见的三维测量技术按测量方式不同可分为接触式测量和非接触式测量两类。非接触式测量的优点就是不与被测物表面接触,测量速度快、精度高、易自动化,能够做到无损测量。非接触式的光学原理测量是目前的研究热点,其中,以结构光法最为突出。随着光 学成像理论与硬件的发展,已经能够实现复杂物体的三维重建,但对于精度的要求也越来越高。目前,格雷码法和相移法是广泛应用于三维重建的编码方法,格雷码法是一种时间编码方法,具有高空间分辨率、精度高和易于实现等特点,但需投影大量格雷码图案,整个重建过程会受到图像采集和解码所需的时间影响,并且格雷码无法编码到单个像素,在相位展开过程中,受到格雷码二值化以及无关背景像素点等因素的影响 [3] [4] ,会导致包裹相位和格雷码条纹阶次出现错位现象,导致解码发生错误,进而影响重建的速度和精度。相移法同样也是时间编码方法,具有周期性,重建的空间精度较高 [5] ,但相移法解码时对像素值得取值范围有限,导致无法完全编码空间中的某些点 [6] ,并且在选择相位步数时,步数越多能够减少相位偏差,提高测量精度,但是步数越多会影响重建的速度 [7] 。因此,有学者提出了相移码结合格雷码的方法 [8] ,其具有很好的鲁棒性和抗噪性,能对表面复杂的物体进行较好地重建。
Wu等人 [9] 提出通过对格雷码解码得到的条纹阶次能够用来对包裹相位进行展开,但在测量中,容易受到无关背景像素点的影响,降低相位解包的速度;Wang等 [10] 提出了一种传统的空间相位解包法和格雷码法相结合的方法来处理相位展开误差,但速度相对很慢;王中兴 [11] 提出了一种基于十六步相移法的三维重建系统,能够较好地完成对待测物的重建,但投影图片数量相对较多;Laughner等 [12] 提出了一种额外投影一黑一白的图案,来对格雷码二值化进行处理;孙学真等 [13] 提出了互补格雷码编码方法,该方法能够对误码位置进行修正,但仍可能存在一些相邻错位点。
基于以上分析,通过结合这两种编码方式,本文设计了一种六步相移结合互补格雷码的方法,利用最大类间方差法对投影的全白图案进行处理,得到掩码图像提取感兴趣区域,消除无关背景区域,然后通过融合的编解码方法,求出条纹阶次,从而展开包裹相位,对于展开包裹相位出现的一些相邻错位点,采用高斯滤波进行消除,最终实现对待测物体高精度的三维重建。
本文首先对整个系统进行了介绍,包括方案与硬件选择、系统标定、六步相移结合互补格雷码的相位展开原理,然后通过对标准多圆柱和大卫头像模型进行实验,证明了所提方法的可靠性,最后对本文进行了一个总结和展望。
2. 系统介绍
2.1. 方案与硬件选择
目前主要有两种常见的三维测量系统,即单目结构光系统和双目结构光系统。单目系统只需一个相机,成本较双目更低,同时单目系统相对更简单,计算量也更小。综合考虑,本文采用单目结构光系统进行设计。
整个系统的硬件主要由DLP投影仪、CMOS相机和计算机组成。DLP投影仪选择的是北京闻亭泰科PRO6500投影仪,分辨率为1920 × 1080,相机选择的是FLIR公司生产的BFS-U3-50S5M-C,分辨率为2448 × 2048,对采集到的结构光条纹输出到计算机进行对应的处理,计算机CPU为i7-8700U。
2.2. 系统标定
对于后续的结构光三维重建,我们需要利用相机采集图像信息来得到三维空间中物体的几何信息,而空间物体表面某一点的空间位置与采集的图像中对应点之间的关系是由成像的几何模型决定的,这些几何模型参数就是系统标定参数。系统标定主要包括相机标定和投影仪标定,通过求得相机和投影仪的内参和外参,根据标定结果与后续计算得到的相位信息,完成物体的三维重建。
2.2.1. 相机标定
相机成像模型常常可以看作一个小孔成像模型,如下图1所示,其成像过程主要涉及到坐标系之间的转换,包含世界坐标系、相机坐标系、图像坐标系和像素坐标系。
通过求解相机成像的几何模型参数即求得相机参数,也就是世界坐标到像素坐标的映射。对于理想相机模型,通过相关坐标系的转换,可以求得世界坐标点到像素坐标点的转换:
(1)
式中,
和
为x轴和y轴上的归一化焦距,
和
是图像的中心点,矩阵
即相机的内参矩阵,
即相机外参矩阵。
2.2.2. 投影仪标定
本实验采用相位法对投影仪进行标定,投影仪通过投影光栅图,计算出世界坐标系与投影仪成像平面之间的关系。首先,放置好相机和投影仪,保证标定过程中位置不变,将设计好的光栅图投影到标定板上,相机采集图像,然后变换标定板的位姿,重复前面的步骤采集多组数据,先对相机进行标定,获得相机的标定参数,并对每个标定板的角点位置信息进行保存,然后对采集到的图像进行处理,得到绝对相位图,获得投影仪图像平面上的二维像素坐标 [14] ,根据每张图片的角点信息和绝对相位图,通过局部单应性矩阵 [15] 的变换,计算出每个角点对应的投影仪像点坐标,最后根据像点坐标和标定板角点世界坐标,利用标定相机的方法标定投影仪的内外参。局部单应性矩阵的计算如下:
(2)
(3)
式中,p是相机图像平面的角点坐标,q是对应投影仪图像平面的角点坐标;根据
,可将目标角点
转换到投影仪图像坐标点
。
根据该方法求得的标定结果精确度高,标定过程相对简易,采集到的图像能够同时用来进行相机和投影仪标定。
2.3. 六步相移结合互补格雷码相位展开
2.3.1. 传统格雷码相位展开原理
相移编码可以通过不同相位的余弦函数来设计产生不同相位的编码图。因为相位具有连续性的特点,同一周期内每个空间点的相位值具有唯一性。首先对相移编码图求解得到包裹相位图,利用设计的六步相移法计算包裹相位,六步相移条纹图通过公式(4)生成 [16] :
(4)
式中,
为相机采集到的第n张图片像素点的灰度值,
为该点背景光强度,
为调制度。包裹相位通过公式(5)得到 [17] :
(5)
由于包裹相位是通过反正切函数求得,所以求得的值被截断在
中,不是连续的相位,所以需要进行相位展开。对于传统格雷码的方法,首先对投影仪的格雷码图进行解码得到条纹阶次,将二值化后的格雷码条纹
由高位到低位按位异或得到二进制序列
,如公式(6)所示:
(6)
然后对其计算转换为为十进制条纹阶次,如公式(7)所示:
(7)
最后利用公式(8)完成对包裹相位的展开,绝对相位
如下式所示:
(8)
六步相移结合格雷码的相位展开原理如图2所示:蓝色折线代表六步相移解码得到的包裹相位,红色折线为格雷码解码得到的条纹阶次,黄色直线为最终的展开相位。

Figure 2. Schematic diagram of phase unwrapping based on traditional Gray code method
图2. 传统格雷码法相位展开原理图
2.3.2. 格雷码快速解码
格雷码因其相邻数字的编码只有一位不同,可以减少解码的错误率,格雷码求解也就是将其转换为十进制条纹阶次,从而对包裹相位进行展开。想要得到较好的三维重建结果,要预先消除图像无关背景区域像素点,避免其影响解码的精度,同时有利于提高相位展开的速度,并且对采集的格雷码图要进行准确的二值化处理。
为了快速相位展开,预先对无关背景像素点进行消除,提取感兴趣区域。通过向待测物体投射一张全白图案,采用最大类间方差法 [18] 对其进行处理,得到二值图像,将其作为掩码图像提取感兴趣区域。假设图像的分割阈值为T,小于T的像素点为目标区域,其数量占整个图像的比例为w0,平均灰度为u0;大于T的像素点为背景区域,数量占整个图像的比例为w1,平均灰度为u1,图像总的平均灰度为u,利用公式(9)可以得到目标区域和背景区域的类间方差:
(9)
当g最大时,可以认为目标和背景差异最大,此时的阈值T为最佳阈值。如图所示,为待测物体掩码图像,剔除了无关背景区域,在目标区域进行后续解码,减少了相关的计算量,加快了解码的速度。如下图3(a)所示为投影的全白图案到标准多圆柱上,图3(b)为通过上述方法生成的掩码图像,可以看到,无关背景像素点能够较好的被剔除掉。
(a)(b)
Figure 3. (a) Standard multi-cylinder all-white pattern; (b) Mask image
图3. (a) 标准多圆柱全白图案;(b) 掩码图像
对于格雷码二值化,最常见的方法就是固定阈值法和局部自适应阈值法。因为图像中的像素点对光的反射率不同,所以采用固定阈值法,效果欠佳。选择局部自适应阈值法,利用公式(10)将投影的相移图案的平均灰度作为阈值,如下所示:
(10)
式中,
表示阈值,
为第i张相移条纹图的灰度值。然后利用公式(11)进行二值化,如下所示:
(11)
下图4(a)为随机选择的某幅初始格雷码图,图4(b)为格雷码二值化图,由结果可知,较好地完成了对格雷码的二值化处理。
(a)(b)
Figure 4. (a) Initial Gray code image; (b) Binary image of Gray code
图4. (a) 初始格雷码图;(b) 格雷码二值化图
2.3.3. 互补格雷码相位展开
在实际测量过程中,由于环境噪声等的影响,格雷码条纹阶次与包裹相位容易发生错位 [19] ,导致展开相位出现错误。所以设计了一种互补格雷码的方法,本文选取的是四幅传统格雷码,在4位传统格雷码的基础上,额外投射5位格雷码的最后一幅图作为互补格雷码,前4张格雷码的条纹阶次为k1,第5张互补格雷码的条纹阶次为k2,两个条纹阶次互相错开了半个周期,并且结合高斯滤波,可以有效地滤除高斯噪声,避免边界解码出现的错误,利用公式(12)进行相位展开,如下所示:
(12)
六步相移结合互补格雷码的相位展开原理如图5所示:蓝色折线代表六步相移解码得到的包裹相位,红色折线为传统格雷码条纹阶次,黄色折线为互补格雷码条纹阶次,紫色直线为展开相位。

Figure 5. Schematic diagram of phase unwrapping based on complementary Gray code method
图5. 互补格雷码法相位展开原理图
3. 实验结果及分析

Table 1. Camera intrinsic calibration results
表1. 相机内参标定结果
首先对相机和投影仪进行标定,基于张正友标定原理 [20] [21] 标定出相机和投影仪的内外参数。相机内参标定结果如表1所示。
投影仪的内参标定结果如表2所示:

Table 2. Projector intrinsic calibration results
表2. 投影仪内参标定结果
系统的外参标定结果即旋转矩阵R和平移向量T如下:
通过标定实验结果可以得到,相机的标定误差为0.050391,投影仪的标定误差为0.039728,标定的结果较理想,符合后续三维重建的要求。
然后将设计好的光栅图投影到待测物体上进行实验,本文三维重建实验分为两部分:仿真实验和实物三维重建实验。
3.1. 仿真实验
将设计的6幅六步相移条纹图和4幅格雷码图以及1幅互补格雷码当做输入图像,求解包裹相位和展开相位,实验用MATLAB进行编程实现解码,结果如图6所示,能够很好的将包裹相位展开为连续相位。
(a) (b)
Figure 6. (a) Wrapped phase map; (b) Unwrapped phase map
图6. (a) 包裹相位图;(b) 展开相位图
3.2. 标准多圆柱测量实验
利用本文提出的方法对标准多圆柱多次进行三维重建,其某次实验的某两个角度的点云重建的结果如图7所示:
(a) (b)
Figure 7. (a) Point cloud reconstruction result at a certain angle 1; (b) Point cloud reconstruction result at a certain angle 2
图7. (a) 某角度1点云重建结果;(b) 某角度2点云重建结果
通过多次测量实验,测量每一个圆柱的高度,计算其平均误差大小,其中从上至下,标准多圆柱的三个高度分别为h1、h2和h3,其结果如下表3所示,单位为mm:

Table 3. Multiple measurement results of standard multi-cylinder at three different heights
表3. 标准多圆柱三个高度的多次测量结果
由上表可知,三个高度的平均测量误差为0.17 mm、0.15 mm和0.22 mm,符合预期效果,验证了本文所提方法的有效性,测量精度较高。
3.3. 大卫头像模型测量实验
为了更进一步地验证本文所提的方法,通过对更为复杂的大卫头像模型进行三维重建,其中某两个角度的点云重建结果如图8所示,图9为具有彩色信息的大卫头像模型整体点云图以及放大后的局部点云图,纹理信息更加明显,从实验结果可知,对于复杂的物体,重建的结果具有较高的精度,能够较好地还原待测物体的表面形貌信息。
(a) (b)
Figure 8. (a) Point cloud reconstruction result at a certain angle 1; (b) Point cloud reconstruction result at a certain angle 2
图8. (a) 某角度1点云重建结果;(b) 某角度2点云重建结果
(a) (b)
Figure 9. (a) Overall point cloud map; (b) Local point cloud map
图9. (a) 整体点云图;(b) 局部点云图
4. 结语
本文设计了一种基于互补格雷码结合相移法的三维重建系统,通过六步相移法获取待测物的包裹相位,利用最大类间方差法对投影的全白图案进行处理,将得到的掩码图像用来消除无关背景区域,减少了背景干扰,加快了相位展开的速度,提高系统的鲁棒性,利用改进的格雷码方法对其进行相位展开,结合标定参数,完成待测物的三维重建。实验结果表明,本文设计的方法能够很好地完成对物体的三维重建,精度能达到微米级。但本文只对物体的单个角度进行了三维重建,今后的工作可以对物体进行多个角度的数据采集,完成对物体的全貌表面重建。同时,可以研究以更少的投影图案去完成三维重建。