束慶霏
(國網江蘇省電力有限公司張家港供電公司,江蘇 張家港 215600)
桿塔精細化巡檢是無人機智能巡檢工作的重要一環(huán),激光點云技術是當前桿塔三維建模的重要方法[1-4]。本文主要研究點云數據中桿塔坐標的提取,以供無人機精細化巡檢的航跡規(guī)劃使用。
桿塔結構特征明顯,可將點云數據在二維平面內格網化,再基于桿塔特征進行識別分析。文獻[5]基于格網特征對桿塔進行識別,并通過分層切片法獲取桿塔的平面中心坐標。文獻[6]基于點云中桿塔高密度、大坡度、大高差的特征,提出一種基于二維格網多維特征分析的輸電桿塔自動定位方法。文獻[7]對點云構建K-D 樹和二維格網,根據密度、nDSM 統(tǒng)計興趣區(qū),最后根據其空間分布特征得到桿塔的坐標。其他學者將點云數據中的導線、桿塔和地面點分離,再識別定位桿塔。文獻[8]通過K-means聚類算法分別得到導線和桿塔的點云數據,進而為無人機自主巡線提供航跡規(guī)劃。文獻[9]圍繞點云的全局走向統(tǒng)計特征設計算法,通過K-means聚類算法得到桿塔和導線的種子點簇,再根據桿塔種子點簇和桿塔結構特征,向上向下利用區(qū)域生長算法逐層生成最終桿塔。文獻[10]根據桿塔的橫擔寬和點云的屬性值,采用改進的快速三維凸包構造算法來確定桿塔位置,實現桿塔點云的提取分類。
此外,還可通過其他方法識別定位點云中的桿塔。文獻[11-12]采用半自動化方法,首先建立不同類型的桿塔模型,計算點云分布的方向特征以確定輸電桿塔的主方向,再從桿塔點云中捕捉桿塔關鍵點,根據桿塔模型進行匹配,確定最終桿塔。該方法需事先建立各類桿塔的模型,人工處理干預較多。文獻[13]利用門型桿塔的圓柱部分得到門型桿塔的水平投影直線,再通過距離閾值判斷去除點云中多余的導線點云,并基于塔頂向下搜索去除地面點。已有研究一般將全局密度較大的位置判斷為桿塔,某些地形復雜處會被誤判為桿塔,通過設置單一高程閾值來過濾地面點,容錯率低[14],且致力于還原單個桿塔的點云模型,忽略了點云數據中桿塔數量的完整性。其中一些算法如K-means聚類算法、區(qū)域生長算法等需耗費大量的時間成本。本文考慮桿塔、導線和地面點云的不同空間特征,能夠分離全部桿塔,適用于山地、丘陵、平原等各種地形的塔桿提取。通過基于空間特征的桿塔提取算法,可從龐大的點云數據中(1條線路約3億多點)快速分離出桿塔,并獲取全部桿塔的坐標。
采用某市電網2條220 kV輸電線路的激光點云為研究數據,每條線路分為5段,每段點云數量為4 000萬至9 000萬,數據為las格式。首先利用Python將數據轉換為PCD格式,以供后續(xù)編程處理。點云信息包括:被測點的平面位置和高程,RGB(紅、綠、藍)顏色信息,反射強度等。每條線路的點云數據約3億多,數據大小達10 G多。通過Python的Laspy庫提取所有激光點云的平面位置和高程信息進行研究。
平面位置采用CGCS2000(China Geodetic Coordinate System 2000)坐標系,以地球為中心,固定在地球上的右手3D坐標由3個正交軸組成,其中x和y軸位于赤道平面,z軸平行于平均地球旋轉軸并指向北極。高程即海拔高度,單位為m。
由于激光點云數據龐大,需通過降采樣和初步過濾地面點云來預處理點云數據,然后基于桿塔、導線和地面點云的不同空間特征來分離、粗提取每個桿塔,最后考慮桿塔的直立特性和對稱特性精提取每個桿塔坐標。
采用Open3d庫里的函數對激光點云數據降采樣處理。降采樣方法一般有均勻下采樣、體素下采樣和曲率下采樣,三者區(qū)別如下:
1)均勻下采樣首先需選取1個種子點,并設置1個內點集合,每次從點云中找出1個不屬于內點集合且距離內點最遠的點。本文設置每30個點采樣1個點。此采樣方式時間短,效果較好。
2)體素下采樣是將三維空間體素化,然后在每個體素內采樣1個點,通常選用中心點作為采樣點。本文設置體素大小為3。此采樣方式時間短,但容易導致桿塔導線部分點云缺失。
3)曲率下采樣是在點云曲率越大的地方,采樣點越多。首先,計算每個點的鄰域;然后,計算點到鄰域點的法線夾角值,曲率越大的地方,該夾角值越大;接著設置1個角度閾值,點的鄰域夾角值大于該閾值的點為特征明顯的區(qū)域,其余為不明顯區(qū)域;最后,均勻采樣特征明顯區(qū)域和不明顯區(qū)域。本文設置鄰域點數為1 000,角度閾值為30°,特征明顯區(qū)域每30個點采樣1個點,不明顯區(qū)域每100個點采樣1個點。此采樣方式效果好,但非常耗時,以某段包含8萬點云的線路為例,均勻下采樣和體素下采樣只需幾秒鐘,曲率下采樣需2 h左右。
3種采樣結果如圖1—圖3所示。圖2中大部分桿塔點云缺失,圖3中特征不明顯的導線點云部分缺失。綜合考慮采樣效果和時間成本,本文選用圖1的均勻下采樣。
圖1 均勻下采樣
圖2 體素下采樣
圖3 曲率下采樣
為去除多余地面點,先對降采樣后的點云作初步的過濾地面點處理。某市地處平原地區(qū),平均海拔高度為7 m, 220 kV 的桿塔呼高至少達到20 m,因此設置高度閾值為12 m,容錯率高,可保留全部桿塔,同時可過濾一半多的點云,大大提高后續(xù)程序處理效率。過濾地面點后的線路如圖4所示,地面點密度大大降低。
圖4 過濾地面點后的線路
本文基于桿塔、導線和地面點云的空間分布特征將每個桿塔分離。采集點云數據時,無人機位于導線或桿塔的正上方,在一定范圍內通過雷達發(fā)射激光點,距離近的點會先反射回來被接收,距離遠的點則反之,因此在一定范圍內,點云在空間里是無序的,但從全局看,沿著線路方向是有序的。本文設置4 000個點云為1個區(qū)間,根據其空間特征判斷是否存在桿塔,算法流程如下:
1)將這4 000個點按高程每2 m設置1個區(qū)間,區(qū)間范圍為12~100 m,保證不會遺漏塔頂點云。
2)計算每個區(qū)間內點云的高程之和,并以列表形式儲存,如式(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個點云。存在海拔較高的區(qū)域(>12 m),計算區(qū)間高程時開始會出現零值,如式(3)—式(4),先去除前面的零值,再分別按式(1)、式(2)計算。
算法流程3中的計算方法如下:
1)通過索引函數得到列表中第一次出現零值的位置,記為P;
2)判斷P是否為0(Python索引從0開始),若是,則刪除列表首位的零值,繼續(xù)計算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。本文提取桿塔算法適用于該坐標系下的所有地形地貌,不受坐標位置影響,因此本文的圖例舍去了坐標系,只展示三維提取效果。本文的區(qū)間大小4 000,根據點云采集密度、降采樣方式和桿塔密度設置。區(qū)間過小,容錯率低,可能使桿塔不完整;區(qū)間過大,容錯率高,能完整保留桿塔,但會多出導線地面點云。綜合考慮,設置區(qū)間大小為4 000,相同的點云采集密度和降采樣方式,可采用相同的區(qū)間大小,同時可根據桿塔密度進行微調。
圖5 桿塔粗提取
圖6 桿塔點云
經過桿塔粗提取后,可將所有桿塔分離,可通過Gaussian KDE 函數計算二維平面內的點云密度分布,但此方法非常耗時,60萬的點云數量需計算4 h。因此本文直接遍歷粗提取后的點云,每2 000個點云確定1個位置,在該點云位置左右分別提取2 000個點云,以這4 000點云進行桿塔精提取,通過縱向分層的方法確定桿塔中軸位置[15-17],再基于中心對稱的思想進一步去除雜點,具體提取流程如下:
1)將粗提取后的點云按高程每2 m設置1個區(qū)間,計算該區(qū)間點云在二維平面的質心,并存進列表;
2)依次計算上下層區(qū)間質心在垂直方向的tan閾值,設置tan閾值為0.5,即26.5°,判斷選取滿足tan小于0.5的相鄰幾段區(qū)間,計算這幾段區(qū)間的平均質心作為桿塔的中軸,實際tan<1基本都能得到較好的結果;
3)步驟2中若不存在tan<閾值的區(qū)間,則表明這4 000點不存在完整的桿塔,直接進入下一個循環(huán);
4)利用步驟2得到桿塔中軸,過濾中軸周圍超過10 m的點云,可過濾掉大部分地面點云(可過濾接近一半的點云數量);
5)基于步驟2得到的桿塔中軸和步驟4過濾后的點云,根據桿塔的對稱性,遍歷所有的點云,計算每個點云p關于桿塔中軸的中心對稱點p′的位置,以p′位置為球心,若球心周圍1 m不存在點云,則去除p。
步驟4處理得到的桿塔如圖7所示,地面點云基本被過濾干凈,底部少部分點云為樹木。經過步驟4的過濾,步驟5的處理效率大大提高,步驟5處理得到的桿塔如圖8所示,只剩桿塔和部分導線點云,多出的導線點云不影響桿塔的精細化巡檢航跡規(guī)劃。為更好展示桿塔提取效果,本文圖例經過一定的三維旋轉,以第三視角呈現,因此舍去了坐標系。
圖7 桿塔精提取——步驟4
圖8 桿塔精提取——步驟5
根據點云采集密度、降采樣方式和桿塔粗提取方法,本文設置的區(qū)間4 000可完全包含整個桿塔點云,以每2 000點云遍歷粗提取后的點云可得到該段線路的全部桿塔。若桿塔非對稱,如上字型塔,可增大p′的球心半徑,以保證桿塔上部不會遺漏點云。從降采樣、過濾地面點、桿塔粗提取到桿塔精提取,平均每基桿塔耗時不超過2 min。
基于某市2條220 kV輸電線路的激光點云數據,對輸電桿塔坐標進行了提取,得到如下結論:
1)相較于體素下采樣和曲率下采樣,均勻下采樣在時間成本和采樣效果上更有優(yōu)勢。
2)基于桿塔、導線和地面點云空間特征的粗提取方法可去除兩兩桿塔間的導線和地面點云,完整地分離提取出每個桿塔。
3)基于桿塔直立特性和對稱特性的精提取方法可去除所有地面點云和其余雜點,快速獲取每個桿塔坐標,單個桿塔建模效果較好,平均每基桿塔提取時間不超過2 min。
本文采用平原地區(qū)的輸電桿塔點云數據對算法進行驗證,實際對于位處山區(qū)或地形復雜的輸電線路,本文的算法依舊有效,只需去除過濾地面點這一步,然后調整桿塔提取的區(qū)間范圍即可。此外,若存在并行桿塔,本文基于桿塔中軸的精提取算法則失效,但基于空間分布特征的粗提取算法依舊有效,粗提取后再通過人工判斷精提取。