周嘉俊,李勇,何明,刘凌杰
(河海大学 地球科学与工程学院,南京 210098)
随着社会信息化步伐的加快,三维建筑物模型作为数字城市的重要组成部分应用于生活的各个方面,然而城市中建筑物复杂多变,给整个城市的三维重建带来了困难。激光雷达(airborne light detection and ranging,LiDAR)能快速获取大范围区域表面采样点的三维空间数据,因此激光点云成为获取三维建筑物模型的重要数据源[1]。目前,国内外很多学者对利用激光点云进行建筑物的重建进行了大量的研究。Chen等[2]利用随机抽样一致性(random sampling consensus,RANSAC)算法对屋顶面片进行分割,然后利用基于泰森多边形的方法进行建筑物轮廓线的提取,从而完成建筑物的重建。Cheng等[3]通过屋顶特征直线的“分裂-合并”生成闭合的建筑物多边形,再用RANSAC算法拟合出建筑物表面。但是上述两篇文章都没有针对特定建筑物进行RANSAC算法优化,计算速度相对较慢。罗胜等[4]提出一种利用建筑物数据集与区域等级关系来保证多层建筑物屋顶轮廓一致的建筑物三维重建算法。但是无法完全消除相邻轮廓的规则化误差。周平华等[5]结合联通分析和平面生长提取建筑物的外轮廓,再辅以人工完成阶跃线的提取,从而完成建筑物的重建。但是人工的参与降低了自动化程度。Zheng等[6]使用模型驱动的方法,利用决策树将建筑物分类,使用静态力矩方程提取建筑物参数,完成建筑物重建。但是模型驱动使得重建依赖于模型库。
由于多层次建筑物在城市中普遍存在,且面片和轮廓线的提取算法仍旧有改进空间。本文针对此类建筑物的三维重建进行探讨,提出了一种此类建筑物的自动化重建方法,主要包含3个主要步骤:激光点云面片分割、轮廓线提取、轮廓线关键点提取与规则化。
RANSAC算法主要是用于从包含异常数据的样本中提取有效样本。由于RANSAC算法具有良好的鲁棒性,能精确识别正确的样本,从而广泛应用于点云面片的分割。李云帆等[7]利用结合高程差和坡度的三角形区域生长法对建筑物层次进行分解,提高RANSAC算法种子点选取的准确性,并提出了自动调节算法中关键参数的RANSAC算法。传统的RANSAC算法在点云面片分割处理上的基本思想是:①设建筑物点集为S,距离阈值为Tdis,最小内点数为TintP,迭代次数为K。②在点集S中随机选取3个点Pseed作为种子点,利用种子点构建平面模型M。③计算建筑物点集S中每个点到平面模型M的距离D,若D 尽管RANSAC算法能很好地分割建筑物点云,然而当建筑物点集数量较大时,计算速度将会快速下降。由于多层次平顶建筑物具有点云面片是水平的、点云面片之间具有一定高程差的特点,提出一种优化的RANSAC算法以提高处理效率。基本思想是:①设建筑物点集为S,距离阈值为Tdis,最小内点数为TintP,迭代次数为K,高程差阈值为Hdif。②在点集S中随机选取3个点Pseed作为种子点,若3个点构成的平面与XOY平面的角度差小于5°,则用这些种子点构建平面模型M,否则重新选取种子点(由于3个种子点构成的平面与XOY平面角度差小于5°,因此类似于墙面点构成的垂直于XOY的平面将不会被分割出来,从而达到剔除墙面点的目的)。③计算建筑物点集S中每个点到平面模型M的距离D,若D 针对多层次平顶建筑物优化的RANSAC算法在种子点的选取阶段进行了筛选,需要种子点构成的平面与XOY平面大致平行,从而不会分割垂直于XOY方向的平面,以达到提高算法效率、剔除墙面点的目的;优化的RANSAC算法避免了求出最大点云面片后,从总的点集中删除此面片重新迭代的过程,因此,优化后的RANSAC算法在此类建筑物点云面片分割的执行效率上具有显著提升。两组点云数据在传统RANSAC算法以及优化的RANSAC算法下激光点云面片分割的时间如表1所示,面片分割效果如图1所示。 表1 RANSAC算法点云面片分割效率 图1 屋顶面片分割结果 从图1(b)、图1(c)可以发现,传统的RANSAC算法会错误的将点数量大于最小内点数的墙面点分割为一个平面,而优化的RANSAC算法则能够很好地避免这个问题。 激光雷达点云数据是不规则的离散三维空间数据点,可以通过构建不规则三角网(triangulated irregular network,TIN)表达点之间的空间关系。李乐林等[8]利用建筑物等高线匹配提取建筑物的外部轮廓线。李云帆[9]等提出双阈值Alpha Shapes算法提取建筑物轮廓点。经过点云面片分割操作后,建筑物激光点云去除了墙面点;不同层次的激光点云被分割为不同的面片。分别为不同层次的点云面片进行Delaunay三角剖分,生成的TIN如图2(a)所示。从图2(a)中能看出,点云面片中间部分构成三角网的边都是两个三角形的边,即两个三角形的公共边,而位于建筑物边缘的边仅是一个三角形的边。鉴于上述的特性,可以通过判断构成三角网的所有边是否是公共边,从而提取出包含轮廓点的边,就能得到所有的轮廓点,如图2(b)所示。 基于上述排序步骤后,可在程序中生成轮廓线,如图2(c)所示。 图2 轮廓线提取 经过上面的处理后,得到的轮廓线是不规则的轮廓线,需要对轮廓线进行进一步处理,从而得到建筑的最终轮廓。主要包括:轮廓线关键点的提取、轮廓线的规则化。 轮廓线的关键点就是建筑物的重要转折点,关键点处轮廓线的方向会发生剧烈变化,因此可以通过检测每一个轮廓点处轮廓线转折的角度来提取关键点。由于可能存在错误的轮廓点,或局部点发生较大的转折,此方法可能会检测出伪关键点,即检测的关键点不是建筑物的重要转折点,如图3(a)黄圈中的2个红点,其中一个是伪关键点。一般来说建筑物的拐角处只有一个关键点,在图3(a)中的黄圈中,由于2个点都满足角度阈值,所以错误地产生了连续的2个关键点。针对上述的问题,本文提出了一个新的多层次平顶建筑物关键点提取算法:①设轮廓点集为S,迭代次数为K,距离阈值T,最大允许局外点数n(迭代次数K根据轮廓点的数量决定,图3(c)数据设置的k等于5 000;距离阈值T等于2倍平均点间距即可,图3(c)数据设置的T等于1.3 m;最大允许局外点数n大致等于轮廓点数的1/20,图3(c)数据设置的n等于8)。②在轮廓点集S中选取i个种子点(建筑物轮廓一般至少含有4个关键点,所以i的初始值设置为4),利用种子点之间间隔的轮廓点数以及第一个种子点到最后一个种子点之间包含的轮廓点数进行筛选,不满足条件则重新选取种子点。③每2个相邻的种子点构成一条直线L,计算相邻2个种子点之间的每个轮廓点到直线L的距离D,若D 上述算法能够有效地减少伪关键点的生成,并且能够抑制错误轮廓点的干扰。使用上述算法提取的轮廓线关键点如图3(b)中的红色点。 图3 轮廓线关键点提取 连接关键点就能得到建筑物的平滑轮廓线,但是还需要对轮廓线进行规则化。由于轮廓线关键点处的拐角通常是直角,取最长的边作为初始边,然后依次将相邻的边进行正交约束调整,完成轮廓线的规则化[10-11]。最终得到的建筑物轮廓如图4(b)所示。 将建筑物轮廓线赋予点云中的高程信息,完成建筑物的三维重建,最终模型如图4(c)所示。 图4 规则化及模型生成 本文针对多层次建筑物提出了一个新的三维重方法,主要过程包括激光点云面片分割、轮廓线的提取、轮廓线关键点的提取与规则化。其中激光点云面片分割使用的是优化的RANSAC算法,相对于传统的RANSAC算法点云面片分割,优化了种子点的选取以及避免了删除最优面重新迭代的过程,从而大大提高了算法的执行效率,且能有效地删除墙面点。轮廓线的提取是基于Delaunay三角网剖分进行的,能够精确提取建筑物的轮廓线。轮廓线的关键点提取采用了随机抽样的原理,能够较好地提取建筑物的关键点,并能抑制错误轮廓点的干扰,减少伪关键点的生成。2 基于Delaunay三角剖分的轮廓线提取
3 轮廓线关键点的提取与规则化
4 结束语