張文超
(大慶油田責任有限公司第四采油廠數字化運維中心,黑龍江 大慶 163511)
為了滿足油田站庫自動化工控系統儀表數據的采集及檢定的需求,進行了以視覺識別技術替代人工現場讀數的研究。由于采油廠每年干式水表檢定量較大,同時,每塊需要檢定3個流量點,每個流量點測試一次需要5分鐘。而現有的檢定臺為人工操作,人工讀數錄入,工作量很大。本文利用OPENCV圖像識別技術,結合現場進行干式水表檢定中的數據讀取應用試驗,經過多次現場試驗及論證,提出了一種可以實現儀表視頻圖像識別的模型。該模型通過工業攝像頭采集儀表圖像,將表盤圖像進行預處理,然后采用2D卷積運算,并轉化為HSV空間圖像。通過霍夫變換進行表盤輪廓識別及表盤圓心定位,利用形態學算法對圖像字符定位分割,并建立數字匹配模板,利用特征識別判斷表盤數據,實現了儀表的自動識別功能,降低了員工的勞動強度。
由于樹莓派是一款基于ARM的微型電腦,具有低功耗、體積小的特點,可以進行網絡數據傳輸,并可以連接USB視頻頭,自身帶有LINUX系統,運行OPENCV環境。因此,本文選用樹莓派運行OPENCV進行儀表識別的硬件,通過USB接口連接工業免驅攝像頭,識別的結果通過網絡接口傳遞給主控計算機,可以進行數據處理并實現報表證書生成等功能。
在樹莓派上運行基于PYTHON語言的OPENCV環境,OPENCV自帶視覺庫,并且具有視覺識別的底層接口500多個函數,可以快速進行視覺識別系統開發,因此本文在具有OPENCV底層接口函數的這樣一個環境進行開發,可以更便捷、快速地進行油田儀表圖像識別技術的研究。其開發環境,如圖1所示。

圖1 PYTHON+OPENCV軟件環境
在主控計算機采用VB.NET語言環境進行開發,用于接收樹莓派發送的網絡數據,進行數據運算,生成證書。
采用USB攝像頭直接采集的為RGB圖像,即每個像素都拆分為紅綠藍三種顏色的比重混合而成,稱為RGB色彩空間。RGB色彩比重受光線照度影響較大,為了最大限度地消除光線對儀表圖像的影響,將RGB圖像轉換為HSV圖像,即色相、飽和度、透明度模型,由于我們待檢定儀表顏色為青色,因此,表體青色區域進行掩膜識別。其對表體外部識別效果,如圖2所示。

圖2 HSV色彩空間顏色定義
我們要識別的干式水表表體為圓形,因此,可以對表體區域進行圓形識別。采用霍夫圓函數檢測表盤區域范圍的圓,記錄圓心坐標及半徑,并與圖像中進行繪制識別結果。在實驗中發現,由于受到光線、儀表擺放影響,每次的表盤圓心定位結果是有一定偏差的,為后續的字符圖像分割、識別造成一定干擾,因此,不可通過一次定位識別就給出最終結果,需要多次定位識別,獲取最準確的結果。
進行數字儀表圖像采集時,由于干式水表人工放置檢定區域后,不能保證采集的數字圖像與攝像頭角度完全一致,采集的圖像會發生傾斜。為了方便后期圖像分割識別,需要對傾斜的圖像進行校正。攝像頭采集圖像及檢測校正結果,如圖3所示。

圖3 表盤旋轉校正
首先,將儀表圖像進行Canny邊緣檢測,得到儀表輪廓圖像矩陣,與表盤內部區域進行與操作,除了表盤外部區域圖像點,然后,對儀表圖像內部液晶顯示屏區域進行Hough直線檢測,得到一組線段,找出最長的線段,即為液晶屏區域的輪廓線,再根據檢測到的直線兩個端點的坐標值,進行反正切運算,得到直線傾斜角度,然后,以0.1°~45°進行篩選,即為圖像旋轉角度,然后利用圖像旋轉函數,將儀表圖像進行旋轉校正。
為提取更有效、清晰的圖像數據,進行特征識別,就要除去多余的圖像像素。該系統可以對儀表圖像進行腐蝕(Erosion)膨脹(Dilation)等數學形態學運算,對圖像進行濾波處理,平滑邊界。提高圖像的質量,并填充儀表讀數圖像中的細小空洞,避免單個數字各段碼之間的中斷。
為了能夠準確地識別字符,第一步需要對圖像做二值化處理,使該圖像分割成背景部分和目標部分。采用最經典的全局閾值的Otsu算法。為了避免對比度和光照不均勻對二值化的影響,要先對圖像進行頂帽處理,然后再進行二值化處理。這樣能夠使二值化效果達到預期的目標,然后二值化,得到黑白圖像數字矩陣。
通過以上程序對儀表圖像處理后,我們就可以獲得一個高質量的二值化黑白圖像,然后,需要對數字儀表的讀數進行定位與分割,這樣就可以有效地穩固而二值化圖像的基礎數據。精準的定位分割,可有效地提高程序及識別率。
儀表表盤數字定位分割一般有基于連通域和基于投影法的儀表數字定位與分割。 但是,不同的光照條件,儀表的影子對水平投影的影響過大,在有影子存在的情況下,不能理想地分割出表盤上的每個字符。因此,本文采用的是基于連通域的方法來進行數字的定位與分割。
在圖像中,用f(x,y)表示位于圖像陣列中第x行、第y列的像素的值,一幅m×n的圖像具有m行n列,f(0,0)表示圖像左上角的像素值,f(m-1,n-1)表示圖像右下角的像素值。遍歷圖像,通過4鄰域連通標準查找出所有符合的連通域,這樣就可以把圖像中每個分離的區域檢測出來。
在查找出所有連通域后,按照連通域的面積、讀數的形狀、長寬比來進行篩選,排除不符合條件的區域,這樣就可以直接定位并分割出數字儀表的每個讀數。算法實現步驟如下。
(1)計算連通域面積:連通域A的面積就是像素值為255的點的數目,即區域的邊界內包含的像素點數。
(2)計算連通域的長寬比:連通域的寬/連通域的長。
(3)遍歷所有連通域,如果連通域面積大于500小于5000且連通域的長寬比大于1.5小于2.5則提取,如果不滿足以上條件則舍棄。這樣便可篩選出滿足要求的連通域,即數字儀表每個讀數。
將表盤字符高清拍照,并將圖片導入CAD,利用CAD的直線命令將數字邊緣進行描點繪制,并進行填充,完成樣本圖像制作,然后,保存為bmp格式圖像,與PYTHON程序文件存放于同一目錄下。
數字識別就是要比較待識別圖像與樣本中哪個特征最接近。采用歐式距離法進行比較,分別提取樣本特征與待識別圖像特征值,將待識別圖像特征值矩陣依次與樣本圖像特征矩陣做平方差運算,方差越小,說明特征值越接近,判斷為該數字。
利用圖像矩陣方差運算識別圖像準確率較高,缺點是耗時較長。在識別的數字少時可以使用。本文中所用的干式水表所需要進行識別的有11個數字,運算量很大,識別一幀圖像數據需要5s。為了提高識別效率,本文最后一步修正算法,采用了穿線法,即通過識別七段數碼管各個段的明暗狀態進行編碼,可以大幅度地提高識別效率,識別一幀圖像僅需要不到1s。在主程序里用namedWindows函數創建窗口,建立一個無限循環的while函數,使用imshow函數顯示視頻圖像幀。然后進入視頻讀取識別程序,只有當所有位置的數字都準確識別對應后,才給出最終結果,如果有沒識別出對應位置上的數字,說明本次識別結果不準,重新進行表盤定位及下一輪結果識別程序。
樹莓派通過視頻識別儀表數字后,通過網絡接口與計算機建立TCP/IP連接。計算機作為服務器端,監聽端口,樹莓派所謂客戶端,連接服務器端口。采用Socket模塊接口,使用socket套接字,連接服務器。當樹莓派接收到計算機發送的視頻識別指令時,開始進行視頻識別,識別完成后,將識別結果發送至計算機端顯示。
在實驗中我們發現,外界光線會對識別結果造成干擾。特別是會在液晶區域形成陰影,造成識別結果準確率下降。因此,在每個USB攝像頭周圍,均勻加裝了10只LED燈珠,在啟動識別的時候,開啟LED燈光,在表盤進行四周補光,消除表盤液晶區域的陰影,提高了識別準確率。
在干式水表檢定間現場應用時,可以替代人工識別出水表的數值。經過上千組數據讀數驗證,識別準確率>95。可以有效替代人工進行數據錄入,降低員工的勞動強度,提高工作效率。

圖4 干式水表檢定間現場應用
本文采用樹莓派、USB工業攝像頭搭建了儀表視頻識別硬件系統,采用PYTHON和OPENCV庫進行儀表視頻識別的軟件環境。通過一系列試驗探索,對干式水表數字進行識別,實現干式水表視頻數據的實時采集、圖像處理及結果輸出。得到以下結論:
(1)樹莓派具有體積小、集成度高、安裝方便、開發簡單的特點,可以以樹莓派為視頻識別硬件,在油田工業環境下進行視頻識別;(2)本文研究的儀表視頻識別技術可減少勞動強度,為自動化檢定、智能檢定打下基礎;(3)本文研究的儀表視頻識別模型圖像識別步驟具有實用價值,可以進一步完善推廣在指針式儀表、數碼顯示儀表中應用。