華北電力大學 控制與計算機工程學院,河北保定 071003
絕緣子是輸電線路中的重要元件,起到電氣絕緣及線路支撐的作用,同時也是故障頻發元件,自爆、破損、裂紋和異物等故障嚴重威脅著輸電線的安全可靠運行[1]。據統計,因絕緣子故障導致的跳閘事故占目前輸電線路事故的81.3%[2]。
因此,定期監測絕緣子狀況,及時發現絕緣子故障至關重要。近幾年,因無人機巡線的高效、快捷、可靠、成本低、不受地域影響等優點[1],通過對無人機巡線采集的圖像數據進行分析處理,從而發現絕緣子故障已成為研究熱點。而實現絕緣子的精確定位是實現絕緣子故障自動診斷的重要前提。
輸電線路中使用的絕緣子種類繁多,根據絕緣子片結構型式可分為盤形絕緣子、針式絕緣子、蝶形絕緣子和棒形絕緣子[3]。但是各類絕緣子串具有以下相同特點:絕緣子串的片狀結構具有平行排列的規律特征。
因此,本文提出一種基于聚類分析與Adaboost算法的絕緣子串識別方法,通過聚類分析初步確定絕緣子串區域,通過Adaboost分類器對初識別結果進行進一步判定,實現絕緣子串的準確識別,識別準確率達到91.5%。
本文所提絕緣子串識別方法的思路如圖1所示。首先對待測航拍巡檢圖像進行預處理后,采用LSD算法檢測直線段,通過聚類分析檢測平行線段,初步確定絕緣子串區域。由于航拍背景中有可能存在其他同樣具備平行特征的目標,通過建立正負樣本集,提取不變矩特征進行學習訓練,得到Adaboost級聯分類器,用此分類器對絕緣子串初始識別結果進行進一步判定,得到最終識別結果。
LSD[4]是一種線段檢測子,相比于其它線段檢測算法,它具有運算時間短,不需要人工設置參數等優點。該算法的核心思想是區域生長和誤差控制,具體處理過程如下所示:

(1)梯度特征計算
首先對圖像進行高斯下采樣來消除鋸齒效應,并計算圖像中每一個像素點的梯度值和梯度方向。
(2)像素點偽排序
根據梯度值對所有的點進行偽排序,建立狀態列表,所有的點初始狀態均為UNUSED,將梯度值小于閾值ρ的點的狀態設為USED。
(3)區域生長
取出列表偽排序中數值最大的點作為種子點,以該點為起點搜索周圍狀態為UNUSED且梯度方向滿足閾值[-t,t]的點,修改滿足條件點的狀態為USED,生成包含所有滿足條件點的矩形。
(4)一致性判斷
判斷該矩形內一致性點密度是否滿足閾值要求,將不滿足的矩形切斷為多個矩形,并重復本步驟,直至滿足閾值要求。點一致性判別公式為:

式中:region_ang(t) —第t個區域的方向角;
ang(i,j)—像素(i,j)的梯度方向角。
(5)線段判斷
用一個隨機分配平均分布于[0-2π]像素值且不包含直線段的噪聲圖像作為模板,計算NFA值,定義如下:

式中:N—當前圖像中直線(矩形框)的數量;
k(r,l)—模板圖片l中r矩形內一致性點的個數;
k(r,i)—測試圖片i中r矩形內一致性點的個數。
如果NFA值很大,則認為當前區域是背景中的一部分,相反,如果NFA值小于閾值,此時矩形框內的區域則認定為線段,并輸出,線段檢測效果如圖2所示。
統計每一條直線段的長度、方向和中心點坐標,依據絕緣子串的特點,線段本身滿足平行性, 線段中心點保持在一條直線上,線段的長度、相鄰線段之間的距離保持在一定的范圍內。根據這些特征,給出一種 ADKC(adaptive dynamic k-means clustering)聚類算法[5]對直線段進行聚類,檢測出滿足以上特征的平行線段。
ADKC不需要初始確定聚類質心,只需要執行一次循環遍歷即可獲得最終聚類結果,且每次聚類結果相同。具體操作過程如下:
假設直線段集合S={x1,x2,…,xn},其中直線x1的方程為:y=m1x+b1。
(1)構建樣本距離矩陣D

其中:di,j—樣本集中兩兩之間的距離

(2)計算距離矩陣中非對角原始的均值和方差



其中,1{·}—表示指示函數。
(3)計算閾值

其中,δ—正常數。
(4)平行段聚類
初始化樣本集的聚類數為1,樣本聚類中為μ1=x1,第1聚類結果為S1={x1},計算待處理樣本xi到所有聚類中心的距離,并獲得該樣本屬于的聚類類別jmin,如果該樣本的最小距離小于閾值ξ,說明樣本屬于第jmin類,并記錄該直線段樣本的長度、方向、中心點位置,以此對所有直線段進行處理后,對K個聚類結果執行權重歸一化操作,并計算直線段聚類結果。
通過聚類分析后,平行線段檢測結果如圖3所示。
矩是一種線性特征,矩特征對于圖像的旋轉、比例和平移具有不變性,因而被用來描述圖像中的區域特征[6]。
一幅數字圖像f(x,y)的二維(p+q)階矩定義為:

其中,p,q=0, 1, 2……。
相應中心矩定義為:

歸一化(p+q)階中心矩定義為:

Hu[7]利用上述矩理論構造了7個具有平移、比例和旋轉不變性的矩不變量,即Hu不變矩。
Adaboost算法[8]起源于Schapire在1959年提出的Boosting算法,它是一種能夠提升任意給定學習算法精度的普適方法。其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。
其算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最后將每次訓練得到的分類器最后融合起來,作為最后的決策分類器。使用Adaboost分類器可以排除一些不必要的訓練數據特征,并放在關鍵的訓練數據上面。
AdaBoost算法的具體步驟如下:
1、給定訓練樣本集S:

其中,X和Y—分別對應于正例樣本和負例樣本;
T—訓練的最大循環次數。
2、初始化樣本權重為1/n,即為訓練樣本的初始概率分布;
3、第一次迭代:
(1)訓練樣本的概率分布相似的情況下,訓練弱分類器;
(2)計算弱分類器的錯誤率;
(3)選取合適閾值,使得誤差最小;
(4)更新樣本權重;
經T次循環后,得到T個弱分類器,按更新的權重疊加,最終得到的強分類器。
圖4是Adaboost算法訓練過程。

利用上述方法對絕緣子串進行識別,本文選取500張正樣本(絕緣子串)圖像和500張負樣本(背景)圖像,分別提取正負樣本的7個Hu不變矩后,采用Adaboost算法進行分類器訓練,得到一個級聯分類器,運用該分類器對聚類分析初始識別區域進行進一步識別,最終識別效果如圖5所示。該算法在VS2008,opencv2.4.3的環境下編程實現。
將本文算法與文獻[9]的方法進行比較,算法的平均時耗和檢測率見表1。


表1 算法的平均耗時與檢測率比較
在輸電線路識別中,準確識別絕緣子串位置是檢測絕緣子串故障的前提,本文針對絕緣子串的特點,提出了一種有效的絕緣子串識別方法,通過聚類分析檢測平行線段,通過Adaboost分類器進一步識別絕緣子串。實驗證明,本文提出的絕緣子串方法具有以下特點。
(1)魯棒性強。對于不同背景下的輸電線路航拍圖像,只要圖像中絕緣子串結構清晰,該算法就能對絕緣子串進行準確識別與定位。
(2)識別效果好。對于不同種類的絕緣子串都能準確定位,檢測率能夠達到91%以上。
(3)實時性好。該算法利用聚類分析檢測平行線段的方式對絕緣子串區域進行預定位,大大減少了機器學習遍歷搜索的區域,整體計算用時少,保證了算法的實時性。
本文所提的絕緣子串識別方法面向電力系統工程應用,具有魯棒性強、定位效果好、實時性高等優點,在工程實際中有很好的應用前景。