?

基于MSER-Otsu與直線矯正的儀表指針定位算法

2021-07-26 11:56梁慶華
計算機工程 2021年7期
關鍵詞:中心線指針像素點

秦 軒,馮 磊,梁慶華,張 偉

(1.上海交通大學機械與動力工程學院,上海200240;2.國家電網江蘇省電力有限公司徐州供電公司,江蘇徐州221000)

0 概述

隨著我國經濟的持續快速發展,各行各業對電力的需求不斷增長,以人力為主的運維模式已不能滿足實際需要,電力系統運維模式向智能化、自動化發展成為必然趨勢[1]。配電站作為電力系統的末端,其運行質量直接影響用戶對整體電網的滿意度[2]。研發配電站無人值守作業機器人代替人工完成數據采集、處理、巡檢和監控等工作,可極大程度地節約人力成本并提高運維工作效率。實現配電設備各類開關和儀表的準確識別是機器人開展配電站各項工作的基礎。相較只需區分狀態的指示燈和開關識別,需獲取指針讀數的電壓表及電流表等指針式儀表的識別更復雜和困難。

指針式儀表的讀數方法主要有距離法和角度法。距離法需檢測指針到臨近刻度線的距離,再通過刻度線的示數判斷讀數[3-4]。角度法需找到基準線(一般為“0”刻度線和最大值刻度線)和指針中心線,通過兩兩夾角的比例關系計算讀數[5-6]??紤]到儀表上刻度線和刻度值較多且細小以及反光或指針遮擋會影響讀數,本文采用角度法對指針式儀表進行讀數。指針中心線的提取是角度法讀數的主要難點和研究熱點。文獻[7]提出一種基于區域生長法的指針中心線提取算法,但在噪聲很大時存在過分割或者欠分割問題。文獻[8]利用小波變換進行邊緣檢測,在一定程度上可抑制圖像噪聲,但只適用于細指針,對于粗指針會提取出雙邊緣,無法實現指針中心線定位。文獻[9]提出一種指針細化算法可有效解決粗指針的雙邊緣問題,但其只考慮指針和表盤紋理的區分,未考慮環境光照影響。文獻[10]通過改進的最大穩定極值區域(Maximally Stable Extremal Region,MSER)算法和概率Hough 變換提取指針中心線并進行角度計算,但MSER 算法難以區分灰度值相近的臨近區域。文獻[11]通過ORB算子實現圖像的傾斜矯正,再利用大律(Otsu)法和細化算法檢測指針中心線,但其未考慮反光和陰影區域的干擾。文獻[12]基于投票機制和輪廓圓形度思想定位表盤回轉中心,進而利用指針必然通過回轉中心的約束提高指針中心線檢測精度,但方形指針表無法通過輪廓得到回轉中心。文獻[13]利用Canny 算子提取指針邊緣并結合概率Hough 變換和聚類方法擬合方形指針表中指針所在直線,但其易受反光和陰影區域的影響。

由上述可知,目前國內關于指針式儀表的識別研究集中于優化指針定位方法,主要采用閾值分割結合直線檢測,僅在理想的實驗環境下才能實現。例如,需正對儀表拍攝且拍攝圖像清晰或反光及陰影未直接影響指針,進而通過一步閾值分割分離出較為準確完整的指針區域。但在實際應用場景中,當機器人在配電站內巡檢時,通常拍攝視角變化較大,且受室內位于天花板上光源的影響,表盤圖像常出現較強的局部反光或陰影。由于指針在表盤上的陰影和指針非常接近,而反光可能直接遮擋指針,因此采用傳統的閾值分割和直線檢測方法會出現誤檢。

本文提出一種基于MSER-Otsu 閾值分割和矯正Hough 變換直線檢測的儀表指針定位算法。利用MSER-Otsu 兩步分離算法進行表盤指針區域分割,在檢測指針中心線時引入Huber loss 對Hough 變換擬合直線進行矯正,并重點考慮實際場景中存在拍攝視角差異和光照等干擾時算法的可靠性,最終對配電站中方形指針表的指針中心線進行準確定位。

1 基于MSER-Otsu 的指針區域分離

1.1 預處理

指針定位的方法主要包括閾值分割和直線擬合。不同于以往研究中的圓形指針表,配電站采用的方形指針表具有細長的矩形黑色邊框,會對指針提取造成干擾。因此,需對方形指針表進行預處理,如圖1所示。先提取方形指針表的邊框內邊緣(見圖1(a))并向內裁剪,得到不含黑色邊框的表盤感興趣區域(Region of Interest,ROI)(見圖1(b)),然后在其中進行指針提取。在計算指針角度時,需使用邊框擬合線的4 個交點進行透視變換,對圖像進行傾斜矯正。

圖1 方形指針表的預處理Fig.1 Preprocessing of square pointer meter

由于表盤ROI 中指針灰度值較低,因此可采用二值化方法將指針和表盤分離??紤]到表盤ROI 中除指針外還有較多的刻度線、陰影等灰度值較低區域的干擾,如果直接對整個ROI 進行閾值分割,則計算量大且難以得到較理想的結果。因此,本文采用一種先利用MSER 算法進行粗提取,然后在粗提取區域進行迭代Otsu 二值化的兩步分離算法(以下稱為MSER-Otsu 算法)。

1.2 MSER 算法粗提取和篩選

MSER 算法是一種利用分水嶺算法思想的紋理檢測方法[14],其能檢測在掃描過程中灰度值上升范圍變化較小的穩定區域,具有仿射不變性,在區域檢測上具有較好的性能[15]。MSER 算法的原理如下:

其中,Qi為二值圖中某一個連通區域的面積,Δ為灰度閾值的微小變化量,q(i)為灰度閾值為i時連通區域面積Qi的變化率。當q(i)小于區域變化率閾值時,Qi即為最大穩定極值區域的面積,該區域隨灰度值上升其面積基本不變。MSER 算法以灰度閾值i=(0,255)對圖像進行掃描,對每個灰度閾值i進行圖像二值化。在本文場景中,指針灰度值明顯低于表盤背景灰度值且指針內部灰度均勻,符合MSER算法對檢測目標的要求。

MSER 檢測和篩選指針區域備選框的操作如圖2所示,具體過程如下:

1)MSER 算法通過區域面積大?。ㄔO置為圖像面積的0.01 倍~0.50 倍)和區域變化率閾值(設置為0.3)進行篩選。由于上述閾值設置較寬松,以確保不同拍攝條件下指針區域始終滿足篩選判據,因此符合要求的備選區域較多(見圖2(a)),還需進一步篩選。

2)根據指針形狀和所在圖像區域的先驗知識,設置如下判據以選取有效的備選框(備選區域的最小外接矩形,見圖2(b)):(1)指針區域備選框右側頂點不會過于接近圖像右邊緣(閾值取圖像寬度的5%);(2)當備選框面積較小時(閾值取圖像面積的0.1 倍),備選框形狀不會過于接近正方形(長寬比范圍為0.9~1.1)。

3)在返回的結果中進行一次非極大值抑制(Non-Maximum Suppression,NMS)合并重疊備選框,重疊面積閾值取0.7,保留重疊備選框中面積最大的備選框,即得到包含指針區域的單一備選框(見圖2(c))??紤]到燈光照射造成反光的影響,將反光導致的異常高亮區域(見圖2(d))灰度值抑制為表盤背景灰度值,此時指針出現分段,但算法仍能準確提取出包含各段指針的備選框(見圖2(e))。然后僅在備選框中進行閾值分割,可極大減少干擾,提高識別效率。

圖2 MSER 算法檢測和篩選的指針區域備選框Fig.2 Candidate boxes of pointer area detected and filtered by MSER algorithm

為確保不漏檢指針區域,篩選時閾值設置較寬松,閾值設置原則是在保證指針區域能被完整提取的前提下,盡量多地篩去干擾區域以提高識別效率,因此可能導致極少數干擾區域被保留,但保證了指針信息的完整性。

1.3 局部迭代的Otsu 算法

MSER 算法在得到備選框的同時,也會標注其中的備選區域像素點。圖2(c)中備選框內備選區域像素點如圖3所示??梢钥闯?,相較于高灰度值的表盤背景,表盤示數、指針投射陰影等區域的灰度值和指針灰度值差距較小,MSER 算法會一并認為其是指針像素點。其中,陰影區域和指針十分接近,如果直接在MSER 檢測的像素點中進行指針中心線提取,則會在陰影區域影響下出現結果位置偏移。因此,需進一步在MSER 提取的指針區域中進行閾值分割,以去除陰影區域的影響。

圖3 MSER 算法標注的備選像素點Fig.3 Candidate pixels marked by MSER algorithm

圖2(c)中含指針的備選框內存在指針像素點(灰度值最低)、陰影像素點(灰度值較低)和表盤背景像素點(灰度值最高)3 類像素點。采用固定閾值分割難以準確找到指針和陰影灰度的分界,且魯棒性較差。使用自動計算閾值的Otsu 算法[16]僅能將區域分為兩類,由于表盤白色背景像素點數量較多且灰度值較高,單次Otsu 算法易誤將指針和陰影歸為同一類,這顯然不符合分離指針的要求。

本文目標是將指針和臨近陰影分開,為解決這一問題,通過結合灰度級擴展的兩輪迭代Otsu 算法實現圖2(c)中3 類像素點的分割(見圖4),該算法具體步驟如下:

圖4 局部迭代的Otsu 算法分離指針過程Fig.4 Pointer separating process by local iterative Otsu algorithm

1)將表盤ROI 中除備選框外的其他區域像素點灰度值設置為0。

2)選取一個備選框內全部像素點,記為備選點集。

3)在備選點集中進行Otsu 閾值分割,將表盤背景和其他區域(包括指針和陰影)像素點分開,并標記超過閾值的像素點。

4)在備選點集中剔除超過閾值的像素點,在剩下的像素點中將灰度級擴展到[0,255],再次進行Otsu 閾值分割,即可將該備選框內指針和陰影分開。

5)選取下一個備選框,重復步驟2~步驟4,直到完成所有備選框的閾值分割,即完成整個表盤ROI的閾值分割。

由灰度直方圖分析可知,圖4(a)備選框內主要有指針和刻度像素點、陰影像素點以及白色背景像素點3 類像素點,其灰度值范圍分別為0~60、80~110和130~160。第一輪Otsu 算法分割計算出灰度閾值為106,因此將灰度值在80~106 范圍內的陰影像素點和指針像素點歸為一類,造成陰影和指針的粘連(見圖4(b))。剔除超過閾值的像素點并進行灰度級擴展后,備選框內主要剩余指針和刻度像素點、被誤分的陰影像素點兩類像素點,其灰度值范圍分別為0~144和192~255。第二輪Otsu 算法分割計算出灰度閾值為146,可將指針和陰影分開(見圖4(c))。在一般情況下,接近該類像素灰度值邊界的極少數像素點可能會被誤分割,但其對結果的影響可忽略。

2 基于直線矯正的指針中心線提取

經過上述處理后,可獲得僅含指針像素點和極少量干擾(包括MSER 算法誤檢區域和正確備選框內未篩去的刻度線等)的表盤ROI 二值化圖像。對于本文所研究方形指針表內的粗指針,還需進一步提取單像素的指針中心線以計算指針偏轉角度。提取粗指針中心線的常見方法有指針形態學細化結合Hough 變換[9-11]。但指針形態學細化的過程需要設計復雜的迭代篩選條件且耗時較長(見本文第3.2節)。因此,本文設計一種基于直線檢測與矯正的指針中心線提取方案以提高處理效率。

2.1 Hough 變換預定位

在表盤ROI 二值化圖像中,指針像素點均近似位于一條直線附近,可通過Hough 變換進行檢測??紤]到反光區域可能將指針分為兩段(見圖2(d)),本文采用基礎Hough 變換檢測直線而非線段,從而同時利用多段指針信息,返回累加值最高的直線即為近似的指針中心線。

Hough 變換通過離散化的直線參數進行搜索,其精度與搜索步長一致。受限于算法時間復雜度,精度和搜索步長分別為1°和1 像素。此外,由于指針有一定寬度,而Hough 變換的結果(直線)僅考慮直接經過的像素點,并不完全貼合指針中心線,需對其進行矯正,以下介紹本文采用的矯正算法。

2.2 Huber loss 直線矯正

以Hough 變換得到的直線為基準線,記為L0(ρ0,θ0),利用二值圖中臨近基準線的像素點對基準線進行矯正。設臨近基準線的像素點集合為P,其表達式如下:

由于本文輸入圖像的大小在一定范圍內,因此考慮指針寬度,dth取5 像素,從而在包含臨近指針像素點的同時排除其他區域干擾。

設矯正直線為Lnew(ρ,θ),以下求取最優參數(ρ,θ),使P中像素點到Lnew(ρ,θ)的距離總和最小,計算公式如下:

式(4)是一個回歸問題,通常使用最小二乘法求解??紤]到最小二乘法采用均方誤差(Mean Squared Error,MSE)容易受離群噪聲點影響[17],因此,本文采用Huber loss[18]作為最優化函數,計算公式如下:

Huber loss 在像素點距離直線較近時采用均方誤差,收斂較快,其在像素點距離直線較遠時采用平均絕對誤差(Mean Absolute Error,MAE),受離群噪聲點影響比均方誤差?。?9],距離閾值δ=0.5dth=2.5,采用梯度下降法進行迭代計算直至收斂。上述方法所得指針中心線提取結果如圖5所示。

圖5 指針中心線提取結果Fig.5 Extraction result of center line of pointer

2.3 指針角度計算

提取到指針中心線后,利用預處理所得表盤內邊框4 個頂點向正方形4 個頂點做透視變換,將圖像矯正為正視圖,此時指針中心線和圖像下邊緣的夾角即為方形指針表的指針角度。

3 實驗與結果分析

使用Python 3 編程語言和OpenCV 庫編寫程序驗證本文提出的MSER-Otsu 算法(以下稱為本文MSER-Otsu 算法)的效果。實驗采用Ubuntu 16.04 64 位系統,16 GB 內存以及2.80 GHz CPU。

3.1 指針區域分離

在指針區域分離方面,針對圖2(c)和圖2(e)中兩類情況,將單次Otsu 算法、全圖兩輪迭代Otsu 算法、MSER 算法與本文MSER-Otsu 算法的二值化圖像分割情況進行對比,結果分別如圖6 和圖7所示。

圖6 不同算法得到的圖2(c)中指針區域分離結果Fig.6 Results of pointer region separation in Fig.2(c)obtained by different algorithms

圖7 不同算法得到的圖2(e)中指針區域分離結果Fig.7 Results of pointer region separation in Fig.2(e)obtained by different algorithms

由圖6 和圖7 可以看出,單次Otsu 算法和MSER算法均無法分離指針和陰影、紋理等灰度相近的區域。全圖兩輪迭代Otsu 算法盡管可以分離指針和陰影區域,但會在其他區域留下許多干擾點(如文字、刻度線和右下角陰影等)。本文MSER-Otsu 算法利用MSER 算法粗提取檢測備選框,在備選框外完全無干擾點,且在備選框內利用兩輪迭代Otsu 算法對3 類像素點進行閾值分割,成功完成指針和陰影像素點的分離。

全圖兩輪迭代Otsu 算法和本文MSER-Otsu 算法的時間開銷如表1所示。由于本文MSER-Otsu 算法是在備選框局部進行迭代,較全圖兩輪迭代Otsu算法所用時間開銷更小,識別效率更高。

表1 兩種算法分離指針區域的時間開銷對比Table 1 Comparison of time cost for pointer region separation between two algorithms ms

3.2 指針中心線提取

本文采用Huber loss 矯正和Hough 變換的算法(以下稱為本文矯正Hough 變換算法)進行指針中心線提取。針對圖6(d)和圖7(d)中兩類情況,將僅使用Hough 變換算法、直接Huber loss 擬合算法、指針細化算法結合Hough 變換算法(以下稱為ZHANG細化結合Hough 變換算法,其中指針細化算法為經典的快速并行ZHANG 細化算法[10,20-21])和本文矯正Hough 變換算法的效果進行對比,結果分別如圖8 和圖9所示。

圖8 不同算法得到的圖6(d)內指針中心線提取結果Fig.8 Results of pointer center line extraction in Fig.6(d)obtained by different algorithms

圖9 不同算法得到的圖7(d)內指針中心線提取結果Fig.9 Results of pointer center line extraction in Fig.7(d)obtained by different algorithms

通常情況下指針較完整(見圖8),由圖8可以看出,僅使用Hough 變換算法所得結果貼近指針上邊緣,偏離指針中心線,這是由于Hough 變換算法只考慮單條直線通過的像素點數量,未考慮粗指針上其他像素點信息導致。直接使用Huber loss 對二值圖中全部有效像素點進行擬合會受其他噪點干擾(如刻度、右下三角區域和指針尾部輪廓),結果明顯偏離指針中心線。ZHANG 細化算法首先提取指針骨架,再對骨架進行Hough 變換,所得結果基本與指針中心線重合。本文矯正Huber loss 變換算法將Hough 變換臨近的指針像素點全部納入考慮范圍,使其到矯正直線的距離最小,同時因為指針關于其中心線對稱,所以矯正直線就是指針中心線的近似直線。此外,相較于在全圖使用Huber loss擬合算法,本文矯正Huber loss變換算法采用Hough變換預定位,只計算預定位直線臨近的像素點,排除了大部分干擾像素點,因此結果明顯優于直接擬合。極端情況下受反光影響,二值圖中指針較細且靠右側上邊緣有所缺失(見圖9)。由圖9 可以看出,各算法所得結果均偏向指針下邊緣,本文矯正Hough 變換算法通過引入預定位直線臨近像素點做整體擬合,提取的直線在所有算法中距離指針下邊緣最遠,且指針在直線兩側的像素數量變化較一致,與指針中心線重合度最高。

ZHANG 細化結合Hough 變換算法所得結果和本文矯正Hough 變換算法相近,但其細化處理非常繁瑣,計算效率較低,時間復雜度為O(k1n+c),其中n為備選框內像素點總數(即備選框面積),k1為細化算法單個像素點處理計算量(k1較大),c為Hough 變換時間復雜度。本文矯正Hough變換算法時間復雜度為O(k2m+c),其中m為Hough 變換直線臨近的指針像素點數,k2為梯度下降迭代處理計算量。由上述可知,m明顯小于n,而由于候選點在一條直線附近,梯度收斂很快,k2較小,因此O(k2m)<O(k1n)。兩種算法中Hough 變換順序不同,導致候選點數量不同,效率上有一定差異,但相對于ZHANG 細化算法的處理時間,該耗時可忽略,因此O(k2m+c)<O(k1n+c)。

將圖像進行縮放,限制表盤ROI圖像長度和寬度均約為200 像素,此時含指針的備選框長度和寬度范圍為50 像素~150 像素,二值圖中分割出指針像素點數約為200(反光造成部分指針被遮擋的情況下)~1 000。圖8和圖9中兩種算法擬合出指針中心線的時間開銷如表2所示。由表2 可見,本文矯正Hough 變換算法提取指針中心線的時間開銷較ZHANG 細化結合Hough 變換算法更小,識別效率更高。對于實際圖像中像素點范圍為200~1 000 的指針,本文矯正Hough 變換算法的時間開銷均約10 ms,具有良好的實時性。

表2 兩種算法提取指針中心線的時間開銷對比Table 2 Comparison of time cost for extracting pointer center line between two algorithms ms

3.3 配電站實際應用

在配電站實際應用中,本文算法對于不同外觀的方形指針表、不同拍攝視角、光照和陰影干擾均有較強魯棒性,在本文選用的75 張圖像中,指針定位成功率達到100%,部分定位效果如圖10所示。

圖10 不同情況下指針定位效果圖Fig.10 Effect images of pointer positioning in different situations

由于配電站的指針式儀表的表盤刻度不均勻,且儀表型號各有不同,因此統一采用指針角度值進行比較,將現場人工測量指針和下邊框的實際夾角作為真實值,采用本文算法得到的指針角度值從小到大隨機選取10 組,結果如表3所示。由表3 可見,本文算法計算結果和人工測量真實值最大絕對誤差為1.00°,平均絕對誤差為0.52°,相對全量程(90.00°)的最大相對誤差為1.1%,平均相對誤差為0.6%??紤]到人工測量的最小精度為0.50°,本文算法的識別精度已滿足實際應用要求。

表3 本文算法和人工測量得到的儀表指針角度值Table 3 Angle values of meter pointer obtained by the proposed algorithm and manual measurement (°)

4 結束語

針對配電站巡檢機器人難以識讀方形指針式儀表的問題,本文提出一種儀表指針定位算法。采用MSER-Otsu 兩步分離算法分割出表盤指針區域,利用Huber loss 矯正Hough 變換擬合直線,最終完成指針中心線的檢測。實驗結果表明,與Hough 變化算法和Huber loss 擬合算法等相比,該算法處理速度更快且魯棒性更高,其能在不同拍攝視角和光照干擾下對多種方形指針表的指針進行準確定位。但本文算法在備選框較大時背景點去除和灰度級擴展的耗時明顯增加,考慮到Otsu 分割耗時很短,本文局部Otsu 迭代效率還有很大提升空間,后續將對此進行優化,進一步提高巡檢機器人識讀指針式儀表的實時性。

猜你喜歡
中心線指針像素點
基于局部相似性的特征匹配篩選算法
基于5×5鄰域像素點相關性的劃痕修復算法
基于canvas的前端數據加密
為什么表的指針都按照順時針方向轉動
基于逐像素點深度卷積網絡分割模型的上皮和間質組織分割
第十講 幾何公差代號標注示例10
——目鏡套筒
X線攝影中中心線對DR攝影質量的重要性
基于改進Hough變換和BP網絡的指針儀表識別
基于Meanshift和Hough變換的秧苗行中心線提取
ARM Cortex—MO/MO+單片機的指針變量替換方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合