郑亦然, 程 健
(中国科学技术大学 信息科学技术学院,安徽 合肥 230026)
近年来,国家正逐渐重视和加大对实验室的建设,我国各个领域的实验室资源已经非常丰富和完善,建立了科研型、教学型、公共服务型、专业测试型、化验检验型等不同种类的大型实验室。实验室系统一般由多台电子计算机以及各种复杂的仪器设备组成。大型实验室系统占地面积巨大,运行环境复杂,运行条件严格,现场可能存在危险或存在距离远等其他原因导致的场地不可达情况,学生通过实验室系统可能很难有直观的认识。因此利用三维重建技术来还原实验室现场设备的工作状态和运行情况,在远程端就能快速熟悉了解设备的运作原理和工作过程,提供沉浸式的用户体验,能够在一定程度上降低实验室资源消耗,提高实验室的开放性和智能化,具有重要的现实意义。
目前,最为常见的三维重建方法主要有如下3种:基于深度传感器的重建、基于深度学习的重建和基于多视图的重建[1]。其中,基于深度传感器的重建方法是通过深度传感器和RGB图像完成重建[2],然而该方法对硬件设备要求高,受距离限制大,并且需要事先对重建场景进行扫描,灵活性低,并不适合完成大规模的场景重建任务。随着人工智能和深度学习等相关技术的迅速发展和不断更新,一些基于深度学习的方法迅速崛起,如Yang等[3]提出的换卷积编码-解码网络,Tatarchenko等[4]提出的前馈网络,Reigler等[5]提出的OctNetFusion网络。但是为了获取更好的重建模型,基于深度学习方法需要输入大量的训练数据,且网络训练对硬件的设备要求较高,会耗费大量的时间,并且前期工作仍然依赖一些深度传感器。而基于多视图三维重建方法是将多个视角拍摄的待重建物体的图片作为输入,通过特征提取和匹配后完成重建,对硬件设备要求较低,输入仅仅需要RGB图像,灵活性好;不需要长时间的训练,实时性好;适用于各个场景,鲁棒性强。本文利用基于多视图三维重建方法的优点,研究了基于多视图重建方法的整个流程,改进了基于SIFT(Scale Invariant Feature Transform)的匹配效果,并最终在实验室搭建好的原子氧束能谱测量仪上进行了测试并完成了模型的重建,解决了系统因为高压强电等危险而导致学生无法直观了解工作原理和设备状况的问题。
基于多视图的三维重建方法就是将多个视角拍摄的待重建物体的图片序列作为输入,最后得到计算机所能表示的三维模型。David Marr的计算机视觉理论框架指出,计算机视觉系统的输入应是一系列的二维图片,输出能定性表示空间场景的三维模型。多视图的三维重建方法又可分为基于特征区域生长的重建算法、基于体素的重建算法和基于深度图的重建方法。
特征匹配算法中常用的特征方法有:Harris特征[6]、SIFT特征、SURF特征[7]、ORB特征[8-9]等。
基于多视图的三维重建过程中,特征的提取和匹配对重建结果至关重要,直接影响到重建模型的最终效果。SIFT特征是图像的局部特征,具有尺度不变性和旋转不变性,对亮度变化、视角变化、仿射变化能保持较好的稳定性,对噪声抗干扰能力较强。所以选用SIFT方法来进行特征的提取和匹配。其主要步骤如下。
(1) 生成灰度图像。SIFT方法根据灰度理论中的归一化思想,生成灰度图像,去除色彩信息而保留亮度信息。以此来保证其亮度变化不变性,并且降低提取特征和匹配的时间代价。
(2) 构建尺度空间。一幅图像在不同尺度下可以得到不同的细节特征,为保证SIFT方法的尺度不变性,需要构建不同的尺度空间来观测图像,进而获得更稳定的特征点。其图像的尺度空间L(x,y,σ)可由高斯核G(x,y,σ)与二维图像I(x,y)卷积获得:
L(x,y,σ)=G(x,y,σ)⊗I(x,y)
(1)
(2)
式中,σ为标准差。
(3) 特征点定位。通过对高斯差分尺度空间中的每个像素点与其在图像域和尺度域的所有相邻点进行比较,从而检测出图像分布在离散空间中的所有极值点,在此基础上删除对比度过低和具有边缘响应的极值点来增强匹配的稳定性,提高抗噪能力。
① 亚像素定位,对DoG(Difference of Gaussian)尺度空间函数进行泰勒展开,并对X=(x,y,σ)T求导,令导数为0,得到偏移量的精确位置。
(3)
(4)
② 删除其中低对比度的点,并将式(3)代入可得
(5)
(6)
(7)
(4) 确定特征点方向。由于SIFT特征点具有旋转不变性,需要通过图像的局部特征确定其方向。其梯度幅值m(x,y)和梯度方向θ(x,y)计算公式如下:
m(x,y)=
(8)
(9)
(5) 生成特征描述符。需要对精确定位的特征点进行描述,生成该特征点描述子,方便之后进行匹配计算。把特征点作为中心像素,计算邻域窗口内的所有点的梯度和方向。
(6) 特征向量匹配。通过对原图像与参考图像特征描述子之间的欧氏距离作为特征相似性的度量,并把最邻近距离UNN与次近邻距离USNN的比值UNN/USCN作为匹配依据进行特征向量匹配。
RANSAC算法是从一组包含异常数据的观测数据集中估计其数学模型参数的迭代方法[11],它是一种不确定算法,通过重复选择数据中的一组随机子集来达成目标。选定的子集设为局内点,并通过如下步骤进行验证。
① 通过预先假设的局内点建立一个模型,其模型参数均由假设点计算得出;
② 利用获得的模型去检测其他的数据;
③ 如果有足够多的数据点被归类为局内点,就认为建立的模型足够合理;
④ 用所有假设的局内点重新估计模型;
⑤ 通过估计局内点与模型误差评估模型。
重复以上步骤并通过增加迭代次数来提高获取正确结果的概率。
基于多视图的三维重建流程如图1所示,主要包括以下几个步骤。
① 采集数据。采用采集的实验室系统的实际图片集作为输入。
② 特征检测和特征匹配。将得到的图片用SIFT方法提取特征并进行匹配,利用RANSAC方法降低误匹配点。
③ 生成稀疏点云。利用运动恢复结构(Structure From Motion,SFM)迭代求解三维点坐标,重建3D模型的稀疏点云。
④ 生成稠密点云。利用多视图聚簇(Clustering Multi-View Stereo,CMVS)基于面片的三维多视角立体视觉算法(the Patch-based MVS,PMVS)[12]生成稠密点云。
⑤ 网格化:利用PCL泊松曲面重建算法(Poisson Surface Reconstruction,PSR)[13]将稠密点云生成包裹场景的封闭的模型,具有良好的集合表面特性和细节特性。
⑥ 模型修复和投影纹理。去除非流形边,将纹理映射到修复好的模型上,不需要事先生成纹理坐标,并且可以有效地避免纹理扭曲的现象。
图1 基于多视角三维重建流程图
本次实验用到的数据是以实验室已搭建完成的原子氧束能谱测量仪设备系统实际采集的数据集,数据集主要采用高清CMOS摄像头对测控机柜和电子枪仪器进行了拍摄,采集图片大小为3024像素×4032像素,采用环绕式取样。其中机柜照片共78张,仪器照片共96张,如图2所示。本实验在PC端进行,GPU型号为英伟达Geforce GTX1080,采用编译器为Visual Studio 2017并配置OpenCV 3.4.5视觉库。
图2 部分实际测控机柜和电子枪照片
利用SIFT提取测控机柜数据集图片1和图片2的特征,效果如图3所示。可以看出特征点对光照影响的抗干扰能力强,更多地集中在细节特征明显的地方,其特征点数和运行时间如表1所示。
图3 测控机柜SIFT提取特征点
表1 SIFT特征点检测
SIFT特征描述子是128维的特征向量,传统方法利用欧氏距离获得匹配相似度,将待匹配图像和基准图像中欧氏距离最小的点被认为是匹配的特征点,但是通过欧氏距离匹配得到的点会受到视角亮度变化的影响,实际结果准确度非常低。图4为测控机柜数据集中第1张和第5张照片匹配情况,存在大量的误匹配和交叉匹配现象。
图4 SIFT特征初匹配结果
在实际的应用中,可利用对最近邻和次近邻的比值UNN/USCN设置阈值来提高匹配准确度,比值小于该阈值时即可认为特征点匹配成功。阈值越小,得到的匹配点就越少,对应的成功率也越高,本文设置阈值为0.8。由立体匹配约束条件可知,两幅匹配图像中,每个点对应的匹配点最多只有一个。利用交叉过滤法和RANSAC方法对匹配结果进行优化,可以明显降低误匹配率,提高匹配的精度。图5为机柜数据集中机柜照片1和机柜照片5优化后的匹配情况。表2和表3分别为优化前和优化后的匹配情况。根据表2和表3可以看出,在优化删去了大量的错误的匹配对的同时只增加了很少的时间代价,误匹配率明显降低。
图5 优化后匹配结果示意图
表2 优化前匹配结果
表3 优化后匹配结果
通过CMVS可以对照片进行聚簇,降低簇数来优化稠密重建匹配所需的时间和空间代价,通过PMVS对图像簇进行重构,在局部光度一致性和全局可见性约束下,经过匹配、扩散、过滤后生成的点云具有真实颜色特性,而由该方法构建出的点云足够稠密,满足实验室规模场景重建。
利用点云的重构方法一般分为基于组合结构和基于隐函数两类方法。基于组合结构的方法对于噪声抗干扰能力较弱,当数据中噪声较多时构建的表面往往是锯齿状的,需要额外进行平滑处理;而基于泊松算子的隐式拟合可以通过构造等值面非常好的平滑近似含有噪声的数据。故本文采用泊松表面重构算法来生成多边形网格表面。
泊松曲面重构输入为PMVS生成的包含法线的点云数据集,包括点P和对应的内法线N,邻近未知模型的表面M,首先构造指示函数:
(10)
认为模型内部的值为1,外部的值为0。利用输入的有向点云估算向量场,使其梯度方向最接近向量场的方向,即minχ‖▽χ-V‖,并通过散度算子将式(10)转化为泊松方程,提取0等值面来拟合逼近表面,最终得到具有几何实体信息的模型。
接着,需要对生成的实体模型进行纹理uv映射。利用相机位置将模型坐标系转换到相机对应的图像空间,即该点对应的纹理坐标,通过该纹理坐标查询利用MeshLab生成输入图像的纹理值,最终将纹理投影到模型表面,本文选择分辨率为2048的纹理图。图6和图7分别是真实实验室机柜和设备数据集重建的结果。其中图6(a)和图7(a)为生成的机柜和设备的稀疏点云;图6(b)和图7(b)为利用PMVS生成的稠密点云,可以很好地表达机柜和仪器的特征信息;图6(c)和图7(c)为最终得到的三维模型。可以看出测控机柜和电子枪的模型重建效果较好,但是仍存在模型将部分背景也进行重建的问题。
图6 机柜重建效果图
图7 设备重建效果图
本文研究了基于多视图的实验室系统三维重建方法,并通过实际的实验室设备验证了该方法的有效性。利用RANSAC算法和交叉过滤法改进SIFT进行特征的提取和匹配,并在此基础上计算点云、获取等值面、修复模型、进行重建。实验结果表明,利用该方法可以有效地改进SIFT的误匹配率,具有较高的准确率和较好的重建效果,可以很好地还原危险、复杂的现场实际情况,如原子氧束能谱测控系统等实验室系统的实际情况。