華北電力大學 控制與計算機工程學院,河北保定 071003
絕緣子是輸電線路中的重要元件,起到電氣絕緣及線路支撐的作用,同時也是故障頻發(fā)元件,自爆、破損、裂紋和異物等故障嚴重威脅著輸電線的安全可靠運行[1]。據(jù)統(tǒng)計,因絕緣子故障導致的跳閘事故占目前輸電線路事故的81.3%[2]。
因此,定期監(jiān)測絕緣子狀況,及時發(fā)現(xiàn)絕緣子故障至關(guān)重要。近幾年,因無人機巡線的高效、快捷、可靠、成本低、不受地域影響等優(yōu)點[1],通過對無人機巡線采集的圖像數(shù)據(jù)進行分析處理,從而發(fā)現(xiàn)絕緣子故障已成為研究熱點。而實現(xiàn)絕緣子的精確定位是實現(xiàn)絕緣子故障自動診斷的重要前提。
輸電線路中使用的絕緣子種類繁多,根據(jù)絕緣子片結(jié)構(gòu)型式可分為盤形絕緣子、針式絕緣子、蝶形絕緣子和棒形絕緣子[3]。但是各類絕緣子串具有以下相同特點:絕緣子串的片狀結(jié)構(gòu)具有平行排列的規(guī)律特征。
因此,本文提出一種基于聚類分析與Adaboost算法的絕緣子串識別方法,通過聚類分析初步確定絕緣子串區(qū)域,通過Adaboost分類器對初識別結(jié)果進行進一步判定,實現(xiàn)絕緣子串的準確識別,識別準確率達到91.5%。
本文所提絕緣子串識別方法的思路如圖1所示。首先對待測航拍巡檢圖像進行預處理后,采用LSD算法檢測直線段,通過聚類分析檢測平行線段,初步確定絕緣子串區(qū)域。由于航拍背景中有可能存在其他同樣具備平行特征的目標,通過建立正負樣本集,提取不變矩特征進行學習訓練,得到Adaboost級聯(lián)分類器,用此分類器對絕緣子串初始識別結(jié)果進行進一步判定,得到最終識別結(jié)果。
LSD[4]是一種線段檢測子,相比于其它線段檢測算法,它具有運算時間短,不需要人工設(shè)置參數(shù)等優(yōu)點。該算法的核心思想是區(qū)域生長和誤差控制,具體處理過程如下所示:
(1)梯度特征計算
首先對圖像進行高斯下采樣來消除鋸齒效應(yīng),并計算圖像中每一個像素點的梯度值和梯度方向。
(2)像素點偽排序
根據(jù)梯度值對所有的點進行偽排序,建立狀態(tài)列表,所有的點初始狀態(tài)均為UNUSED,將梯度值小于閾值ρ的點的狀態(tài)設(shè)為USED。
(3)區(qū)域生長
取出列表偽排序中數(shù)值最大的點作為種子點,以該點為起點搜索周圍狀態(tài)為UNUSED且梯度方向滿足閾值[-t,t]的點,修改滿足條件點的狀態(tài)為USED,生成包含所有滿足條件點的矩形。
(4)一致性判斷
判斷該矩形內(nèi)一致性點密度是否滿足閾值要求,將不滿足的矩形切斷為多個矩形,并重復本步驟,直至滿足閾值要求。點一致性判別公式為:
式中:region_ang(t) —第t個區(qū)域的方向角;
ang(i,j)—像素(i,j)的梯度方向角。
(5)線段判斷
用一個隨機分配平均分布于[0-2π]像素值且不包含直線段的噪聲圖像作為模板,計算NFA值,定義如下:
式中:N—當前圖像中直線(矩形框)的數(shù)量;
k(r,l)—模板圖片l中r矩形內(nèi)一致性點的個數(shù);
k(r,i)—測試圖片i中r矩形內(nèi)一致性點的個數(shù)。
如果NFA值很大,則認為當前區(qū)域是背景中的一部分,相反,如果NFA值小于閾值,此時矩形框內(nèi)的區(qū)域則認定為線段,并輸出,線段檢測效果如圖2所示。
統(tǒng)計每一條直線段的長度、方向和中心點坐標,依據(jù)絕緣子串的特點,線段本身滿足平行性, 線段中心點保持在一條直線上,線段的長度、相鄰線段之間的距離保持在一定的范圍內(nèi)。根據(jù)這些特征,給出一種 ADKC(adaptive dynamic k-means clustering)聚類算法[5]對直線段進行聚類,檢測出滿足以上特征的平行線段。
ADKC不需要初始確定聚類質(zhì)心,只需要執(zhí)行一次循環(huán)遍歷即可獲得最終聚類結(jié)果,且每次聚類結(jié)果相同。具體操作過程如下:
假設(shè)直線段集合S={x1,x2,…,xn},其中直線x1的方程為:y=m1x+b1。
(1)構(gòu)建樣本距離矩陣D
其中:di,j—樣本集中兩兩之間的距離
(2)計算距離矩陣中非對角原始的均值和方差
其中,1{·}—表示指示函數(shù)。
(3)計算閾值
其中,δ—正常數(shù)。
(4)平行段聚類
初始化樣本集的聚類數(shù)為1,樣本聚類中為μ1=x1,第1聚類結(jié)果為S1={x1},計算待處理樣本xi到所有聚類中心的距離,并獲得該樣本屬于的聚類類別jmin,如果該樣本的最小距離小于閾值ξ,說明樣本屬于第jmin類,并記錄該直線段樣本的長度、方向、中心點位置,以此對所有直線段進行處理后,對K個聚類結(jié)果執(zhí)行權(quán)重歸一化操作,并計算直線段聚類結(jié)果。
通過聚類分析后,平行線段檢測結(jié)果如圖3所示。
矩是一種線性特征,矩特征對于圖像的旋轉(zhuǎn)、比例和平移具有不變性,因而被用來描述圖像中的區(qū)域特征[6]。
一幅數(shù)字圖像f(x,y)的二維(p+q)階矩定義為:
其中,p,q=0, 1, 2……。
相應(yīng)中心矩定義為:
歸一化(p+q)階中心矩定義為:
Hu[7]利用上述矩理論構(gòu)造了7個具有平移、比例和旋轉(zhuǎn)不變性的矩不變量,即Hu不變矩。
Adaboost算法[8]起源于Schapire在1959年提出的Boosting算法,它是一種能夠提升任意給定學習算法精度的普適方法。其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構(gòu)成一個更強的最終分類器(強分類器)。
其算法本身是通過改變數(shù)據(jù)分布來實現(xiàn)的,它根據(jù)每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權(quán)值。將修改過權(quán)值的新數(shù)據(jù)集送給下層分類器進行訓練,最后將每次訓練得到的分類器最后融合起來,作為最后的決策分類器。使用Adaboost分類器可以排除一些不必要的訓練數(shù)據(jù)特征,并放在關(guān)鍵的訓練數(shù)據(jù)上面。
AdaBoost算法的具體步驟如下:
1、給定訓練樣本集S:
其中,X和Y—分別對應(yīng)于正例樣本和負例樣本;
T—訓練的最大循環(huán)次數(shù)。
2、初始化樣本權(quán)重為1/n,即為訓練樣本的初始概率分布;
3、第一次迭代:
(1)訓練樣本的概率分布相似的情況下,訓練弱分類器;
(2)計算弱分類器的錯誤率;
(3)選取合適閾值,使得誤差最?。?/p>
(4)更新樣本權(quán)重;
經(jīng)T次循環(huán)后,得到T個弱分類器,按更新的權(quán)重疊加,最終得到的強分類器。
圖4是Adaboost算法訓練過程。
利用上述方法對絕緣子串進行識別,本文選取500張正樣本(絕緣子串)圖像和500張負樣本(背景)圖像,分別提取正負樣本的7個Hu不變矩后,采用Adaboost算法進行分類器訓練,得到一個級聯(lián)分類器,運用該分類器對聚類分析初始識別區(qū)域進行進一步識別,最終識別效果如圖5所示。該算法在VS2008,opencv2.4.3的環(huán)境下編程實現(xiàn)。
將本文算法與文獻[9]的方法進行比較,算法的平均時耗和檢測率見表1。
表1 算法的平均耗時與檢測率比較
在輸電線路識別中,準確識別絕緣子串位置是檢測絕緣子串故障的前提,本文針對絕緣子串的特點,提出了一種有效的絕緣子串識別方法,通過聚類分析檢測平行線段,通過Adaboost分類器進一步識別絕緣子串。實驗證明,本文提出的絕緣子串方法具有以下特點。
(1)魯棒性強。對于不同背景下的輸電線路航拍圖像,只要圖像中絕緣子串結(jié)構(gòu)清晰,該算法就能對絕緣子串進行準確識別與定位。
(2)識別效果好。對于不同種類的絕緣子串都能準確定位,檢測率能夠達到91%以上。
(3)實時性好。該算法利用聚類分析檢測平行線段的方式對絕緣子串區(qū)域進行預定位,大大減少了機器學習遍歷搜索的區(qū)域,整體計算用時少,保證了算法的實時性。
本文所提的絕緣子串識別方法面向電力系統(tǒng)工程應(yīng)用,具有魯棒性強、定位效果好、實時性高等優(yōu)點,在工程實際中有很好的應(yīng)用前景。