束庆霏
(国网江苏省电力有限公司张家港供电公司,江苏 张家港 215600)
杆塔精细化巡检是无人机智能巡检工作的重要一环,激光点云技术是当前杆塔三维建模的重要方法[1-4]。本文主要研究点云数据中杆塔坐标的提取,以供无人机精细化巡检的航迹规划使用。
杆塔结构特征明显,可将点云数据在二维平面内格网化,再基于杆塔特征进行识别分析。文献[5]基于格网特征对杆塔进行识别,并通过分层切片法获取杆塔的平面中心坐标。文献[6]基于点云中杆塔高密度、大坡度、大高差的特征,提出一种基于二维格网多维特征分析的输电杆塔自动定位方法。文献[7]对点云构建K-D 树和二维格网,根据密度、nDSM 统计兴趣区,最后根据其空间分布特征得到杆塔的坐标。其他学者将点云数据中的导线、杆塔和地面点分离,再识别定位杆塔。文献[8]通过K-means聚类算法分别得到导线和杆塔的点云数据,进而为无人机自主巡线提供航迹规划。文献[9]围绕点云的全局走向统计特征设计算法,通过K-means聚类算法得到杆塔和导线的种子点簇,再根据杆塔种子点簇和杆塔结构特征,向上向下利用区域生长算法逐层生成最终杆塔。文献[10]根据杆塔的横担宽和点云的属性值,采用改进的快速三维凸包构造算法来确定杆塔位置,实现杆塔点云的提取分类。
此外,还可通过其他方法识别定位点云中的杆塔。文献[11-12]采用半自动化方法,首先建立不同类型的杆塔模型,计算点云分布的方向特征以确定输电杆塔的主方向,再从杆塔点云中捕捉杆塔关键点,根据杆塔模型进行匹配,确定最终杆塔。该方法需事先建立各类杆塔的模型,人工处理干预较多。文献[13]利用门型杆塔的圆柱部分得到门型杆塔的水平投影直线,再通过距离阈值判断去除点云中多余的导线点云,并基于塔顶向下搜索去除地面点。已有研究一般将全局密度较大的位置判断为杆塔,某些地形复杂处会被误判为杆塔,通过设置单一高程阈值来过滤地面点,容错率低[14],且致力于还原单个杆塔的点云模型,忽略了点云数据中杆塔数量的完整性。其中一些算法如K-means聚类算法、区域生长算法等需耗费大量的时间成本。本文考虑杆塔、导线和地面点云的不同空间特征,能够分离全部杆塔,适用于山地、丘陵、平原等各种地形的塔杆提取。通过基于空间特征的杆塔提取算法,可从庞大的点云数据中(1条线路约3亿多点)快速分离出杆塔,并获取全部杆塔的坐标。
采用某市电网2条220 kV输电线路的激光点云为研究数据,每条线路分为5段,每段点云数量为4 000万至9 000万,数据为las格式。首先利用Python将数据转换为PCD格式,以供后续编程处理。点云信息包括:被测点的平面位置和高程,RGB(红、绿、蓝)颜色信息,反射强度等。每条线路的点云数据约3亿多,数据大小达10 G多。通过Python的Laspy库提取所有激光点云的平面位置和高程信息进行研究。
平面位置采用CGCS2000(China Geodetic Coordinate System 2000)坐标系,以地球为中心,固定在地球上的右手3D坐标由3个正交轴组成,其中x和y轴位于赤道平面,z轴平行于平均地球旋转轴并指向北极。高程即海拔高度,单位为m。
由于激光点云数据庞大,需通过降采样和初步过滤地面点云来预处理点云数据,然后基于杆塔、导线和地面点云的不同空间特征来分离、粗提取每个杆塔,最后考虑杆塔的直立特性和对称特性精提取每个杆塔坐标。
采用Open3d库里的函数对激光点云数据降采样处理。降采样方法一般有均匀下采样、体素下采样和曲率下采样,三者区别如下:
1)均匀下采样首先需选取1个种子点,并设置1个内点集合,每次从点云中找出1个不属于内点集合且距离内点最远的点。本文设置每30个点采样1个点。此采样方式时间短,效果较好。
2)体素下采样是将三维空间体素化,然后在每个体素内采样1个点,通常选用中心点作为采样点。本文设置体素大小为3。此采样方式时间短,但容易导致杆塔导线部分点云缺失。
3)曲率下采样是在点云曲率越大的地方,采样点越多。首先,计算每个点的邻域;然后,计算点到邻域点的法线夹角值,曲率越大的地方,该夹角值越大;接着设置1个角度阈值,点的邻域夹角值大于该阈值的点为特征明显的区域,其余为不明显区域;最后,均匀采样特征明显区域和不明显区域。本文设置邻域点数为1 000,角度阈值为30°,特征明显区域每30个点采样1个点,不明显区域每100个点采样1个点。此采样方式效果好,但非常耗时,以某段包含8万点云的线路为例,均匀下采样和体素下采样只需几秒钟,曲率下采样需2 h左右。
3种采样结果如图1—图3所示。图2中大部分杆塔点云缺失,图3中特征不明显的导线点云部分缺失。综合考虑采样效果和时间成本,本文选用图1的均匀下采样。
图1 均匀下采样
图2 体素下采样
图3 曲率下采样
为去除多余地面点,先对降采样后的点云作初步的过滤地面点处理。某市地处平原地区,平均海拔高度为7 m, 220 kV 的杆塔呼高至少达到20 m,因此设置高度阈值为12 m,容错率高,可保留全部杆塔,同时可过滤一半多的点云,大大提高后续程序处理效率。过滤地面点后的线路如图4所示,地面点密度大大降低。
图4 过滤地面点后的线路
本文基于杆塔、导线和地面点云的空间分布特征将每个杆塔分离。采集点云数据时,无人机位于导线或杆塔的正上方,在一定范围内通过雷达发射激光点,距离近的点会先反射回来被接收,距离远的点则反之,因此在一定范围内,点云在空间里是无序的,但从全局看,沿着线路方向是有序的。本文设置4 000个点云为1个区间,根据其空间特征判断是否存在杆塔,算法流程如下:
1)将这4 000个点按高程每2 m设置1个区间,区间范围为12~100 m,保证不会遗漏塔顶点云。
2)计算每个区间内点云的高程之和,并以列表形式储存,如式(1)—式(4)所示,其中n1至n6为非零值。
[n1,n2,n3…0,0,0…n4,n5,n6…0,0,0]
(1)
[n1,n2,n3,n4,n5,n6…0,0,0]
(2)
[0,0,0…n1,n2,n3…0,0,0…n4,n5,n6…0,0,0]
(3)
[0,0,0…n1,n2,n3,n4,n5,n6…0,0,0]
(4)
3)通过列表值检验这4 000个点内是否存在杆塔,中间存在大量零值的即为非杆塔点云。对于式(1),n1至n3为地面点,n4至n6为导线点,需排除这4 000个点云;对于式(2),n1至n6为地面点和杆塔点,需保留这4 000个点云。存在海拔较高的区域(>12 m),计算区间高程时开始会出现零值,如式(3)—式(4),先去除前面的零值,再分别按式(1)、式(2)计算。
算法流程3中的计算方法如下:
1)通过索引函数得到列表中第一次出现零值的位置,记为P;
2)判断P是否为0(Python索引从0开始),若是,则删除列表首位的零值,继续计算P,直到P不为0;
3)通过计数函数得到列表中零值的个数,记为T,以第一次零值位置为分界点,通过式5计算分界点后面列表的元素个数,记为N(包括分界点)
N=LEN(L)-P
(5)
式中:LEN为函数,可得到列表L的元素个数,L如式(1)—(4)所示。
4)判断T是否等于N,若是,则保留这4 000个点云,否则去除。
每段线路按4 000个点云判断计算,最终可分离所有杆塔,并过滤大量导线地面点云(可过滤接近一半的点云数量),如图5所示。单个放大的杆塔如图6所示,依旧包含大量的地面点云,需进一步提取。在CGCS2000坐标系下,图5和图6中,杆塔横坐标位置约为281 903~284 698 m,纵坐标位置约为3 529 810~3 531 839 m,高程最高可达80 m。本文提取杆塔算法适用于该坐标系下的所有地形地貌,不受坐标位置影响,因此本文的图例舍去了坐标系,只展示三维提取效果。本文的区间大小4 000,根据点云采集密度、降采样方式和杆塔密度设置。区间过小,容错率低,可能使杆塔不完整;区间过大,容错率高,能完整保留杆塔,但会多出导线地面点云。综合考虑,设置区间大小为4 000,相同的点云采集密度和降采样方式,可采用相同的区间大小,同时可根据杆塔密度进行微调。
图5 杆塔粗提取
图6 杆塔点云
经过杆塔粗提取后,可将所有杆塔分离,可通过Gaussian KDE 函数计算二维平面内的点云密度分布,但此方法非常耗时,60万的点云数量需计算4 h。因此本文直接遍历粗提取后的点云,每2 000个点云确定1个位置,在该点云位置左右分别提取2 000个点云,以这4 000点云进行杆塔精提取,通过纵向分层的方法确定杆塔中轴位置[15-17],再基于中心对称的思想进一步去除杂点,具体提取流程如下:
1)将粗提取后的点云按高程每2 m设置1个区间,计算该区间点云在二维平面的质心,并存进列表;
2)依次计算上下层区间质心在垂直方向的tan阈值,设置tan阈值为0.5,即26.5°,判断选取满足tan小于0.5的相邻几段区间,计算这几段区间的平均质心作为杆塔的中轴,实际tan<1基本都能得到较好的结果;
3)步骤2中若不存在tan<阈值的区间,则表明这4 000点不存在完整的杆塔,直接进入下一个循环;
4)利用步骤2得到杆塔中轴,过滤中轴周围超过10 m的点云,可过滤掉大部分地面点云(可过滤接近一半的点云数量);
5)基于步骤2得到的杆塔中轴和步骤4过滤后的点云,根据杆塔的对称性,遍历所有的点云,计算每个点云p关于杆塔中轴的中心对称点p′的位置,以p′位置为球心,若球心周围1 m不存在点云,则去除p。
步骤4处理得到的杆塔如图7所示,地面点云基本被过滤干净,底部少部分点云为树木。经过步骤4的过滤,步骤5的处理效率大大提高,步骤5处理得到的杆塔如图8所示,只剩杆塔和部分导线点云,多出的导线点云不影响杆塔的精细化巡检航迹规划。为更好展示杆塔提取效果,本文图例经过一定的三维旋转,以第三视角呈现,因此舍去了坐标系。
图7 杆塔精提取——步骤4
图8 杆塔精提取——步骤5
根据点云采集密度、降采样方式和杆塔粗提取方法,本文设置的区间4 000可完全包含整个杆塔点云,以每2 000点云遍历粗提取后的点云可得到该段线路的全部杆塔。若杆塔非对称,如上字型塔,可增大p′的球心半径,以保证杆塔上部不会遗漏点云。从降采样、过滤地面点、杆塔粗提取到杆塔精提取,平均每基杆塔耗时不超过2 min。
基于某市2条220 kV输电线路的激光点云数据,对输电杆塔坐标进行了提取,得到如下结论:
1)相较于体素下采样和曲率下采样,均匀下采样在时间成本和采样效果上更有优势。
2)基于杆塔、导线和地面点云空间特征的粗提取方法可去除两两杆塔间的导线和地面点云,完整地分离提取出每个杆塔。
3)基于杆塔直立特性和对称特性的精提取方法可去除所有地面点云和其余杂点,快速获取每个杆塔坐标,单个杆塔建模效果较好,平均每基杆塔提取时间不超过2 min。
本文采用平原地区的输电杆塔点云数据对算法进行验证,实际对于位处山区或地形复杂的输电线路,本文的算法依旧有效,只需去除过滤地面点这一步,然后调整杆塔提取的区间范围即可。此外,若存在并行杆塔,本文基于杆塔中轴的精提取算法则失效,但基于空间分布特征的粗提取算法依旧有效,粗提取后再通过人工判断精提取。