基于点云的室内房间要素及拓扑关系提取
2023-04-06郭慧霞韩李涛张鹏飞
郭慧霞 韩李涛,2 张鹏飞
(1. 山东科技大学 测绘与空间信息学院 山东 青岛 266590;2. 山东省基础地理信息与数字化技术重点实验室, 山东 青岛 266590)
0 引言
室内导航服务的实现主要包括模型构建、路径规划、实时定位与导航[1]。随着激光扫描技术的不断发展,点云已成为室内三维重建的重要数据来源[2]。然而,从无连接、无结构、无语义信息的海量点云中快速精准提取室内可导航元素(如房间、门、窗、走廊等)和不可导航元素(如墙)仍然面临着很大挑战。
目前,从室内点云中提取墙线和房间要素已得到许多关注和研究[3-4],现有方法包括基于特征聚类的方法、基于模型拟合的方法、基于深度学习的方法以及上述几种方法的混合。文献[5]采用“自下而上的思想”,在墙体点云的二值图上进行区域生长得到墙角点,最终获得精细的内部房间边缘;文献[6]对分割出来的墙体点云利用霍夫变换和其二值图叠加进行墙线的准确提取,该方法受遮挡的影响较小;文献[7]采用改进的卷积神经网络(geometric-convolutional neural network,Geo-CNN)进行建筑结构的识别;文献[8]在区域增长的基础上采用随机采样一致性(random sample consensus, RANSAC)进行了平面分割,并恢复了门平面和墙面的关联关系。上述方法的缺点是均不适用于曲面墙体的识别。针对曲面墙体要素,文献[9]利用RANSAC对标记为墙体的样本进行直线或圆的模型拟合以生成平面图,但其处理过程可能将两个靠近的墙体都忽略掉;文献[10]提出了一种基于能量全局优化的方法对含曲面结构的室内点云进行分割,但时间成本较高。这些方法大多采用“自下而上”的方式,即先从点云中提取墙线,然后再依据墙线之间的几何位置或连接关系构建墙线与对应房间要素之间的拓扑关系。该方式在提取墙线时缺少房间要素的约束,导致墙线-房间拓扑关系的构建过程较为复杂。
针对上述问题,本文根据天花板点云被室内空间自然划入不同区域(房间)的现象,提出了一种“自上而下”提取房间要素及拓扑关系建立的新方法。该方法不仅实现了对弧形墙体要素的提取,而且在提取过程中自然保留了房间要素与墙线要素之间的拓扑包含关系,有效降低了“自下而上”提取房间要素及拓扑关系构建的复杂性。
1 房间要素及其拓扑关系提取
在利用激光扫描仪进行室内扫描时,需要保持房间门处于打开状态以便连续扫描。这样将使得房间内点云与房间外走廊点云通过房间门口地面点云连为一体,导致房间点云和走廊点云不易分割。观察发现,一般情况下建筑物每个房间的天花板平面会被房间墙体分割而与房间外空间相互独立,利用房间天花板点云代表房间单元进行室内点云分割将会非常容易。因此,本文提出了一种利用天花板点云进行室内空间分割和房间要素提取的方法。其技术流程如下(图1):
图1 方法流程图
(1)原始数据预处理操作。
(2)根据点云Z轴投影的高度直方图提取天花板点云。
(3)对分割出来的天花板数据进行投影,使用欧式聚类方法进行房间的分割提取。
(4)基于每个房间的点云数据提取出边界点云数据,结合RANSAC和欧式聚类方法对边界进行拟合并提取得到墙线参数。
(5)将墙线参数按照一定的顺序进行排序并依次计算交点并优化得到房间角点,同时保留房间、墙线、角点之间的拓扑关系。
1.1 点云数据预处理
由于点云存在数据量大、噪声明显以及会有点云缺失等问题,所以需要对原始点云数据进行预处理。预处理过程主要包括[11]:①点云进行环境去噪;②统计滤波将大尺度噪声去除;③对点云数据进行八叉树抽稀,若存在小范围内的点云缺失,则利用对称性补全。
1.2 房间轮廓提取
房间轮廓提取主要包括楼层分割、天花板点云提取、房间提取和房间边界点提取等过程。
1.2.1楼层分割及天花板点云提取
由于楼层存在的地方会存在大量Z值相同的点,根据Z轴投影直方图可以确定楼层、地板、天花板的位置[9],如图2所示。从图2中可以看出天花板点云Z值的所属范围,利用直通滤波得到建筑物的天花板点集P。天花板点集P中可能会存在一些噪声点。因其数量较少,对房间整体的影响可以忽略。
(a)多层室内点云
1.2.2房间点云分割
将天花板数据P向XOY面投影得到P′,利用欧式聚类[12]方法进行房间分割。欧式聚类是以欧式距离为判断准则,利用最近邻实现的聚类技术,其中半径μ设置范围为(w/2,w),w为建筑物的墙体厚度,T是一个簇要求的最小点数。聚类出的每个房间的点集,记为Ri,i∈[0,N],N为聚类的数量。其详细步骤如图3所示。
图3 欧式聚类过程
Step1:输入天花板数据P′,半径μ,最小聚类值T;
Step2:创建P′的Kd-tree;
Step3:设置一个空的簇C和一个队列Q;
Step4:对P′中的每一个点Pi,执行下列步骤:
①把Pi加入队列Q中;
②在半径μ范围内,对Pi近邻搜索,得到k个近邻点Pik并放入Q;
④当Q中所有的点都被处理过后,把Q中所有的点添加到簇C,清空队列Q;
Step5:当P′中所有的Pi都被处理过并且是簇C中的一部分时,算法终止。
在房间边界点提取时,组成房间最外围轮廓的点集为建筑物房间的几何轮廓上的点,对Ri使用α-shape算法进行房间轮廓点的提取,Ri对应的边界点集为Bi。
1.3 墙线提取
墙线提取过程主要包括墙线分割、墙线参数排序、交点计算和优化等过程。
1.3.1墙线分割
本文将RANSAC[13]和欧式聚类相结合,先进行圆模型识别后进行直线模型识别,并对识别数量进行限制,进行墙线的拟合提取。避免了RANSAC拟合提取“内点”时将具有相同模型参数但属于不同片段的点(不同墙体上的点云)被提取为同一片段的情况,如图4(b)所示。
(a)房间边界点
以弧形墙线为例进行说明墙线提取流程,如图4所示。利用RANSAC圆模型对弧线型墙线拟合后,加入欧式聚类,判断“内点”之间的欧式距离是否小于阈值μ,若是小于μ则进行分割,否则进行RANSAC直线拟合。此处μ取房间宽或长的最小值。直线型墙线与弧形墙线提取过程相似。墙线进行圆和直线拟合分割后得到组成房间Ri的墙线的参数模型集合W={W0,W1,…,Wn},其中n为房间Ri立面的个数。直线型参数模型见式(1),圆参数模型见式(2)。
(1)
式中,(px,py,pz)为直线上一点;(nx,ny,nz)为直线方向向量。
(x-ox)2+(y-oy)2=r2
(2)
式中,(ox,oy)为圆心坐标;r为圆半径。
1.3.2墙线参数排序
混合分割得到的W中相邻元素并不代表相邻的墙线,会为后序计算交点(即墙角点)带来困难。本文提出了一种利用墙线中点对墙线参数进行排序的方法。以每一个房间轮廓点集Bi为单位,计算其质心Gi,取每组点集的中点Mj,计算Gi和Mj的连线与X轴正方向的角度θi,θi∈[-π,π],其中X轴正方向向上为正,向下为负。根据θ的大小对W中墙线参数排序并更新W,保证相邻的Wi表示的墙体是相邻的,存在墙角点。
1.3.3交点计算及交点优化。
对W中的相邻元素求交得到交点Di,由于拟合得到的参数存在一定的误差,在进行交点计算时,可能会出现“相切”“尖角”的问题,导致交点计算错误,见图5(a)、图5(b)。设圆模型O,圆心为o,半径为r,直线模型为L,L到圆心的距离记为d。对以上两种情况进行交点优化:
(1)0<|r-d| (2)0 (a)直线和圆“相切” 最终得到交点集D={D0,D1,…,Dn},优化后的W′={W0,W1,…,Wn}。 在提取房间墙线的同时,为了保存房间、墙线、角点之间的拓扑关系,参考文献[14]中的拓扑关系描述,本文分别采用房间-墙线表(表1)、墙线表(表2)和角点表(表3)描述每个房间与其内墙线、角点之间的拓扑包含关系,本文同一墙体中两个墙面的墙线没有进行合并。具体自动构建过程为:以房间Ri为单位提取墙线时,其质心Gi作为房间节点;因存在弧形立面,在墙线提取时,弧形墙线类型记为0,直线型墙线类型记为1;由W′={W0,W1,…,Wn}得到房间-墙线表,表中包括房间ID,该房间包含的墙线ID和房间中心点坐标Gi(x,y,z);通过计算相邻墙线之间的交点建立墙线表和墙角点表。 表1 房间-墙线表 表2 墙线表 表3 墙角点表 为验证本文方法的适用性和有效性,分别选取苏黎世大学(University of Zuich,UZH)提供的数据集Synth3和国际摄影测量与遥感协会(International Society for Photogrammetry and Remote Sensing,ISPRS)提供的公共基准数据集(grainger museum,GM)[15]。两个数据集的详细参数见表4。 表4 数据集参数信息 实验硬件配置:Intel(R) Core(TM) i7、CPU 3.20 GHz、8 GB内存、Windows10 (64位);软件配置:CloudCompare、Visual Studio 2015(C++)、 PCL1.8.1。 由于官方网站没有提供实验点云数据对应建筑的详细几何尺寸信息,所以本文提取方法的精度评估主要依据提取房间数量的完整性和房间面积精度进行评估。 房间提取完整性(Cm)计算公式如下: (3) 式中,T为从数据集中提取的房间个数;F为数据集中存在却没有被正确提取到的房间个数。 房间面积提取精度评估是以ArcGIS人工精确量取的房间面积作为基准,分析计算房间面积的绝对误差(Δ)和相对误差(K),其计算公式如下: Δ=|SA-ST| (4) (5) 式中,SA为ArcGIS人工精确量取的房间面积;ST为本文方法提取房间的面积。 在CloudCompare软件中按照1.1所述步骤对原始数据做预处理。预处理后Synth3和GM数据集的点云数量分别约为7.0×105个和3.5×105个。根据Synth3和GM数据的点云Z轴投影的高度直方图,天花板点云提取范围分别为[3.26,3.36]和[2.9,3.29];房间提取时μ根据建筑物的墙体厚度进行设置,Synth3和GM阈值μ分别选为0.10、0.12 m;墙线提取过程点到模型的距离一般设置为0.03 m,最小聚类尺寸为4,μ设置为1 m。而GM中房间R4的边界点中的噪声点较多,为正确提取各墙线上点则需要扩大阈值,设置点到模型的距离为0.1 m。在混合分割提取墙线时,利用墙线中点对墙线参数进行排序,并不能对Synth3中R0的墙线进行正确的排序,原因是R0的中心点在多边形外,此方法只适用于中心点位于多边形内部的多边形。为后续验证提取精度,利用边界点顺序对R0进行墙线排序。图6和图7是实验数据处理过程及提取结果。为可视化效果清晰,房间边界点和房间墙线点提取情况分别选取了Synth3中的房间R1,GM中房间R8进行可视化显示。 图6 Synth3数据处理过程及提取结果 图7 GM数据处理过程及提取结果 提取精度如表5和图8所示。从表5中可以看出,Synth3的房间都被完整地提取出来,GM数据中有三个房间没有被提取出来。查看GM预处理后的数据和点云Z轴投影的高度直方图[图2(b)]发现:一个房间天花板数据缺失,另两个房间天花板Z值位于[1.50,1.70]之间,而提取的天花板范围为[2.9,3.29],故造成三个房间的缺失。从图8中可以看出,本文方法提取到的每个房间面积与量算得到的面积绝对误差不超过0.11 m2,大部分小于0.08 m2;相对误差小于0.5%,对Synth数据中房间提取面积相对误差小于0.1%,提取精度较高,证实了本文方法的有效性和准确性。 表5 房间提取结果 针对从点云中提取房间要素及房间构成要素之间的问题,本文引入“自上而下”点云分割思想,利用墙体自然将天花板点云分割成块,即天花板被自然划入不同的房间,对天花板点云边界点利用RANSAC结合欧式聚类方法实现建筑内部房间和墙线提取,并在提取过程中自动地保存了房间、墙线和墙角点之间的拓扑关系,为后续室内导航信息模型的构建提供了便利。实验表明,在天花板数据提取完整的情况下,提取精度较高;墙线提取方法不仅适用于平面墙体,还适用于圆弧形曲面墙体。后续将考虑利用深度学习以完整提取天花板数据和对非圆弧形曲面墙体点云分割进行提取。1.4 拓扑关系表达
2 实验结果与分析
2.1 实验数据及环境
2.2 评价指标
2.3 参数设定与结果分析
4 结束语