吳家飛
(福建林業(yè)職業(yè)技術學院 園林系,福建 南平 353000)
指針式儀表因結構簡單,可靠性高,被廣泛應用于電力、工業(yè)制造等領域[1-2]。由于指針式儀表沒有實現(xiàn)數(shù)字化,無法直接通過將其示數(shù)直接轉化為電信號。目前主要讀取指針式儀表的方式有人工讀取和機器讀取兩種方式。采用人工進行讀取,存在效率低、人工成本大的問題。隨著工業(yè)化智能化的到來,攝像頭、巡檢機器人等設備逐漸增多,采用機器替代人工,進行指針式儀表的自動化讀取示數(shù),這種方式可以極大提高效率、降低人工成本[3]。
近年來,許多國內(nèi)外學者基于機器視覺技術對指針式儀表讀數(shù)展開研究。王欣藝等[4]采用偏移濾波、雙邊濾波、最大類間方差法選取閾值等方法將圖像二值化,然后基于Hough 圓定位儀表盤中心,基于Hough直線提取指針,然后使用CTPN+CRNN 得到最小刻度與最大刻度推算出其余刻度,最后通過角度法計算指針與刻度關系,該方法對較為耗時。該方法在最小或者最大刻度獲取失敗的情況下無法工作。孫懷遠等[5]基于yolo 算法對指針式儀表進行定位,使用透視變換算法進行角度矯正,然后應用幾何矩算法遍歷得到儀表表盤刻度區(qū)域和指針,最后采用角度法得到指針示數(shù)。該方法對于圓形儀表具有較好的性能,無法應用于其他形狀的儀表。李典等[6]使用SIFT 方法匹配方法對指針式儀表進行定位,通過霍夫圓等方法定位表盤,最后通過角度法獲取指針示數(shù)。該方法容易受到光照、角度偏移等情況的影響。Liu 等[7]基于Yolov5 實現(xiàn)了指針的快速定位和讀取識別,具有較高的識別率和檢測效率。但是該方法需要較多的指針式儀表數(shù)據(jù)完成訓練,在缺乏數(shù)據(jù)的情況,無法達到預期效果。
提出一種指針式儀表的智能識別方法,該方法能夠?qū)崿F(xiàn)指針式儀表的自動讀數(shù),在一定程度遮擋、光照、角度偏移影響下也具備較高的識別準確率。
設計的指針式儀表智能識別方法流程如圖1 所示。系統(tǒng)總體分別指針檢測模塊和表計讀數(shù)模塊。其中指針檢測模塊目的是為了檢測出指針式儀表的指針指向的角度,表計讀數(shù)模塊是通過文字識別和角度換算等方法,得到指針指向的角度所代表的示數(shù)。在針檢測模塊中,先將采集的儀表圖像進行預處理操作,之后進行自適應閾值得到二值化圖像,將二值化圖像進行細化處理、邊緣檢測、霍夫檢測,得到指針的指向。在表計模塊中,將儀表圖像進行文字是識別,得到儀表上刻度示數(shù)的坐標,然后把坐標進行角度換算,將指針指向的角度與刻度的儀表角度進行比較,得到識別結果。
采集圖像是指針儀表智能識別的輸入圖像,采集設備可以是固定攝像頭、巡檢機器人等設備。采集到的圖像,要求清晰,沒有雜物干擾,儀表位于圖像的中心。如圖2 指針式儀表圖所示。
圖2 指針式儀表圖
圖像的預處理是為了減少噪聲干擾,消除無用的信息,這里預處理步驟先將圖像進行灰度化,將三通道的彩色圖像轉換為單通道的灰度圖像,然后將灰度化的圖像進行高斯濾波,消除圖像中的高斯噪聲,從而達到降噪的效果[8]。預處理的流程圖如圖3 所示。
圖3 預處理流程圖
自適應閾值設定閾值的方式是根據(jù)像素領域塊的像素分布來確定,目的是為了將圖中的目標與背景區(qū)分開來,該方法好處是,能夠閾值自適應,避免了固定閾值的不同輸入圖像需要設置不同的閾值的問題。
細化處理是為了提取到指針式儀表圖像的骨架,能將一個連通區(qū)域細化成一個像素的寬度,用于特征提取和目標拓撲表示。
邊緣檢測是為了提取指針式儀表圖像細化后的不連續(xù)部分的特征[9]。由于圖像的邊緣為局部亮度變化最顯著的特征,因此進行邊緣檢測捕捉圖像細節(jié)十分重要。Canny 邊緣檢測算法作為一種高效和實用的邊緣檢測算法,被廣泛應用于機器視覺領域,因為本文的邊緣檢測算法采用Canny 邊緣檢測算法。自適應閾值、細化處理和邊緣檢測的指針式儀表圖像如圖4所示。
霍夫直線檢測可用于檢測圖像中的直線。它的原理是通過霍夫變換,將坐標空間轉換為極坐標空間,然后通過投票的方式進行來確定直線。經(jīng)過霍夫直線檢測后的圖像,如圖5(a)所示。
圖5 自適應閾值、細化處理、邊緣檢測圖
從圖5(a)中可以看到,霍夫直線檢測結果除了指針指向的直線外還包含了許多無關直線,因此需要采用一定的策略來去除無關直線。首先可以計算每條直線與中心的距離,將距離中心點較遠的直線去除,去除后的圖像如圖5(b)所示。其次統(tǒng)計最多直線經(jīng)過的交點,記錄此交點,然后去除未經(jīng)過交點的直線,去除后的圖像如圖5(c)所示。最后將剩下所有直線的角度進行取平均,得到平均角度,以該角度和前面記錄的交點,得到一條唯一的直線,作為指針檢測的結果,如圖5(d)所示。
文字識別將輸入圖像識別為文字的過程。這一步的文字識別是為了找出指針式儀表量程刻度值代表的位置,為后續(xù)角度換算提供基礎。文字識別采用開源項目https://github.com/chineseocr/chineseocr。項目基于yolo3(You Only Look Once)算法+CRNN(Convolutional Recurrent Neural Network)算法實現(xiàn)。其中yolo3 是一種端到端的圖像檢測算法,可對輸入圖像中的文字進行檢測。CRNN 是CNN(Convolutional Neural Network)與RNN(Recurrent Neural Network)融合的模型結構。其中CNN 用于特征提取,RNN 用于特征向量預測,CRNN 可將yolo3 檢測到的文字進行識別。采用文字識別方法將指針式儀表圖進行識別,對最小刻度和最大刻度的位置進行定位,如圖6所示。
圖6 文字識別檢測效果圖
圖7 角度法原理
在得到指針角度、最小刻度位置和最大刻度位置之后,只需使用角度法[10],計算最小刻度值與指針的夾角,占最小刻度與最大刻度夾角的比例。最后通過換算,即可得到表計讀數(shù),其原理如7 所示。
假設總量程為M,最小刻度為點A,最大刻度值為點B,儀表中心為點O,最小刻度與指針間的夾角,即向量之間的夾角為θ1,最小刻度與最大刻度間的夾角,即之間的夾角為θ,那么表計讀數(shù)X可通過式(1)計算。
實驗對象為10 張量程0~10 的油位計指針式儀表,共有四種不同情況下的指針式油位計儀表,分別是正常情況下的油位計儀表、部分遮擋的油位計儀表、角度偏移的油位計儀表及不同光照條件下的油位計儀表。其中正常情況下的油位計儀表4 張,部分遮擋的油位計儀表2 張,角度偏移的油位計儀表2 張,不同光照條件下的油位計儀表2 張。
分兩部分進行分析,第一部分是指針檢測分析,第二部分是指針讀數(shù)。指針檢測對于指針式儀表的讀數(shù)至關重要,良好的指針檢測是指針正確讀數(shù)的前提。圖8 為指正常情況下的針檢測的實驗效果圖,從指針檢測效果來看,可以較好的檢測出指針。從圖9 可以看出,在儀表有部分遮擋、角度偏移、光照影響下,指針檢測方法也能夠較好的對指針指向進行檢測。
圖8 正常情況下儀表指針檢測圖
圖9 不同情況下儀表指針檢測圖
在完成指針檢測部分之后,則需要進行指針讀數(shù)部分。表1 為指針讀數(shù)實驗數(shù)據(jù)統(tǒng)計表。油位計指針式儀表刻度只標注整數(shù)部分,小數(shù)位部分需要通過人工讀取,而通過人工讀取的讀數(shù)也會存在偏差,因此可以定義相對誤差不超過5%,則認為該方法是有效的。從表中可以看出,在正常、部分遮擋、角度偏移、光照影響小的情況下,通過本文方法讀取的指針示數(shù),與人工讀數(shù)的相對誤差均不超過2%,證明本文的指針式儀表具有一定的有效性和可行性。
表1 指針讀數(shù)實驗數(shù)據(jù)統(tǒng)計表
設計新的指針式儀表智能識別方法是基于圖像處理技術對儀表指針進行檢測,使用深度學習進行文本檢測得到最小量程和最大量程,最后通過角度法計算,得到指針示數(shù)。通過實驗證明該方法在部分遮擋、角度偏移、一定光照影響下,也能夠達到良好的效果,具有一定的魯班性。但是同時,對光照較弱指針檢測失敗、儀表模糊導致的文本檢測失敗等問題,在往后的研究工作中,還需重點關注并加以改進。