王 子,吴振宇
(1.安徽理工大学空间信息与测绘工程学院,安徽 淮南 232001;2.江苏海洋大学海洋技术与测绘学院,江苏 连云港 222000)
伴随着三维重建研究领域的不断发展,传统的主动式基于激光雷达获取点云数据三维重建已经逐渐发展成为基于计算机视觉的被动视觉三维重建方案。在城市的大规模场景三维重建方面,基于被动式视觉三维重建具有成本小、还原度高、建模完整、场景真实度高等优势,目前已发展为大规模场景三维重建的最优方案之一[1]。
获取空间物体的三维空间结构和图像的三维信息方式主要包括主动式与被动式两种。对环境中真实景物进行还原的主动式三维重建技术已相当成熟且被广泛应用,但存在需要扫描仪等高成本的重建设备、受外界环境影响大、对重建目标物体要求高以及后续实验结果分析不是特别简便等劣势。而基于被动式的三维重建技术是对无人机航拍影像进行重构,通过间接的方式与其涉及的相关算法获取图像的三维点云信息,最后经过表面重建还原其真实场景[2]。
目前,已经有Pix4D,Altizure,smart3D等无人机建模商业软件推出,上述软件在无人机影像建模中均取得了不错的效果。被动式的重建方法具有成本低、对于重建目标的要求不高、灵活性高、操作简单等特点,由此推动了视觉三维重建方案在无人机航拍影像三维建模的研究与应用[3]。
运动恢复结构 (Structure From Motion,SFM)算法是被动式视觉三维重建的核心算法之一,其可从无序图片中重建场景的三维结构稀疏点云,同时恢复相机的位姿,是多视图视觉三维重建的重要一步。曹海春[4]采用Context Capture软件结合人工干预的方法对消费型倾斜无人机拍摄的城镇局部区域图像进行三维重建,最后对生成的三维模型精度评定,结果表明,此方法能够满足精度要求,且建模效率提高。段建伟[5]采用增量式单目SFM算法,构造函数图像优化模型,对相机位姿和图像三维点云进行重建优化,实验表明,三维重建结果得到了极大改善,具有良好的视觉结果。何海清等[6]提出一种基于SFM算法结合耦合单-多旋转平均迭代对低空影像三维建模结果进行优化的方法。王楠[7]针对建筑物的建模问题,采用SFM算法具体研究了三维重建方法,提出了一种随机抽样一致性(RANSAC)改进算法,最终获得了精度更高的三维重建结果。张平等[8]基于SFM算法配合CMVS,PMVS算法对建筑物三维点云重构进行了研究,实验结果表明此方法能够有效地提取点云信息。陈辉等[9]采用基于机光扫描和SFM算法相结合的非同步点云三维重构方法对建筑物的三维点云信息进行融合,实现了复杂场景的重建。
本文针对无人机航拍影像三维建模问题,基于无人机正射航拍影像进行完整流程的三维重建实验,探讨SFM算法在三维建模中的应用,其基本技术路线见第105页图1。
图1 基于SFM算法对无人机影像数据重建流程
基于SFM算法的三维重建的第一步是影像特征的提取与匹配,其主要目的是提取和匹配不同视角下多视图像间对应的相同特征信息点,主要过程包括提取图像特征子、生成描述子、匹配特征点、去除外点、消除误匹配等。目前,在图像特征点的匹配上已经有很多成熟算法,如SIFT,SUFR,FREAK,FAST和ORB等。但因考虑到三维重建在稳健性、模型完整性、高效性、重建模型质量及其在精度上存在的问题,重建过程中一般采用尺度不变特征转换 (Scale-Invariant Feature Transform,SIFT)算法来进行特征提取,此算法在1999年由David G Lowe[10]在期刊上发表。SIFT算法实现特征点匹配的主要流程有以下步骤。
1)DOG尺度空间的极值检测:首先确定图像的尺度空间,即采用高斯核原始图像滤波后生成卷积运算后的尺度空间图像。用公式表示为
式中:L(x,y,σ)为尺度空间函数;σ为尺度因子;G(x,y,σ)为高斯核函数;*为卷积运算符;I(x,y)为输入图像。高斯核函数的表达式为
在空间尺度建立后,对该空间内的极值点进行检测,将检测到的极值点作为待确定的关键点。
2)定位关键点并确定特征方向:在候选的极值点中,需放弃掉低对比度不稳定点以及边缘响应点来得到位置与空间尺度更精确的关键点。在确定关键点之后,统计其邻域内的关键点梯度信息,最后获取特征点的主方向。
3)生成特征点描述子并进行特征点匹配:即以特征点为中心,在其邻域内建立一个128维度的特征向量。首先建立一个4×4大小的区域窗口,每个子区域都包含4×4个像素点且每个子区域的像素点都有8个梯度方向,统计这8个方向的梯度信息,最终获得4×4×8=128维的特征向量。采用欧式距离法对各关键点的特征向量进行匹配,最终建立与目标建筑物间的对应关系[11]。
SFM算法是一种基于各种收集到的无序图片进行三维重建的离线算法,在完成图像的特征点提取与匹配工作之后,就可以对目标物体进行稀疏点云重建。SFM算法的原理见图2。
图2 SFM原理图
图2为同一个世界坐标系下的某一空间点在多个相机不同坐标系下所成的图像,空间点X与投影点X1,X2,X3满足的关系式为式中:F为基础矩阵,然后利用基础矩阵F与本征矩阵E分解计算图像的位姿[R T],从而计算出空间点的三维坐标,获得建筑物的稀疏点云。但是在进行稀疏三维重建过程中,由于陆续不断添加新的图像,计算所产生的误差会逐渐积累,此时需要采用光束平差(Bundle Adjustment,BA)算法[12],其目的是最小化重投影误差。根据误差公式
式中:pi为损失函数;fi为代价函数;xin为需要优化的参数。
BA算法是一个不断迭代的过程,在进行第一次迭代计算过后,自动将所有的三维点反向投影到图片中,若计算出的坐标值大于阈值,即需把此点去除掉。反复重复以上步骤,得到所有像片的三维点云数据及其位姿,最后获得三维重建成果[13]。
基于SFM算法的三维重建点是由特征匹配提供的,这些匹配点天生不密集。重建后所得到的模型存在较多空洞,点云数量过于稀疏且基于此算法只能粗略地描绘规则物体的三维结构,因此需采用基于多视图密集重建(Multi View Stereo,MVS)算法[14]来对不规则物体以及目标对象的细节特征来进行密集点云重建。MVS算法不同于SFM算法,它对于反应目标建筑物的细节特征和物体的几何信息更加真实准确,几乎能够匹配和重建所拍摄图片中的每个像素点以及三维坐标信息,且此方法重建出的三维模型点云数量更多、更密集。其对相机拍摄到的多视图影像间具有相同的三维几何信息,而在三维几何结构部分存在一定的极线几何约束。基于这种约束,寻找两张图片上的同一点,再判断此点是否为同一点,最后形成空洞更小的稠密点云。
泊松重建主要过程有定义八叉树、设置函数空间、创建向量场、求解泊松方程、提取等值面。它的核心思想是通过将物体表面的离散样本点信息转化到连续表面函数上,从而构造出Watertight的隐式表面。如果在空间中区分一个表面,可以直观地理解为表面外和表面内。它采用隐性拟合的方式对点云模型的表面信息进行等值面提取,从而得到具有更精确的细节特性和良好几何实体信息的表面模型,最后根据SFM算法生成的点云数据和相机位姿及其图像的RGB数据进行纹理映射,得到最终的目标模型[15-16]。
本实验将学校某建筑物及其周围环境作为重建目标,利用小型旋翼无人机获取实验目标的正摄影像图122张,使用Ubuntu 16.04系统,4GB RAM的电脑,采用openMVG和openMVS开源方案进行三维重建,利用SIFT算法对影像进行特征提取和匹配实验,共提取特征点106 420个;再选取一张不同视角但和该影像有重叠部分的图片,进行特征点匹配实验。
使用openMVG对点云进行稀疏重建,共得到点云数量98 903个,使用Meshlab软件将点云打开,见图3。可以看出,该结果仅仅只能够反应出目标的大致轮廓,目标物体表面不清晰,不能够具象地体现出建筑物实际情况且模型表面仍存在较多空洞区域,在细节方面还有不少缺失。在实际大规模场景应用方面仍存在较大问题,因此实验下一步需对稀疏点云稠密化。
图3 重建目标的稀疏点云
使用openMVS进行密集重建,共得到点云数量6 371 991个,见图4。由图4可知,经过对点云范围约束后的密集重建所获得的模型表面细节清晰,目标建筑物的真实度还原性更高,重建效果更好。该稠密点云对目标环境的部分细节有了很好的呈现。
图4 稠密点云图
使用泊松算法对稠密点云进行表面重建,再基于SFM算法对相机位姿进行纹理映射,最终得到的结果见图5。
图5 纹理映射后最终生成的三维模型
通过研究基于SFM算法对无人机航拍影像的目标物体进行三维重建,由以上建模过程可知,本文所采用的重建方法可以对目标建筑物的三维结构快速准确地获取,且获得的影像点云信息丰富。通过对影像特征点提取与匹配以及点云的稀疏重建与密集重建,能够得到目标清晰的外形轮廓,相比传统三维模型生成方法,基于SFM算法所获得的三维重建模型在真实场景的还原度、建模完整性、建模成本与效率上有明显优势。但是,由最终生成的模型可知,在结构上仍有细节上的缺失,其原因与相机的拍摄角度有关。实验数据仅仅采用无人机的正射影像,所采集重建目标的图像数量不足且获取影像信息不全,从而导致最终模型结构不完整。因此在此方面仍需进一步深入研究。