基于EinScan-S的编码结构光方法空间三维模型重建
草莓熊三维模型制作
本部分以草莓熊玩偶为例,展示利用EinScan-S软件,借助编码结构光方法制作三维模型的具体流程。
前期准备工作
在本次实验中未涉及EinScan-SE扫描头、转台、标定板等硬件设备与前期目标物体对应的拍摄、扫描图片获取工作;但是实际上,在我们开始电脑上的操作前,还需进行硬件安装、标定、白平衡测试(若选择纹理扫描)、物体扫描、亮度调节与保存数据等线下实际操作。经过上述操作后,方可得到目标物体模型初始图像数据。
软件配置与数据导入
打开EinScan-S软件,选择“EinScan-SE”选项,随后可以看到软件左上角出现“EinScan-SE”字样。
选择“固定扫描”工作模式,单击“下一步”。在可获取设备的情况下,应选择“新建工程”,从而开始扫描工作;而本次实验中,我们直接使用扫描后的模型开始操作,因此选择“打开工程”,并选择对应的目标物体文件。
手动拼接
通过上述操作,目标物体原始模型数据已导入EinScan-S软件中。下图为目标物体原始模型数据的预览图。如果初始模型数据的自动拼接有一定问题,可以通过手动调整的方式对这相应不重合的位置加以处理。在软件右侧菜单栏选择“手动拼接”模块,借助A、B视图三对点的位置自动将两部分拼接。但是由于此次建模所用的草莓熊玩偶扫描结果较好,因此选择跳过这一步骤的数据编辑。
数据封装处理
此时所得模型是由数以万计的点及其形成的细小面片所组成的实体,需要对模型表面加以封装处理,即将当前由点集合组成的模型表面转换为密闭的实体。封装分为“封闭模型”与“非封闭模型”,其中前者会将模型表面均完全密闭,后者则不会对原始模型表面未紧密连接的部分进行封闭。选择“封闭模型”,并在随后弹出的窗口中选择“高细节”以保留目标物体更多细节。
在封装结束弹出的窗口中,可以选择是否需要对所得模型表面加以简化。这里将简化比例选择为100,即简化后模型信息为原有模型信息的100%,亦即不进行任何简化。在这里考虑到草莓熊玩偶表面具有较为复杂的纹理结构,为防止这些细节消失,选择“锐化”选项。
得到最后的模型如下:
建模结果展示和分析
模型各角度展示:
模型定性描述
可以看到草莓熊玩偶的整体外形都被清晰刻画出,且没有发生明显的畸变。例如草莓熊背后的拉环、手臂等均被较好地还原。由于被建模物体是毛绒玩具,表面绒毛的起伏细节也被建模出来,但是整体较僵硬,可能是因为没有贴上纹理导致的。同时由于物体的底部未被扫描到,草莓熊的退部建模效果并不理想。扫描时旋转圈数较少也导致了草莓背后的标签未被较好的还原,但模型较使用侧影轮廓的建模方法,质量有了很大的提高。
可以发现,无论是面数、点数、模型的精细度,基于编码结构光方法重建的草莓熊三维模型均优于基于侧影轮廓构建的草莓熊三维模型。
模型定量描述
与3D SOM.软件尺子工具对所生成模型尺寸加以定量描述不同,本次实验所用EinScan-S软件将定量描述模块放置于“保存”阶段。
完成上述操作,在对模型亮度与对比度加以进一步适当调整后,选择“保存数据”功能;配置好文件名与路径等信息后,即可看到模型所对应长、宽、高尺寸数据。
如下所示,本次所制作的草莓熊三维模型长度为127.68mm,宽度为114.73mm,高度为146.76mm。
与此前的测量数据对比,此前测得草莓熊模型两手尖之间的距离为11.7cm,这个距离可以大致认为是模型的宽度,因此基于编码结构光方法的三维重建方法对于物体尺寸的还原也是比较好的。
编码结构光建模方法的基本原理和流程
基本原理
三维模型重建的方法可分为主动方法和被动方法两大类。主动方法主要以仪器直接去测量物体表面的三维信息,获得三维点云,再用点云算法重建物体的表面以及获得三维模型,主动方法可以提供较高精度的三维模型,但需要非常昂贵的设备。被动的方法主要研究如何根据相机在不同视角拍摄的图像序列进行物体的三维模型重建[1]。而编码结构光建模方法就属于主动的建模方法。
测量原理
图 1 为一个结构光系统的透视投影模型. 左侧为摄像机, \(o x y z\) 坐标系为摄像机坐标系, 其中 \(o\) 点为摄像机光心, \(x, y\) 轴 分别与像平面的 \(X 、 Y\) 轴平行, \(z\) 轴为摄像机光轴, 与图像平 面垂直, 光轴与图像平面的交点 \(o_i\) 就是像平面坐标系的原 点, 摄相机焦距为 \(f\) 右侧为投影仪, o \(o^{\prime} x^{\prime} y^{\prime} z^{\prime}\) 坐标系为投影仪 坐标系, 其中 \(o^{\prime}\) 点为投影仪光心, \(x^{\prime} 、 y^{\prime}\) 轴分别与投影仪图案 平面的 \(\mathrm{X}^{\prime} 、 \mathrm{Y}^{\prime}\) 轴平行, \(\mathrm{z}^{\prime}\) 轴为投影仪光轴, 与投影图案平面垂 直, 光轴与投影图案平面的交点 \(\mathrm{o}_{\mathrm{g}}\) 就是投影仪图像坐标系的 原点,投影仪焦距为 \(\mathrm{f}\).
由于摄像机光轴与像平面的交点为像平面原点, 不考虑 \(\mathrm{z}\) 坐标, 则摄像机像平面上一点 \(\mathrm{P}_{\mathrm{i}}\left(\mathrm{x}_{\mathrm{i}}, \mathrm{y}_{\mathrm{i}}\right)\) 在摄像机坐标系中 具有相同的坐标. 不失一般性, 令世界坐标系与摄像机坐标系 重合, 以场景中一点为例说明结构光系统的测距原理.
在摄像机透视投影模型中, 空间任意一点 \(P(x, y, z)\) 在图 像平面上的像 \(\mathrm{P}_{\mathrm{i}}\left(\mathrm{x}_{\mathrm{i}}, \mathrm{y}_{\mathrm{i}}\right)\) 为光心 \(o\) 和 \(\mathrm{P}\) 点所在直线 \(o \mathrm{O}\) 与图像 平面的交点. 用齐次坐标和矩阵表示透视投影关系 \({ }^{[1]}\) 有:
类似地得出投影仪的透视投影关系:
其中 \(\rho_{\mathrm{i}}=\mathrm{z}, \rho_{\mathrm{g}}=\mathrm{z}\). 在摄像机与投影仪坐标系之间存在如 下的坐标变换:
其中 \(R\) 和 \(T\) 别为\(oxyz\)与\(o'x'́y'z\)坐标系之间的旋转矩阵和原点间的平移矢量. 由 \((1) \sim(3)\) 式可以解出世界坐标系、 即摄像机坐标系下的空间点坐标:
对于一个标定过的结构光系统, \(M_c 、 M_p\) 已知, 即焦距 \(f f f^{\prime}\) 旋转矩阵 \(\mathrm{R}\) 和平移矢量 \(\mathrm{T}\) 等内外参数均已知. 如果能够实现 空间点在摄像机上的像点和投影仪上的投影点的匹配 (Correspondence), 即确定 \(P_i\left(x_i, y_i\right)\) 与 \(P_g\left(x_g, y_g\right)\) 对应关系, 则可 得到空间点 \(\mathrm{P}(\mathrm{x}, \mathrm{y}, \mathrm{z})\) 的坐标。
结构光编码原理
编码结构光是具有不同节距的一系列二值光栅, 将这三幅光栅投射在物体上, 被测空间被划分为8个区域, 根据各个点在不同图像中的亮度进行编码, 每个 区域由一个三位二进制编码表示, 这个编码是与该点 所处的周期相联系的, 因此可以由编码与周期的对应 关系得到被测物体上栅线的周期分布, 从而基本完成相展开过程。
上述测量过程中,摄像机与投影仪分别具有一个对应坐标系,在某一空间物体表面点对应投影仪坐标与摄像机坐标均确定的情况下,即可求解得到这一点的空间坐标。上述过程在不同结构光三维系统中可能所使用具体公式不同,但其所依据原理均为三角化。因此,为实现目标物体点位的空间坐标,需要将投影仪所产生光线图案与摄像机所得到投影图像相结合。这一过程即需要对投影仪投影图案加以编码——先将投影仪“编码”,再利用摄像机“解码”,从而将编码视作投影仪与摄像机之间信息沟通的“桥梁”。
编码方案包括四位二进制法、两位N 进制法、组合编码法、链式编码法、一位编码法等。本次实验采用的是红、绿、蓝、白四种颜色作为彩色条纹的基色,运用一位编码法对其编码法。
编码相位展开算法
编码相位展开算法分两类:空域相位展开、时域相位展开。空域相位展开是通过分析相邻元素的值调整折叠的相位,包括路径无关法、路径相关法两种方法;时域相位展开是根据不同时刻的相位图进行展开。本次实验采用的是TSPU算法,是一种空域相位展开算法。TSPU算法的核心是拓扑排序,利用所识别出来的线条的位置关系、按拓扑序以及颜色信息确定相位。
编码结构光方法流程
首先进行系统定标,并计算彩色条纹的三维坐标后,能够获取能够反映目标物体表面特征的点云文件;最后对点云文件进行相关后处理操作,并对所生成目标物体表面进行后续补充、优化、纹理映射等,即完成三维模型重建。
编码结构光方法与侧影轮廓方法比较
物体信息的获取原理方面
编码结构光方法与侧影轮廓方法均属于非接触式方法,即二者在执行时均无需直接与目标物体接触,而是采取利用一定仪器设备拍摄物体图像的方式(或许其亦可以视作一种广义的遥感)获取信息;其中,前者由于需要自身投影仪作为光源,因此属于主动方法;后者直接运用成像时太阳光或其它外部光源等,属于被动方法。
在侧影轮廓方法中,物体表面形状是通过获取多角度图像的物体侧影轮廓来构建。由于物体的内陷区域很难通过多角度图像来呈现其侧影轮廓线,因此其难免会丢失物体表面部分内陷区域信息。
在编码结构光方法中,目标物的外形细节通过投影光线在其表面的弯曲、形变等信息获取。这种方法能够获取到包括物体表面的内陷部分。因此对于外形细节变化丰富的物体而言,编码结构光方法比侧影轮廓方法的建模效果更好。
关于纹理信息,两种建模方法的纹理信息都是直接由普通拍摄方式获得图像中物体纹理贴图。
模型建立的原理方面
侧影轮廓方法使用多视角观察目标对象,各视角对应画面均可得到一条该物体侧影轮廓线,此侧影轮廓线与对应透视投影中心共同确定三维空间中一个一般形状锥体,而所观察对象物体便位于这一立体锥体内部。不断由不同方向增加目标物体的观测视角数量,可使得各对应锥体外形不断逼近对象物体表面,从而对目标物体外形特征加以空间三维可视化。
编码结构光方法利用摄像机获取投影仪所发射出光线在目标物体表面的分布特征,并通过对不同的光线分布方式加以编码,由此建立物体位置、投影仪坐标与摄像机坐标之间的联系,进而利用三角化方法求解目标物体当前位置所处的空间坐标信息;这一原理与双目视觉基本原理(即对视差进行三角化进而求解物体深度)较为近似。
操作流程方面
编码结构光方法与侧影轮廓方法均需要“定标操作”;这是由于两种方法均需依据所拍摄图像对目标物体位置加以确定。而侧影轮廓方法定标操作较为简单,仅需对拍摄多角度图像所用相机加以定标,目前已有基于平面镜的相机内参标定方法、基于几何的成角度平面镜装置相机标定方法等。而对于编码结构光方法,除了需要对相机定标外,还需要对投影仪的亮度、几何等加以定标。这是由于其编码往往与投影仪所辐射出光线的亮度、颜色或位置分布等具有关系。