赵红蕊,秦进春,2,谭琪凡
(1.清华大学 土木工程系,北京 100084;2.西安测绘研究所,陕西 西安 710054)
多视图三维重建技术是快速便捷获取大范围空间信息的重要手段。面向各类应用场景,通过与其他硬件、软件、算法融合实现广泛应用,目前已在事故应急救援[1]、森林监测[2-3]、海浪监测[4]、人脸重建[5-6]及人体扫描[7-8]等众多方面得到应用。在土木工程领域也得到探索性的应用,例如建筑[9-10]、道路[11-12]和桥梁[13]等。最热门的应用领域是建筑,最热门的应用场景是三维场布、施工部署、施工监测等施工管理场景。这些应用场景对建筑物模型的精度和细节要求较高,需要结合建筑物的特点进行三维重建或优化。
针对建筑物进行重建或优化典型的算法就是利用建筑物直线和平面独特的几何关系,识别图像中的建筑物特征。张恒等[14]通过形态学层级分析,在高分辨率合成孔径雷达(Synthetic Aperture Radar,SAR)影像中提取建筑物特征。张浩等[15]将支持向量机分类器(SVM)用于建筑物识别与分类,并对分类结果中的建筑物进行轮廓提取,对于建筑物重建具有重要指导意义。王燕妮等[16]提出一种局部特征结合形状轮廓匹配的建筑物特征算子,通过提取已知建筑物的局部特征点,依据尺度变化信息制定任意形状轮廓匹配相似度准则及映射函数,能够检验不同光照、不同尺度下的建筑物特征。通过以上各类建筑物识别手段,能够提取体现建筑物特性的纹理特征,并升级为表征实际物体的对象特征,更有利于对象建模及点云应用。
利用建筑物特征信息还能够简化传统三维重建问题,优化建筑物对象的重建算法。王思洁等[17]提出一种基于结构化场景的单张图像建筑物三维重建方法,先基于RANSAC算法及最小距离法分别解算灭点直线和灭点,然后基于平行平面、包含平行信息的任意平面和包含垂直信息的任意平面的平面模型解算三维坐标,实现三维建模。杨玲等[18]提出基于航空影像的半自动建筑物三维建模方法,首先建立基本模型库,选择模型组建建筑物,根据建筑物内部约束确定参数;然后提出依据影像上提取的建筑物边缘信息计算建筑物参数初始值的方法;最后使用广义点摄影测量理论平差计算建筑物的精确参数。
上述优化算法虽然已经取得了一定的效果,但是在建筑物模型精度和细节上还不能完全满足实际应用需求,并且对建筑物本身的特征信息挖掘利用还不够全面。为了解决这些问题,本研究基于多视图重建加密算法重建建筑物三维点云,以直线特征匹配优化为突破口,在三维重建过程中对建筑物特征进行加密,直接对建筑物模型结构和精度进行优化。
直线特征往往包含更多的语义和结构信息,且不易受到遮挡等因素的影响,更适宜三维模型重建。然而直线的几何复杂度也更高,准确提取和匹配的计算难度更大。本研究选择当前直线提取效果较好的LSD算法[19],自动提取亚像素精度的直线特征,并选择点特征辅助匹配的特征数算法匹配两视图间的直线特征。LSD算法如图1所示,首先计算各像素的梯度方向和梯度切线,然后生成单位切线矢量场,并将切线方向接近的像素区域连通作为候选直线段。
图1 LSD算法示意图
为便于划定直线范围,进一步建立区域的外接矩形,定义区域的主惯性轴方向为矩形的主方向。将区域内像素的切线方向与矩形的主方向进行对比,角度差异在阈值“±τ”范围内的像素称为对齐点(图2)。统计矩形内的所有像素的个数n和对齐点的个数k,应用Helmholtz准则反向验证待定区域能否划分为直线。这样采用LSD方法就能够提取出图像中稳定的直线特征,并记录矩形的起点、终点和宽度。
图2 外接矩形及对齐点示意图
(1)
由此定义特征数CN的值kn为
(2)
对于直线上已经选择的2个候选点,从图像左侧顺时针旋转至右侧,先经过的一端定义为起点K1,后经过的一端定义为终点K2,结合邻域内已匹配且不共线的3个独立点P1、P2、P3,利用CN共同定义线-点不变量,如图3所示,根据K1、K2、P1、P2、P3依次连接定义点U、V、W、T、M、N。其中隐含假设为:直线和3个独立点在同一平面上,故此方法更适合平面较多的直线匹配。在建筑物三维重建需求中,平面直线的分布较多,因此可以利用线-点不变量对建筑物三维重建进行优化。
图3 线-点不变量的定义
相比于点特征,直线特征包含信息更丰富,不稳定性更强,也意味着准确匹配的难度更大。为此引入CN算法[20],通过良好匹配的点特征辅助匹配直线特征提取。CN算法需要计算图像内各条直线间的交点,而从图中提取的直线数量较多时,匹配计算量极大,需要对直线特征匹配效率进行优化。利用LSD算法对试验无人机影像提取直线特征,共提取33 466条直线段,结果如图4所示。
图4 LSD特征提取结果
从提取结果中随机选取2 500条直线段并求解相互之间的交点。之后按照直线特征长度倒序排列,每50条直线段划分为一组,统计各组直线有效交点的数量,绘制直方图,如图5所示。
图5 直线段长度与交点数量的关系
由图5可知,有效交点数量随直线段长度呈现超线性的增长关系。同时,直线更长也意味着邻域范围更大,邻域内更易有足够数量的同名特征点,是特征数计算的良好选择。基于区域生长的直线提取算法,受到各类干扰因素影响,其结果中不可避免地包含大量短线段。试验统计LSD直线提取算法所得直线段的长度分布情况,如图6所示。直线段长度的分布区间为[5.16像素,970.42像素],而其中位数仅为21.43像素,表明直线段长度大多分布在短距离范围内,长距离范围内分布较为分散。由统计结果启发,筛选长度大于固定阈值的直线匹配,能在牺牲少量交点的条件下节省可观的时间消耗。考虑直线段长度的分布情况,本研究选择的阈值为80像素。试验对比筛选前后的计算时长和匹配直线数目为:阈值筛选前共匹配得到288组直线,耗时73.38 s;阈值筛选后共匹配得到254组直线,耗时18.21 s。合理筛选阈值仅消耗原始方法24.82%的计算时长,但保留88.19%的匹配结果,提升了计算效率。
图6 直线段长度分布
CN算法依赖直线邻域内的特征点信息,无法处理特征点数量较少的情况。本研究在重建密集点云的基础上,能够有效扩展低纹理区域的密集匹配,足够为直线邻域提供合适的特征点信息。与此同时,还可根据直线间交点辅助直线的多视图匹配,通过交点的重投影误差筛选错误匹配,深入利用点特征辅助直线特征匹配。
根据PMVS算法输出的密集点云坐标,以及稀疏点云重建阶段恢复的相机投影矩阵,容易计算密集匹配点的图像坐标。图7对比了加密前后匹配点的数量和分布情况,特征点经过200倍降采样处理。
图7 加密前后匹配点数量及分布情况
基于加密匹配点重新匹配直线特征,匹配直线的数量也有明显增长(图8)。当然,由于直线特征匹配的复杂性,匹配直线的增加比例不及匹配点多。加密前后的直线匹配结果中均有明显的错误,还需剔除误匹配。
图8 加密前后匹配直线数量及分布情况
为解决直线特征误匹配和多视图匹配问题,选择利用直线上特殊的点代替直线。回顾CN计算过程,需要计算图像中各条直线的交点,并选择端点附近的交点作为特征数计算的候选点。相比于随机提取的端点,直线交点在多视图中的稳定性更强。而使用候选点代替直线端点,就能将直线匹配问题转化为点匹配问题。
检验点匹配的2个重要方式是对极几何关系和重投影误差。基于基础矩阵,计算多视图匹配点与极线交点的关系。基于相机投影矩阵,计算直线在各视图中的可视性,以及直线候选点的重投影误差。试验图像经过筛选后共得到299条匹配直线,绘制候选点的重投影及原始提取直线,如图9所示。所有直线候选点的重投影误差均方根为1.28像素。
图9 筛选后的匹配直线及其重投影
利用直线候选点重建空间直线特征,一方面能够提供更丰富的空间模型信息,另一方面直线特征的几何信息(如平行、垂直等关系)能够优化模型的空间结构。由于缺少空间点的真实坐标值,点云模型仅以重投影坐标误差为约束条件,难以准确判别模型的优劣。大量试验结果已经证明,光束法平差必须有良好的初始值作为保障,否则可能优化至局部最优而非全局最优[21]。换言之,哪怕重投影误差较小,也无法证明模型已经达到全局最优解。
直线特征几何信息的引入则为评价建模效果提供了新的标准,尤其是建筑物或建筑群场景的重建,空间直线具备特殊的三轴垂直关系。模型结果越接近三轴垂直,那么可认为参数计算越准确。反之,如果三轴直线偏离垂直关系,也可以通过优化三轴直线夹角,即三轴与对应平面法向量夹角,从而达到优化模型参数的目的。
提取的三轴垂直直线特征如图10所示,从建筑物外轮廓中提取的471、2 807、592号直线,应满足三轴垂直关系,分别定义为x、y、z轴。利用特征数算法计算直线候选点,能够得到三轴的方向向量。需要说明的是,由于向量的起点和终点自由,即使是空间异面直线也能够基于向量计算三轴垂直,等价于统一原点的三轴向量。
图10 提取的三轴垂直直线特征
内积运算描述向量之间的垂直关系,并可用于计算向量间夹角;外积运算描述向量之间的共面关系,并可用于计算向量平面的法向量。代入图10中示例,也即x×y得到xy平面的法向量,(x×y)z可得z向量与法向量之间的夹角,理想情况下夹角为0,即z向量为xy平面的法向量。
分别计算z-xy平面、y-zx平面和x-yz平面的夹角,数学关系可表达为
(3)
将三轴垂直的直线特征引入光束法平差,式(3)作为新的目标函数。对于直线特征而言,平差算法一方面需保证直线候选点的重投影误差仍然较小,另一方面应尽可能还原三轴垂直关系,趋于全局最优效果。
直线特征不仅能够优化模型结构,而且能够加密已有模型,考虑将直线拆分为离散点云的形式加入已有稀疏点云模型,并赋予各点RGB取值。一方面利用PMVS算法为直线离散点计算单位法向量,对接后续重建需求;另一方面直线特征引入了新的面片种子点,可改善密集点云的建模效果。
需要解决的问题是离散点的采样频率,采样过于稀疏可能无加密作用,而采样过密时相邻点可能无显著差异。经过试验探索,以20像素为间距等分参考影像上的直线投影,求解等分点的空间坐标,并通过双线性插值法计算各点的RGB值,计算过程如图11所示。
图11 直线离散点RGB赋值示意图
定义直线候选点为新的端点,从起点方向取间距为20像素的等距离散点。假设端点坐标分别为(u1,v1)和(u2,v2),其中u1 (4) 同理,假设端点的空间坐标分别为(x1,y1,z1)和(x2,y2,z2),空间直线长度为L。假设该离散点(xd,yd,zd)在空间上距端点(x1,y1,z1)长度为D,其空间坐标可以表达为 (5) 根据齐次坐标的相机模型x=PX,可以利用投影矩阵P重构一条连接相机光学中心和投影点x的反投影线,两视图的反投影射线交点就是空间点三维坐标X,可以将相机模型改写为向量外积的形式x×PX=0。将式(4)、(5)代入向量外积,即可求解未知数D。为进一步优化加密点坐标,还可根据重投影误差进行非线性优化。 之后采集平面坐标(ud,vd)处的四邻域整数像素,通过双线性插值确定离散点的RGB取值。参照稀疏三维点云ply文件的格式,补充直线离散点的空间坐标和RGB值。将输出结果代入PMVS算法进行点云加密。 为了验证算法的有效性,试验选择建筑物信息较丰富的5张无人机航拍影像重建三维点云,进一步提取直线特征优化点云数量和几何结构,单张无人机影像大小为6 000像素×4 000像素。 经过密集点云辅助提取和候选点筛选,5张影像共得到548条准确匹配的直线特征,其分布情况如图12所示。之后以20像素间距为标准加密直线离散点,548条直线共得到3 312个离散点。为验证离散点的计算准确性,对比原始直线和加密离散点的图像重投影,如图13所示。 图12 多视图匹配直线分布 图13 直线加密点重投影验证 原有稀疏点云中共计8 394个三维点,加入直线离散点后共有11 706个三维点。将直线加密前后的ply文件载入MeshLab软件观察效果,前后对比如图14所示。 图14 直线加密前后的稀疏点云对比 从试验结果可以看出,稀疏三维点云经过直线特征加密后,所含建筑物轮廓信息明显增加,但同时也难免存在误差,部分源于直线提取和匹配误差,部分源于离散点采样重建的计算误差。其中微小的计算误差将在密集面片要素优化过程中得到修正,少量可能出现的错误也将在面片过滤时被剔除,最终保留准确的匹配直线加密信息。 基于直线特征加密后的稀疏点云,再次使用PMVS算法生成密集点云。直线特征加密前,密集点云中共有996 614个三维点;直线加密后,再次生成的密集点云中包含1 004 057个三维点。相比于稀疏点云,密集点云的数量增长较小,主要是因为PMVS算法的面片扩展已经覆盖大多数像素,多数直线加密区域与密集点云已加密区域重合。不过直线加密点作为PMVS算法初始化面片的种子点,仍能有效优化加密区域的建模效果。 图15展示了此时的模型全貌,因试验图像数量和视角有限,所有由遮挡造成的模型空缺无法加密。如需进一步完善密集点云,需增加其他视角影像,改善地面建筑物之间的遮挡情况,或引入深度学习方法估计遮挡范围的空间表面。 图15 直线加密后的密集点云模型 仅针对直线二次加密后的点云模型,仍然是孤立的离散点形式,缺乏三维表面的连续性。为详细说明直线加密的效果,选择模型中具有代表性的局部模块,对比引入直线离散点前后密集点云的模型效果,如图16所示。可以看出,经过直线特征二次加密后,建筑物轮廓及其邻域内的模型细节得到改善。 图16 直线加密前后的密集点云局部对比 通过试验所用建筑物图像集合提取的空间直线具备特殊的三轴垂直关系,因此可将直线特征夹角引入光束法平差目标函数,重新优化相机和空间点参数,达到优化模型的目的。结合自动化聚类算法和人工交互方式,从图12中选择45条三轴垂直直线特征,以3条为一组计算候选点的重投影误差及三轴直线夹角。优化前,5幅图像上直线候选点的重投影误差均方根分别为1.27、1.36、1.73、1.68、1.42像素,优化后的重投影误差均方根分别为1.27、1.37、1.72、1.70、1.41像素,引入直线特征前后光束法平差的结果变化极小,仍维持较低误差水平状态。对比优化前后15组直线的三轴夹角情况,列于表1。 表1 优化前后15组试验直线的三轴夹角对比 对比发现,优化后的三轴直线夹角更小,证明了直线优化光束法平差的有效性。图17对比了结构优化前后的模型目视效果,侧视图和俯视图的对比均可表明,建筑物模型三轴垂直的关系明显改善。 图17 结构优化前后的模型效果对比 (1)为满足直线特征的多视图匹配和误匹配筛选,使用特征数计算时的直线候选点代替端点,将直线匹配问题转化为点匹配问题,对直线特征检测效率进行了优化。考虑到直线特征的几何信息,利用建筑物外轮廓线三轴互相垂直的特性,进一步优化模型参数。将直线特征拆分为等距离散点,加密稀疏点云特征,并重新生成新的密集点云。试验对比发现,经过直线特征加密的建筑物及其邻域建模效果得到改善。 (2)相比于传统三维重建方法,本文方法对建筑物重建的针对性更强,能够直接对建筑物模型进行优化,提升重建精度和效率。由于直线特征自身的复杂性,其准确匹配问题目前仍未得到有效解决。特征数算法固然提升了直线匹配的准确率,但计算效率偏低,而且最终准确匹配的直线数量仍然有限。下一步需深入探索直线匹配的优化方案,进一步提升直线匹配和最终建模的效果。4 试验结果与分析
4.1 稀疏点云优化前后对比
4.2 密集点云优化前后对比
4.3 建筑物模型结构优化前后对比
5 结 语