吕富强,唐诗华*,何广焕,蒙金龙
(1.桂林理工大学测绘地理信息学院,桂林 541004; 2.广西空间信息与测绘重点实验室,桂林 541004)
随着无人机航摄技术的发展,建筑物信息提取的方式越来越多。建筑物信息的提取为房地一体、城区改造以及智慧城市等各项建筑相关的测绘项目提供有效的帮助[1]。因此,对建筑物信息的提取具有十分重要的现实意义。而提取出的建筑物信息需要单体化后才能够赋予相应的属性信息,满足用户的不同需求。对于如何快速提取建筑物信息并将其单体化,国内外学者开展了大量研究。
目前,建筑物信息提取的类型与方法有多种,主要类型有基于影像与基于点云两大类。提取的方法较多,如王春林等[2]引入活动轮廓的图割算法构建并解算轮廓能量函数来实验建筑物轮廓信息的提取。程亮等[3]利用LiDAR、影像以及K-means 聚类方法,提取建筑物轮廓信息。李强等[4]对建筑物点云数据构建特征规则集的方式进行建筑物点云的提取。这些方法都可以较好地提取出建筑物信息,但其目标都是大面积的建筑物提取,没有进行建筑物自动单体化的提取。建筑物提取后的单体化方法中,目前较为广泛的单体化方法包括ID单体化、切割单体化、动态单体化和人工单体化4种方式。孙松梅等[5]先提取建筑物基底矢量面,再对建筑物体单体化。张红华等[6]通过获取垂直的图像上的建筑物的顶部结构,以及建筑物侧面的纹理特征来使建筑物单体化。李济坤等[7]过 Canny检测算法获取建筑物边界,用DP-Modeler实现了建筑物单体化。吴为民[8]采用了自动 ID 单体化的方法来进行建筑物的单体化。
现提出一种基于密度噪声应用空间聚类(density-based spatial clustering of applications with noise,DBSCAN)算法的建筑物点云提取与单体化的方法,在进行建筑群提取的过程中,以航摄影像为辅助,使用DBSCAN算法对建筑物点云进行提取,并将其单体化。该方法适用于分布明显的建筑片区,在大范围建筑片区中也有一定的适用性。旨在提高建筑物点云自动化提取程度,提高提取效率与精度。
使用DBSCAN算法进行建筑物点云的聚类处理。DBSCAN算法是一种基于密度的空间数据聚类,可以发现某一密度条件下任意形状的聚类[9-10]。
该算法首先会选取一个核心点,通过这个核心进行三维空间的生长,每个簇类都可以由该簇类的任何核心对象唯一确定。通过分析数据分布密度来生成簇类,核心点在一个空间范围内检索周围数据点,小于聚类阈值时,将范围内点的点归为该集合当中,当密度大于某一给定的阈值,就把该集合称为簇类,该簇类即为密度相连的点的最大集合,低密度的数据区一般认为是噪声。
在该算法中,三维邻域空间的阈值参数有两个,一个为空间上的邻域半径(eps),该参数使用的是欧式距离。首先选取任意核心点,然后进行核心点的近邻点遍历,再进行核心点与任意临近点之间的距离计算,判断该距离值是否大于eps值,若该距离值大于eps值,则不属于同一簇类点,并设置为噪声点。若该距离值小于eps值,则将该点归为同一簇类集合中,并再将该点设为核心点,进行相同的遍历步骤直至无法遍历到新的核心点,则该集合即为一个簇类,最后遍历到的同一簇类中的点则为边界点。另一个参数为邻域半径球体内的最小点集数(minpts),当一个簇类中核心点数与边界点的数量和小于minpts值时,无法达到最小点集的数量要求,则该簇类内的点都将归为噪声点。若大于minpts值,则继续聚类。该算法二维聚类的简单过程如图1所示。蓝色的为核心点,绿色的为边界点,黑色的为噪声点,圆圈的半径即为eps值的大小。图中的蓝色点与绿色点为同一簇类中的点,黑色点判定为噪声点后另成一簇。
图1 二维聚类原理图
eps与minpts值的选取都有一定的规则限制。当eps值选取过大时,会导致邻域空间过大,不同类别的点集被错误聚类到同一簇类。而eps值选取过小时,则会导致同一类别的点无法聚类到同一簇类中,导致最后簇类集数量庞大。minpts值选取也会有一定的影响,该值设定过小时,则会使部分噪声点集合归之非噪声的簇类之中。而该值选取过大时,则可能导致点集合中点数量较少的簇类无法进行聚类,被过多归至噪声点。
解决eps值的取值问题,需要用到k-距离曲线图,计算所有点与它第k远的点之间的距离,将结果排序后得到k-距离曲线图,k值通常设为4,选择该图中第一个谷值点位置,该位置对应的k距离值设定为eps值较为合适[11]。
minpts值的选取通常需要设定为大于数据的维度值(dim),minpts≥dim+1时较为合适,也可以根据需求,适当加大。
1.2.1 预处理
根据DBSCAN算法的特点,DBSCAN算法具有一定的去噪效果,不需要再进行点云的去噪。但该算法基于MATLAB平台进行数据处理时运算量较大,处理速度相对较慢。因此,需要对部分非相关点云进行剔除。除建筑物及与其贴边相关的点云外,都属于非目标点云。对该部分点云采用“布料”滤波(cloth simulation filter,CSF)算法进行滤波处理,剔除地面点云,留下非地面点点云。
CSF算法将获取的机载雷达点云数据进行反转,由于点云数据包含(x,y,z)3个坐标值,反转时只需保持x、y不变,将z变为相反数,即将原始点云数据坐标变为(x,y,-z)。通过设置参数,使生成的布粒子在下降过程中,先与地面点接触,通过分析布节点与相应机载雷达点云的相互作用,确定粒子下降时停留的位置,确定布最后的形状,实现点云滤波,完成对机载雷达原始点云数据的非地面点提取[12],从而有效剔除点地面点点云,减小数据量。
为了进一步减小数据量与冗余,需要将已剔除大部分非相关点云的数据进行点云的抽稀。按照空间距离抽稀的方法进行等距离的抽稀。该方法是根据设置空间距离阈值进行点云的抽稀,设定两点之间的距离,将小于该距离的点进行去除。
1.2.2 提取与单体化原理
建筑物点云的提取是基于点云密度聚类方法。采用无人机机载雷达获得的建筑物点云,其密度远大于其他非建筑物点云。根据这一特性,采用密度聚类的方法可以较好地提取出建筑物点云数据。
通过DBSCAN算法,设定合适的eps值与minpts值,对预处理后的点云数据进行聚类。聚类后的建筑物点云数据,每一幢楼房都会生成不同的簇类。以不同的颜色来标识每一个簇类,并赋予每一个簇类相应的簇类ID值,通过每幢楼房对应的ID值,可以提取出需要的单幢建筑物点云,即实现建筑物点云的单体化提取。其他地物也会根据其特点进行相应的簇类,而无法聚类的点云数据则会被判定为噪声。
初步提取建筑物点云后,可以根据三维空间上的欧氏距离值去除噪声。提取数据后,数据中含有其他地物簇类和建筑物相关点云的簇类。建筑物相关点云的簇类中,部分非建筑物点云与建筑物点云聚类在同一簇内的,这些点云可能为道路点云、停车场点云和树木点云等非目标点云。由于这些点云与建筑物贴边或相近,使得这部分点云与建筑物点云错误的聚类在一起。根据建筑物点云的墙面的密度特点,将粗略提取出来的建筑物点云进行二维聚类,可以得到明显的边界线,但仍然保留三维信息,将边界线外的点云进行去除,留下边界内的点云数据,完成点云的分割任务。
点云分割时可能存在少数非目标点云数据被遗漏,或存在楼房挑出部分下方的地面点数据未完全剔除,所以需要进行进一步的优化处理,结合正射影像,通过三维的视角对数据进行检查,主要是对建筑挑出或遮盖部分的数据进行剔除,剔除该部分数据后,再进行一次三维的DBSCAN算法聚类,即可得到优化的建筑物点云数据,并赋予每一幢建筑不同的颜色与簇类ID,实现单体化。
从建筑物点云的提取数量误差、正确率和单体化提取出的建筑物平面边线长度的精度误差3个方面进行精度评定。将本文方法提取的建筑物点云与TerraScan软件所提取出的点云数量与正确率进行比较,以人工提取的建筑物点云作为参考。再将单体化提取的建筑物轮廓边线长度与实测数据进行比较,根据两者误差进行精度评定。
将DBSCAN算法与正射影像组合使用,提取出目标区域建筑的点云。首先使用CloudCompare软件的布料滤波算法,对原始点云数据进行预处理。其次,使用DBSCAN算法对预处理点云进行去噪与建筑物点云的三维聚类,将建筑物点云进行初步提取。再对初步提取的建筑物点云进行二维聚类,根据建筑物点云的密度特点,将点云与正射影像相结合,进行建筑物与其他地物的点云分割,最后再进行一次三维的密度聚类,优化出最终的建筑物点云,具体流程如图2所示。
图2 处理流程图
实验数据采用的是桂林理工大学博士生公寓的点云数据,使用CloudCompare软件进行预处理。采用CSF算法进行地面点的剔除,采用空间抽稀法进行点云的抽稀,空间中两点的距离为1 m,预处理后的点云数据如图3所示。可以看出,数据中存在大量非建筑物点云,在后续处理中,需要进行去除。
图3 预处理后的点云图
基于MATLAB平台,对预处理后的数据进行初步提取。将eps值按照k距离图肘部值进行选取,如图4所示。
图4 k距离曲线图
根据k-距离曲线图可得,eps值选取为1.3~1.4 m最佳。将minpts值设定为4,eps值选取为1.3、1.35和1.4 m 3个值,进行数据测试后可得到各个eps值的聚类结果,将3个聚类结果进行对比,如图5所示。
图5 初步聚类
在图5中,除建筑物点云簇类与噪声点外,均归至其他地物簇类。从运行结果图与簇类数量比较得出,当eps=1.3 m时,噪声点数量较多,簇类数量为107个,数量较多,聚类效果欠佳;当eps=1.35 m时,噪声点数量正常,簇类数量为86个簇类,仅有少部分非建筑物点云归至建筑物点云;当eps=1.4 m,噪声点较少,但其聚类过度,簇类数量为77个,使许多非建筑物点云数据与建筑物点云归为同一簇。将该结果的噪声点去除,导出簇类结果。
将初步提取的点云数据进行二维聚类,去除非相关点。在该步骤中,建筑物点云降维后数据密集程度会远高于其他非建筑地物,将eps参数设置为约等于抽稀间距,可以更好地将非建筑物点云与建筑物点云进行分割,在该步骤中根据k距离曲线,eps值设定为1.05 m。导出范围线簇类与范围线内的簇类,剩余簇类全部剔除。通过该步骤可以去除掉大量非建筑物点云,二维聚类部分结果如图6所示。
将二维聚类的结果与已制作完成的文档对象模型(document object model,DOM)进行融合处理与分析。正射影像据有很强的直观性,将两者进行叠加分析,检查范围线与正射影像重合情况,并结合二维聚类结果,去除与范围线簇类错误聚类的非建筑物点云。则范围线内的即基本为建筑物点云,处理结果如图7所示。
将分割后的点云数据再次使用DBSCAN算法进行三维聚类与单体化处理,对聚类结果进行优化,除去极少数点云分割时未处理完全的非建筑点云数据。采用与初步提取相同的参数,eps值设定为1.35 m,则可得到最后的建筑物点云。每一幢建筑物的点云簇类都有特定的簇类ID,根据需求,按照相应的簇类ID导出,即可实现建筑物点云单体化,整体优化结果如图8所示。根据1#楼房的簇类号,提取出其单体化点云数据,处理前后的效果如图9所示。
图8 优化处理结果
图9 单体化成果
将提取结果与TerraSolid软件提取的建筑物点云数据结果进行数量与正确率的比较,提取1#建筑物单体数据的各边长值与实际测量得到的边长值进行比较进行定量的分析。TerraScan提取出的建筑物点云如图10所示。
图10 TerraSolid提取结果
从TerraSolid所提取出的结果看,该软件提取出的建筑物点云底部点云缺失较多,但其建筑物上半部分的提取效果较好。
以人工提取出的建筑物点云作为参考,进行两种提取方法的对比分析。人工提取出的建筑物点云数量共12 598个。两种提取方法的获取点云数量与正确率如表1所示。
由表1可知,Terrascan软件建筑物点云提取的正确率为56.52%,而采用本文方法提取的正确率为97.36%。由此可得,本文方法总体分类精度高于采用Terrascan 分类方法。
表1 数量正确率比较
将1#建筑物点云单体化提取出的建筑物轮廓边界与实际测量得到的数值进行比较,如表2所示。
表2 边长比较
由表2可知,通过本文方法提取,每幢建筑物边长值最大误差为0.17 m,平均绝对误差为0.055 m,中误差为0.077 m。说明本文方法对建筑群的点云提取与建筑物点云单体化提取结果均能满足相关规范要求。
针对机载激光雷达建筑物点云提取过程中自动化提取困难,以及提取后的建筑物点云单体化过程烦琐等问题,利用DBSCAN算法进行提取与单体化,结论如下。
(1)使用DBSCAN算法与正射影像的组合使用,可以有效地对建筑物点云与其他地物点云进行分割。
(2)利用本文方法,提取出的点云正确率可以达到97.36%,建筑物平面边界长度精度可以达到厘米级。
(3)利用本文方法对建筑物点云进行提取与单体化,使建筑物点云数据的提取处理效率提高,使提取与单体化过程更加快速与简便,并得到符合规范的数据成果。
由于该提取方法中点云的聚类与点云的分割与实际无人机采集数据的精度有关,且点云数据量较大,数据处理需要一定的设备要求。因此,提高提取精度则必须要提高无人机的数据采集精度或采用更好数据处理设备。另外,该算法是基于密度的聚类方法,无人机所采集的点云数据在建筑物密集程度较大的区域,每幢建筑相邻墙面的点云数据密度大小不够,在该部分单体化提取效果可能会相比于墙面间距稍大的建筑群的点云数据提取效果稍差。在后续的研究中,将对此进行下一步的改进。