李志伟,陈联鹏,江尧尧,张 升
(1.中国电建集团江西省水电工程局有限公司,江西 南昌 330096;2.南昌大学工程建设学院,江西 南昌 330031)
近年来,随着我国风电事业蓬勃发展,传统数字摄影测量方法已无法满足实际风电场建设项目中地形图绘制、信息收集、规划等工作的精度和效率。无人机LiDAR 点云数据精度高、采集效率快,可以满足风电场建设项目要求。点云分类是点云数据处理中的关键一环,传统风电场点云数据分类效率低、人工干预大,直接影响风电场项目各项工作的进度及数据的准确性。故而亟需一种高效、准确、适用性强的风电场点云数据分类方法。
目前风电场点云数据常用的地面点分类方法[1],有基于分割类算法[2-3]和坡度的分类算法[4],但计算量大、内存占用率高。形态类分类方法[5],对地势起伏较大地形适用性低。常见的非地面点云数据分类方法,如DBSCAN 算法[6-8]利用密度聚类,且聚类速度快、适用性高,但聚类结果受算法中Eps 和MinPts 两个核心参数影响大,两参数需要人为拟定。对此Yue 等[9]提出一种快速确定Eps 参数的算法,但算法MinPts 参数恒定取值为4。周治平等[10]提出AF-DBSCAN 算法,自适应确定了两参数,但聚类结果偶然因素更多。Khan 等[11]提出的AD-DBSCAN 自适应聚类算法也无法自动识别簇数,需提前给定。李宗林等[12]提出(Kernel-DBSCAN)可通过数据的分布特征来确定两个参数,但仅在一维上有效,高维度聚类效果差。由李文杰等人提出的KANN-DBSCAN 算法[13],基于自身特征自动确定最优Eps 和MinPts,聚类分类结果准确性较高,但仅运行于二维少量点数据聚类实验。
综上,本研究利用基于不规则三角网加密滤波算法[14]提取风电场原始点云数据中的地面点及非地面点,使用三维KANN-DBSCAN 算法对非地面点进行精分类,采用South LiDAR 软件在地面点云中分类道路点,实现风电场点云数据高效、准确分类。
风电场点云数据是利用三维激光LiDAR,对地表进行扫描得到的三维数据,主要分为两大类:
(1) 地面点云,包含裸地表面、道路等点。
(2) 非地面点云,包括建筑物、密林植被、高压或民用电线等点。
本研究将去噪后的原始数据分为地面点和非地面点。并进一步分类非地面、地面点点云中的植被、建筑、道路点云等点云。形成一套完整风电场点云数据处理方法路线,路线图见图1,本研究方法大幅提高风电场点云数据分类精度和效率。
图1 风电场点云数据处理方法路线
庙墩中学前段数据面积36 881.662 m2,数据中共包含40 419 351 个点云对象,下文具体分析,以庙墩中学前段数据为例:
不规则三角网加密滤波算法对地面点分类,实现步骤如下:
(1) 首先选择低点建立初始三角网模型。
(2) 利用算法持续加入新的点向上扩建模型,使其与地表模型更加吻合。
(3) 数据点纳入三角网需满足两个阈值,为反复参数迭代角和迭代距离。新激光点连接与其距离最小的三角形顶点成线,该线与对应三角形所处平面的最大角度,称为迭代角。随着迭代角的减小,点云起伏变化的幅度也减小,意味着迭代角与地面点数量成正比。迭代距离在三角形较大时,可以避免在三角形向上构建的情况下出现剧烈的波动甚至大的跳跃等状况;在三角形较小时,由于迭代距离,迭代角度随之迭代减小,可以避免地面点云出现过多的无用点云数据。当三角形边短于一个给定值,则迭代停止。两个参数的定义见图2。
图2 反复参数的定义示意
根据如上步骤即可实现地面点与非地面点的快速分类。使用不规则三角网加密滤波算法分类后的庙墩中学前段地面点云及非地面点云数据,其中包含36 456 736 个地面点和3 958 332 个非地面点。
本研究针对非地面点基于KANN-DBCSCAN 算法对非地面点云进行精分类,地面点云分类利用集成的South LiDAR 软件平台实现地面点云精分类。
KANN DBCSCAN 算法基于DBSCAN 算法自适应确定Eps 和MinPts 的参数,其中,Eps 为扫描半径,MinPts 为邻域密度阈值。具体算法求解过程如下:
(1) Eps 列表由数学期望法和经过平均最近邻法改进的K-平均最邻近法[15]相结合生成。该算法计算数据集D 中所有对象的K-最邻近距离,再取所有K-最邻近距离的平均值,最后计算每一个K,得到K-平均最邻近距离向量,计算步骤如下:
Step1:数据集D 中所有对象之间的距离,经过计算可得到矩阵Distm×n,式中对象个数为m,第i 个对象到第j 个对象的距离是dist(i,j)。
图3 为庙墩中学前段非地面点数据集的Eps 列表和K 值的关系图,其中Eps 随K 值增大而升高。
图3 Eps 列表和K 值关系
(2) 使用数学期望法,生成MinPts 参数列表。该方法利用上一步生成的Eps 参数列表,计算对应Eps邻域中的对象数,计算所有对象的Eps邻域对象平均数,作为整个数据集D 的邻域密度阈值MinPts,其表达式为:
Qi为第i 个数据点的Eps 邻域数量;m 为数据集D 的数据点的总个数。
依次计算每个Eps 参数可得到庙墩中学前段非地面点数据集MinPts 与K 值关系图见图4。
图4 MinPts 列表和K 值关系
(3) 自适应确定最优参数。该方法采用参数集合DEps的数据和MinPts参数作为DBSCAN 算法的两个关键参数进行计算,计算所得再进行聚类分析。最优K 值为利用不同的K 值计算时,生成的簇数N 连续三次相同对应的值K。将其最优K 值的K-平均最邻近距离Distk作为最优的Eps 参数,与其相应的邻域密度阈值MinPts 作为最优MinPts 参数。
(4) 将最优的Eps 参数和最优MinPts 参数代入DBSCAN 算法。该算法开始任意选取一个未访问点,找出该点Eps 邻域内的所有临近点。找点数大于或者等于MinPts 时,该点与其临近点形成一个簇,并将出发点标记为已访问点。之后对簇内所有未标记的点,以相同的方法处理来延展该簇。当访问完簇内所有标记的点后,用相同的算法去处理未访问点,将数据集分成各种簇,以此达到全部非地面点云数据分类的目的。
South LiDAR 软件平台的分类功能,可实现在地面点中分类出地形点及道路点,操作难度低,效率及准确率较高。
利用上述方法对庙墩中学前段数据集进行分析,通过KANN-DBCSCAN 算法运行,得出聚类簇数与K值的关系见图5。由图可得当K = 89 到K = 163簇数稳定,根据此选取K=163 时对应最优Eps 和MinPts 参数,分别为Eps=6.693,MinPts=113。将两参数导入DBSCAN 算法可得出聚类结果,结合South LiDAR 软件对地面点分类。非地面点云分成结果为3个主要类别,分类准确度较高;地面点中到道路分类结果效果好。由此证明本算法能够有效的对非地面、地面点云进行精分类。
图5 聚类簇数N 和K 值关系
本研究以广东韶关市翁源周陂风电场项目庙墩中学作为研究对象。地点位于广东韶关市翁源县周陂镇,存在山地、密林及村镇等复杂地形环境。采用无人机激光LiDAR 进行点云数据测绘,飞行工具选取大疆Matrice 300 RTK,最大飞行高程为100 m,最快飞行速度为23 m/s。三维激光扫描仪型号为禾赛Pandar 40P,选用Ustudio 软件进行原始数据解算,利用South LiDAR 软件进行点云去噪,导出XYZ 文件,本研究算法主要使用Python 实现。
庙墩中学中段及后段去噪后的原始点云数据,总面积分别为28 296.118 m2和36 371.533 m2,中段包含27 152 031 个点云数据,后段包含39 259 992 个点云数据。分类后的庙墩中学中段及后段地面与非地面点云数据。庙墩中学中段中分类得到24 735 748个地面点云数据,2 415 235 个非地面点云数据。庙墩中学后段中分类得到36 277 666 个地面点云数据,2 968 168 个非地面点云数据。结果表明,两段的地面点与非地面点都得到分类较好效果。
利用KANN-DBSCAN 算法及SouthLiDAR 软件,对庙墩中学中段及后段非地面、地面点云数据进行精分类,结果可见KANN-DBSCAN 算法能够使得各类非地面点云得到有效分类,庙墩中学中段点云数据分为三类,包含植被点2 285 476 个,建筑点包括建筑及线杆共126 831 个,电线点为2 928 个;庙墩中学后段点云数据分为四类,其中植被点2 314 283 个,建筑点包括建筑点共650 720 个,电线点为3 165个,菜棚点15 750 个。直接使用SouthLiDAR 软件和KANN-DBSCAN 算法分类a、b 段为SouthLiDAR 软件分类,存在大量植被点和建筑点的混杂,a、b 段使用KANN-DBSCAN 算法分类,两段点云得到有效的区分,还分类出不属于植被的菜棚点。由此可发现相较于直接使用SouthLiDAR 软件对非地面点云直接分类,KANN-DBSCAN 算法分类结果更加准确。
(1) 本研究针对风电场项目点云数据数量庞大,分类不准确的问题。首先使用不规则三角网加密滤波算法,后运用三维KANN-DBSCAN 算法和SouthLiDAR 软件。实现地面点、非地面点快速分类,并进一步分类出植被、建筑、电线、道路等各类点云,指出一条快速有效的风电场点云数据分类方法。
(2) 根据翁源风电场项目点云数据分类结果,证明本研究方法适用于实际风电项目,并验证了本研究方法能提高风电场点云数据分类精度和效率。该方法也能为相近的工程项目数据分类方法给予参考依据。
(3) 本研究仅将原始数据分为植被、建筑、电线等大类,之后还可以针对植被高度,建筑、电线类型等进行更精确的分类研究。