利用密集匹配点云的建筑物结构矢量化方法
2022-04-20魏峰
魏峰
(广州市城市规划勘测设计研究院,广州 510060)
0 引言
建筑物作为城市环境的基本要素,其矢量信息是城市地理信息的重要组成部分。建筑精细信息分析、城市更新等领域对建筑物矢量信息提取提出了更高的要求,不仅需要对建筑单体进行矢量化重建,还需要对建筑物进行结构化分割,以获得具有阳台、飘楼等语义结构信息的建筑物矢量化结果,满足行业应用需求。此外,密集匹配点云作为低空摄影测量技术的成果,不仅满足城市空间地理信息的快速获取及更新,且较好地保持了建筑物的高精度三维信息[1]。因此,研究基于密集匹配点云的建筑物结构矢量化方法在理论和现实中都具有重要意义。
目前已有大量的研究集中在建筑物信息重建,其中,建筑物2D轮廓线重建是建筑物矢量化的关键步骤。常见的方法包括基于二维栅格图像的信息提取方法[2-3]以及基于三维点云的轮廓重建方法[4-5]等。此外,为获得更高的精度,以数据驱动的建筑物轮廓提取算法成为当前的主流方法,其过程大体分为边缘点检测和轮廓线规则化重建两个阶段。其中,Delaunay三角网[6]、Alpha-Shapes[7-8]、凸包算法[9-11]等算法是边缘点检测的常用方法。进一步,考虑绝大部分建筑呈现直线型和直角结构,已有学者基于最小二乘法的方法[12]、Hough变换方法[13]进行轮廓规则化重建。但是仅对单体建筑进行矢量化还无法满足应用需求,还需在单体建筑的基础上,对建筑物点云进行结构化分割,并进一步对各结构单体进行矢量化重建。
然而,点云的结构化分割结果不足以区分阳台、飘楼这类与建筑主体连接的局部结构,因此,本文基于建筑物结构单体点云提取结果,提出了一种包含阳台、飘楼等局部结构识别语义信息的建筑结构矢量化流程,通过屋檐改正及剖面特征追踪方法提取建筑结构单体点云剖面轮廓结构,并结合基于图像的剖面结构拓扑对比分析方法实现阳台、飘楼区域的自动识别和定位,进而获得建筑物结构矢量化结果。
1 建筑物结构单体点云提取和轮廓重建
1.1 建筑物结构单体点云提取
通过倾斜摄影测量技术获取的密集匹配点云包含了场景中的各类地物,因此首要步骤是提取建筑物点云。闫利等[14]提出的建筑结构单体提取算法不仅考虑了复杂场景中密集匹配点云存在插值产生的噪声点,同时能够对建筑单体进行分割,有效支撑后续建筑结构矢量化信息的重建。
该方法在利用布料模拟滤波(cloth simulation filtering,CSF)算法进行点云滤波的基础上,通过法向量计算,将非地面点云分为水平点云和立面点云两类,并对水平点云进行点云聚类,实现点云面片的分割;进一步,对于点云面片中存在的非建筑屋顶面部分,将点云面片投影至二维平面格网化并结合立面信息及面片几何特征将非屋顶面的点云面片滤除;最后,根据点云面片之间的拓扑关系及点云面片的高程信息,将各屋顶面所包含的三维空间进行分割,实现建筑结构单体点云的提取。
1.2 建筑物矢量轮廓重建
建筑单体点云的提取虽然对杂乱无章的点云进行了有效分割,但此时的成果仍未达到应用需求,因此,还需在建筑结构单体点云提取的基础上,依次对各结构单体进行2D矢量轮廓重建。
矢量轮廓重建方法主要包括外边缘点检测和轮廓线规则化两个关键过程。在外边缘点检测过程,基于邻域约束的凸包算法是当前非常有效且常用的轮廓追踪算法,可满足对凹多边形轮廓的检测。然而,由于点云本身的采样和误差等问题,检测的边缘点呈现不规则的折线形式,与建筑物实际轮廓不符,不满足建筑物矢量化的要求,因此,还需要进行轮廓线规则化处理。根据建筑物轮廓线通常为相互垂直的两个方向这一先验条件,利用最小二乘的直线增长算法提取边缘点中的线特征,并以线特征长度作为权值对其方向进行权重二均值聚类,确定建筑物的主轴方向之后,以此方向对所有线特征进行重定向及重定位处理,得到规则化轮廓线结果。
2 建筑局部结构感知和矢量化
由于建筑结构单体点云的提取结果是基于建筑结构单体屋顶面计算得到,此时进行矢量化轮廓重建实际仅得到屋顶面轮廓。然而在现实场景中,由于飘楼、阳台、屋檐等建筑结构的存在,其建筑基底轮廓与屋顶轮廓不一致,在建筑精细分析领域,如建筑总量统计方面,若不将这些结构与建筑主体进行区分,统计结果将存在较大误差。
2.1 屋檐改正
屋檐结构通常不参与建筑物的矢量化。作为干扰部分,需要对其进行识别剔除。如图1所示,屋檐通常表现为屋顶面在建筑墙面位置向外突出一定距离,从而导致屋顶面下方的建筑墙面所围成的轮廓相比于屋顶面轮廓出现向内凹进的情况。
图1 包含屋檐的建筑物点云
由于屋檐的存在,屋顶面的轮廓并不能代表建筑物的实际轮廓,而屋顶面下方的立面点云所构成的矢量轮廓为实际轮廓。因此,对于结构单体BSi,计算其屋顶面点云RPi中的最低高程Hi,取屋顶面下方dh高度的建筑剖面点云,即高程在[Hi-dh-δh/2,Hi-dh+δh/2]区间内的点云PPi,δh为剖面宽度,对PPi进行矢量轮廓重建,得到剖面轮廓PBi(profile boundary)。通常情况下,令dh=1 m时,能得到可以正确反映建筑实际轮廓的剖面轮廓。
2.2 建筑剖面特征追踪方法
为了将各结构单体矢量轮廓中的主体部分与阳台、飘楼部分进行区分,本文以阳台、飘楼结构的几何结构特征作为先验信息。阳台、飘楼结构在建筑结构单体提取过程中无法与建筑主体进行区分,但是建筑基底均不包含阳台、飘楼结构,导致首层的建筑剖面轮廓与建筑整体的外轮廓相比,其具有向内凹进的特点,而凹进部分的轮廓即为阳台、飘楼轮廓。因此,本文算法以此条件对阳台、飘楼结构进行识别。
为找到建筑物外轮廓的凹进部分,本文提出了一种建筑剖面特征追踪方法。在获得屋檐改正后的建筑矢量轮廓(building boundary,BB)的基础上,从屋顶面高度自上而下,每隔一定高度获取该高度下的建筑剖面,利用矢量轮廓重建方法计算该剖面的规则化轮廓(profile boundary,PB),并采用基于图像的轮廓拓扑对比分析方法,基于图像方法求取BB和PB的交集区域和差集区域,最后结合形态学处理,找到该剖面轮廓中相比于建筑矢量轮廓的凹进部分。该方法主要包含两个核心部分:基于图像的轮廓拓扑对比分析方法以及基于建筑剖分的阳台、飘楼识别流程。
1)基于图像的轮廓拓扑对比分析方法。由于点云数据本身的精度及采样问题或建筑立面上的空调或窗户等影响,建筑矢量轮廓BB和剖面轮廓PB除了在阳台、飘楼区域存在差异以外,还存在较多细小差异,直接利用几何计算将导致算法极其复杂,因此,本文采用了一种基于图像处理的方式,将建筑物结构单体轮廓和建筑剖面轮廓转变为栅格图像,进而计算差集区域,并采用形态学处理,可以轻易地剔除细小差异,进而得到阳台、飘楼的轮廓区域。
该过程涉及到栅格图像分辨率参数的设置,参数值较小时,可以更好地表现轮廓原本的精度,但是会带来效率的成倍降低。在实际应用过程中,图像分辨率(rs)设为0.05 m时可以保证较高效率的同时,轮廓精度的损失较小。
此外,本算法采用形态学开运算处理,经过腐蚀、膨胀过程后,图像中细小的噪声区域会被剔除。在滤波窗口大小的选择方面,由于阳台、飘楼通常具有一定大小,其窄边宽度一般大于1 m,因此将窗口设为15像素×15像素,即可以将窄边小于15个像素(若rs=0.05 m,则15个像素对应0.75 m)的狭窄区域滤除。
以图2中的简单建筑模型为例,该建筑包含蓝色、绿色和黄色三部分结构单体B1、B2、B3,分别计算各结构单体屋檐改正后的整体轮廓BB1、BB2、BB3。然后,利用从上至下的建筑剖分方法,首先构建差异轮廓集合FB={},并对蓝色部分结构B1进行剖分,计算剖面高度,如式(1)所示。
(1)
(2)
图2 包含飘楼结构的简单建筑物模型及从上至下的建筑剖分流程示意图
由于密集匹配点云的精度问题,在某个剖面下计算得到的差异轮廓并不能完整地表现阳台、飘楼轮廓形状,因此需要对各个剖面下获得的差异轮廓进行整合。对FB中的差异轮廓进行叠加后利用连通分析对其聚类,并将各聚类簇中的差异轮廓进行合并和统计,得到合并的差异轮廓集合CFB={CFBi},i=1,2,…,n,n为聚类数。以CFBi对应的聚类簇中最低的差异轮廓高程作为CFBi的参考高程。
2.3 建筑物结构矢量化
为了计算建筑物结构矢量化结果,需要获取各结构单体屋顶面的准确轮廓。因此,在已有各结构单体整体轮廓BBi的基础上,计算BBi与其拓扑关联的结构单体轮廓的差集作为其屋顶面轮廓RBi。如图3(a)所示,由于B1为无拓扑关联的结构单体,因此RB1=BB1。图3(b)为结构单体B2的屋顶面轮廓RB2计算结果,此时RB2=BB2-BB1。计算RB3=(BB3-BB2)-BB1,如图3(c)所示。
图3 结构单体屋顶面轮廓示意图
最后将结构单体的屋顶面轮廓RBi依次与合并的差异轮廓CFBj进行求交运算,其中交集区域RBi∩CFBj为屋顶面轮廓RBi中的阳台、飘楼轮廓;CFBj在RBi的差集区域RBi-CFBj为去除阳台、飘楼部分后的屋顶面轮廓RBi。图3的屋顶面轮廓经过与图2中获得的合并差异轮廓进行求交运算,得到如图4中各结构单体屋顶面中的阳台、飘楼轮廓以及更新后的屋顶面轮廓。
图4 屋顶面轮廓与合并的差异轮廓求交计算得到阳台、飘楼轮廓及更新后的屋顶面轮廓
将阳台、飘楼的识别结果以及各结构单体屋顶面轮廓的计算结果投影至二维平面,得到建筑物二维矢量图结果。同时,利用该结果对建筑物进行结构化矢量重建,得到建筑物结构矢量化结果。
3 实验与分析
如图5所示,以广州市某城中村作为测区采集倾斜影像,并利用ContextCapture软件进行数据处理得到密集匹配点云,对该数据利用前文方法进行建筑物结构单体点云提取,得到如图6所示的结构单体点云提取结果,以此为基础,进行阳台、飘楼的识别及建筑物的结构化矢量重建。
图5 原始点云数据
图6 建筑物结构单体点云提取结果
图7为阳台、飘楼识别结果以及建筑物结构矢量化结果,图中红色线条为建筑中结构单体的轮廓线,橙黄色部分为识别的阳台、飘楼结构。直观来看,该矢量化结果较好地反映了建筑物的实际几何形状,且单体部分均已得到区分,符合建筑矢量化应用的需要。此外,由于本算法在建筑物结构单体点云提取的基础上进行处理,数据量已大大减少,本实验数据仅需2~3 s即可完成运算,说明本方法在效率方面具有一定的保障。
图7 包含阳台、飘楼识别结果的建筑物结构矢量化结果
从图7中的阳台、飘楼识别结果(橙黄色部分)可见,阳台、飘楼结构的矢量轮廓结果与真实的结构轮廓较为符合,在该数据条件下取得了较好的识别效果。但是对于密集建筑区域,如图8红圈部分所示,由于遮挡原因,在建筑首层区域,密集匹配点云数据存在大量的插值点,导致其飘楼结构区域的首层部分点云被过度平滑,失去了向内凹进的特点,破坏了飘楼的可识别条件,从而导致算法无法对该情况下的飘楼结构进行识别。对于该情况,应从数据源方面进行改进,采用地面LiDAR或SLAM技术等进行数据采集,结合多源数据还原遮挡区域的点云实际分布情况,即可更好地实现阳台、飘楼结构的识别。
图8 建筑物遮挡区域的局部展示
本文利用该区域的结构矢量化结果结合楼层信息计算各建筑的总面积。将该结果与通过外业测图统计的建筑总面积进行定量对比分析,21栋建筑的对比结果如表1所示,其中最大相对误差为12.5%,最小相对误差为0.7%,平均误差在6.8%,整体误差在6.5%。从该结果看,相比手工成图的面积统计结果,基于本文算法结构矢量信息的面积统计结果绝大多数都偏大,这主要由于密集匹配点云本身的精度(一般在8~10 cm)、密集匹配噪声、局部结构漏识别、轮廓自动提取与正则化算法四个方面,尤其是阳台、飘楼结构的漏识别,导致在本应计算一半面积的阳台飘楼区域计算了全部面积,使得总面积统计结果偏大,而阳台、飘楼结构的漏识别与密集匹配点云本身的噪声相关。因此,采用多源数据融合的方式进行建筑结构矢量化,进一步改善了矢量化结果。
表1 本文矢量化结果统计的建筑面积与外业数据采集及手工成图所统计的建筑面积对比
整体而言,本文方法得到的建筑结构矢量化结果具有较好的精度,在大大提升建筑物矢量成图的效率且降低矢量成图成本的同时,还保证了矢量化结果的精度,具有一定的应用前景。
4 结束语
本文在建筑物结构单体点云提取的基础上,基于矢量轮廓重建算法,设计了一种建筑物结构矢量化算法。该算法利用已初步结构化分割的建筑物点云,采用基于建筑剖面轮廓的屋檐改正方法剔除屋檐对矢量化的影响;针对建筑物阳台、飘楼等局部结构的识别问题,采用剖面特征追踪方法,并结合基于图像的剖面结构拓扑对比分析方法实现阳台、飘楼区域的自动识别;进一步,通过结构化矢量重建,得到包含阳台、飘楼语义信息的建筑结构矢量化结果。实验结果表明,该算法可以较好地反映建筑真实矢量特征,能够快速、准确且自动地重建建筑物结构矢量信息。
在实验结果中,由于密集匹配点云数据本身存在的精度问题以及受遮挡影响出现的插值点问题,造成建筑局部结构的漏识别,可以考虑通过多源数据融合的方式,结合地面LiDAR点云还原遮挡区域的点云实际分布情况,提高建筑结构矢量化的准确性,这也是本研究需要进一步改进的地方。