張文超
(大慶油田責(zé)任有限公司第四采油廠數(shù)字化運(yùn)維中心,黑龍江 大慶 163511)
為了滿足油田站庫自動(dòng)化工控系統(tǒng)儀表數(shù)據(jù)的采集及檢定的需求,進(jìn)行了以視覺識(shí)別技術(shù)替代人工現(xiàn)場(chǎng)讀數(shù)的研究。由于采油廠每年干式水表檢定量較大,同時(shí),每塊需要檢定3個(gè)流量點(diǎn),每個(gè)流量點(diǎn)測(cè)試一次需要5分鐘。而現(xiàn)有的檢定臺(tái)為人工操作,人工讀數(shù)錄入,工作量很大。本文利用OPENCV圖像識(shí)別技術(shù),結(jié)合現(xiàn)場(chǎng)進(jìn)行干式水表檢定中的數(shù)據(jù)讀取應(yīng)用試驗(yàn),經(jīng)過多次現(xiàn)場(chǎng)試驗(yàn)及論證,提出了一種可以實(shí)現(xiàn)儀表視頻圖像識(shí)別的模型。該模型通過工業(yè)攝像頭采集儀表圖像,將表盤圖像進(jìn)行預(yù)處理,然后采用2D卷積運(yùn)算,并轉(zhuǎn)化為HSV空間圖像。通過霍夫變換進(jìn)行表盤輪廓識(shí)別及表盤圓心定位,利用形態(tài)學(xué)算法對(duì)圖像字符定位分割,并建立數(shù)字匹配模板,利用特征識(shí)別判斷表盤數(shù)據(jù),實(shí)現(xiàn)了儀表的自動(dòng)識(shí)別功能,降低了員工的勞動(dòng)強(qiáng)度。
由于樹莓派是一款基于ARM的微型電腦,具有低功耗、體積小的特點(diǎn),可以進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸,并可以連接USB視頻頭,自身帶有LINUX系統(tǒng),運(yùn)行OPENCV環(huán)境。因此,本文選用樹莓派運(yùn)行OPENCV進(jìn)行儀表識(shí)別的硬件,通過USB接口連接工業(yè)免驅(qū)攝像頭,識(shí)別的結(jié)果通過網(wǎng)絡(luò)接口傳遞給主控計(jì)算機(jī),可以進(jìn)行數(shù)據(jù)處理并實(shí)現(xiàn)報(bào)表證書生成等功能。
在樹莓派上運(yùn)行基于PYTHON語言的OPENCV環(huán)境,OPENCV自帶視覺庫,并且具有視覺識(shí)別的底層接口500多個(gè)函數(shù),可以快速進(jìn)行視覺識(shí)別系統(tǒng)開發(fā),因此本文在具有OPENCV底層接口函數(shù)的這樣一個(gè)環(huán)境進(jìn)行開發(fā),可以更便捷、快速地進(jìn)行油田儀表圖像識(shí)別技術(shù)的研究。其開發(fā)環(huán)境,如圖1所示。
圖1 PYTHON+OPENCV軟件環(huán)境
在主控計(jì)算機(jī)采用VB.NET語言環(huán)境進(jìn)行開發(fā),用于接收樹莓派發(fā)送的網(wǎng)絡(luò)數(shù)據(jù),進(jìn)行數(shù)據(jù)運(yùn)算,生成證書。
采用USB攝像頭直接采集的為RGB圖像,即每個(gè)像素都拆分為紅綠藍(lán)三種顏色的比重混合而成,稱為RGB色彩空間。RGB色彩比重受光線照度影響較大,為了最大限度地消除光線對(duì)儀表圖像的影響,將RGB圖像轉(zhuǎn)換為HSV圖像,即色相、飽和度、透明度模型,由于我們待檢定儀表顏色為青色,因此,表體青色區(qū)域進(jìn)行掩膜識(shí)別。其對(duì)表體外部識(shí)別效果,如圖2所示。
圖2 HSV色彩空間顏色定義
我們要識(shí)別的干式水表表體為圓形,因此,可以對(duì)表體區(qū)域進(jìn)行圓形識(shí)別。采用霍夫圓函數(shù)檢測(cè)表盤區(qū)域范圍的圓,記錄圓心坐標(biāo)及半徑,并與圖像中進(jìn)行繪制識(shí)別結(jié)果。在實(shí)驗(yàn)中發(fā)現(xiàn),由于受到光線、儀表擺放影響,每次的表盤圓心定位結(jié)果是有一定偏差的,為后續(xù)的字符圖像分割、識(shí)別造成一定干擾,因此,不可通過一次定位識(shí)別就給出最終結(jié)果,需要多次定位識(shí)別,獲取最準(zhǔn)確的結(jié)果。
進(jìn)行數(shù)字儀表圖像采集時(shí),由于干式水表人工放置檢定區(qū)域后,不能保證采集的數(shù)字圖像與攝像頭角度完全一致,采集的圖像會(huì)發(fā)生傾斜。為了方便后期圖像分割識(shí)別,需要對(duì)傾斜的圖像進(jìn)行校正。攝像頭采集圖像及檢測(cè)校正結(jié)果,如圖3所示。
圖3 表盤旋轉(zhuǎn)校正
首先,將儀表圖像進(jìn)行Canny邊緣檢測(cè),得到儀表輪廓圖像矩陣,與表盤內(nèi)部區(qū)域進(jìn)行與操作,除了表盤外部區(qū)域圖像點(diǎn),然后,對(duì)儀表圖像內(nèi)部液晶顯示屏區(qū)域進(jìn)行Hough直線檢測(cè),得到一組線段,找出最長(zhǎng)的線段,即為液晶屏區(qū)域的輪廓線,再根據(jù)檢測(cè)到的直線兩個(gè)端點(diǎn)的坐標(biāo)值,進(jìn)行反正切運(yùn)算,得到直線傾斜角度,然后,以0.1°~45°進(jìn)行篩選,即為圖像旋轉(zhuǎn)角度,然后利用圖像旋轉(zhuǎn)函數(shù),將儀表圖像進(jìn)行旋轉(zhuǎn)校正。
為提取更有效、清晰的圖像數(shù)據(jù),進(jìn)行特征識(shí)別,就要除去多余的圖像像素。該系統(tǒng)可以對(duì)儀表圖像進(jìn)行腐蝕(Erosion)膨脹(Dilation)等數(shù)學(xué)形態(tài)學(xué)運(yùn)算,對(duì)圖像進(jìn)行濾波處理,平滑邊界。提高圖像的質(zhì)量,并填充儀表讀數(shù)圖像中的細(xì)小空洞,避免單個(gè)數(shù)字各段碼之間的中斷。
為了能夠準(zhǔn)確地識(shí)別字符,第一步需要對(duì)圖像做二值化處理,使該圖像分割成背景部分和目標(biāo)部分。采用最經(jīng)典的全局閾值的Otsu算法。為了避免對(duì)比度和光照不均勻?qū)Χ祷挠绊懀葘?duì)圖像進(jìn)行頂帽處理,然后再進(jìn)行二值化處理。這樣能夠使二值化效果達(dá)到預(yù)期的目標(biāo),然后二值化,得到黑白圖像數(shù)字矩陣。
通過以上程序?qū)x表圖像處理后,我們就可以獲得一個(gè)高質(zhì)量的二值化黑白圖像,然后,需要對(duì)數(shù)字儀表的讀數(shù)進(jìn)行定位與分割,這樣就可以有效地穩(wěn)固而二值化圖像的基礎(chǔ)數(shù)據(jù)。精準(zhǔn)的定位分割,可有效地提高程序及識(shí)別率。
儀表表盤數(shù)字定位分割一般有基于連通域和基于投影法的儀表數(shù)字定位與分割。 但是,不同的光照條件,儀表的影子對(duì)水平投影的影響過大,在有影子存在的情況下,不能理想地分割出表盤上的每個(gè)字符。因此,本文采用的是基于連通域的方法來進(jìn)行數(shù)字的定位與分割。
在圖像中,用f(x,y)表示位于圖像陣列中第x行、第y列的像素的值,一幅m×n的圖像具有m行n列,f(0,0)表示圖像左上角的像素值,f(m-1,n-1)表示圖像右下角的像素值。遍歷圖像,通過4鄰域連通標(biāo)準(zhǔn)查找出所有符合的連通域,這樣就可以把圖像中每個(gè)分離的區(qū)域檢測(cè)出來。
在查找出所有連通域后,按照連通域的面積、讀數(shù)的形狀、長(zhǎng)寬比來進(jìn)行篩選,排除不符合條件的區(qū)域,這樣就可以直接定位并分割出數(shù)字儀表的每個(gè)讀數(shù)。算法實(shí)現(xiàn)步驟如下。
(1)計(jì)算連通域面積:連通域A的面積就是像素值為255的點(diǎn)的數(shù)目,即區(qū)域的邊界內(nèi)包含的像素點(diǎn)數(shù)。
(2)計(jì)算連通域的長(zhǎng)寬比:連通域的寬/連通域的長(zhǎng)。
(3)遍歷所有連通域,如果連通域面積大于500小于5000且連通域的長(zhǎng)寬比大于1.5小于2.5則提取,如果不滿足以上條件則舍棄。這樣便可篩選出滿足要求的連通域,即數(shù)字儀表每個(gè)讀數(shù)。
將表盤字符高清拍照,并將圖片導(dǎo)入CAD,利用CAD的直線命令將數(shù)字邊緣進(jìn)行描點(diǎn)繪制,并進(jìn)行填充,完成樣本圖像制作,然后,保存為bmp格式圖像,與PYTHON程序文件存放于同一目錄下。
數(shù)字識(shí)別就是要比較待識(shí)別圖像與樣本中哪個(gè)特征最接近。采用歐式距離法進(jìn)行比較,分別提取樣本特征與待識(shí)別圖像特征值,將待識(shí)別圖像特征值矩陣依次與樣本圖像特征矩陣做平方差運(yùn)算,方差越小,說明特征值越接近,判斷為該數(shù)字。
利用圖像矩陣方差運(yùn)算識(shí)別圖像準(zhǔn)確率較高,缺點(diǎn)是耗時(shí)較長(zhǎng)。在識(shí)別的數(shù)字少時(shí)可以使用。本文中所用的干式水表所需要進(jìn)行識(shí)別的有11個(gè)數(shù)字,運(yùn)算量很大,識(shí)別一幀圖像數(shù)據(jù)需要5s。為了提高識(shí)別效率,本文最后一步修正算法,采用了穿線法,即通過識(shí)別七段數(shù)碼管各個(gè)段的明暗狀態(tài)進(jìn)行編碼,可以大幅度地提高識(shí)別效率,識(shí)別一幀圖像僅需要不到1s。在主程序里用namedWindows函數(shù)創(chuàng)建窗口,建立一個(gè)無限循環(huán)的while函數(shù),使用imshow函數(shù)顯示視頻圖像幀。然后進(jìn)入視頻讀取識(shí)別程序,只有當(dāng)所有位置的數(shù)字都準(zhǔn)確識(shí)別對(duì)應(yīng)后,才給出最終結(jié)果,如果有沒識(shí)別出對(duì)應(yīng)位置上的數(shù)字,說明本次識(shí)別結(jié)果不準(zhǔn),重新進(jìn)行表盤定位及下一輪結(jié)果識(shí)別程序。
樹莓派通過視頻識(shí)別儀表數(shù)字后,通過網(wǎng)絡(luò)接口與計(jì)算機(jī)建立TCP/IP連接。計(jì)算機(jī)作為服務(wù)器端,監(jiān)聽端口,樹莓派所謂客戶端,連接服務(wù)器端口。采用Socket模塊接口,使用socket套接字,連接服務(wù)器。當(dāng)樹莓派接收到計(jì)算機(jī)發(fā)送的視頻識(shí)別指令時(shí),開始進(jìn)行視頻識(shí)別,識(shí)別完成后,將識(shí)別結(jié)果發(fā)送至計(jì)算機(jī)端顯示。
在實(shí)驗(yàn)中我們發(fā)現(xiàn),外界光線會(huì)對(duì)識(shí)別結(jié)果造成干擾。特別是會(huì)在液晶區(qū)域形成陰影,造成識(shí)別結(jié)果準(zhǔn)確率下降。因此,在每個(gè)USB攝像頭周圍,均勻加裝了10只LED燈珠,在啟動(dòng)識(shí)別的時(shí)候,開啟LED燈光,在表盤進(jìn)行四周補(bǔ)光,消除表盤液晶區(qū)域的陰影,提高了識(shí)別準(zhǔn)確率。
在干式水表檢定間現(xiàn)場(chǎng)應(yīng)用時(shí),可以替代人工識(shí)別出水表的數(shù)值。經(jīng)過上千組數(shù)據(jù)讀數(shù)驗(yàn)證,識(shí)別準(zhǔn)確率>95。可以有效替代人工進(jìn)行數(shù)據(jù)錄入,降低員工的勞動(dòng)強(qiáng)度,提高工作效率。
圖4 干式水表檢定間現(xiàn)場(chǎng)應(yīng)用
本文采用樹莓派、USB工業(yè)攝像頭搭建了儀表視頻識(shí)別硬件系統(tǒng),采用PYTHON和OPENCV庫進(jìn)行儀表視頻識(shí)別的軟件環(huán)境。通過一系列試驗(yàn)探索,對(duì)干式水表數(shù)字進(jìn)行識(shí)別,實(shí)現(xiàn)干式水表視頻數(shù)據(jù)的實(shí)時(shí)采集、圖像處理及結(jié)果輸出。得到以下結(jié)論:
(1)樹莓派具有體積小、集成度高、安裝方便、開發(fā)簡(jiǎn)單的特點(diǎn),可以以樹莓派為視頻識(shí)別硬件,在油田工業(yè)環(huán)境下進(jìn)行視頻識(shí)別;(2)本文研究的儀表視頻識(shí)別技術(shù)可減少勞動(dòng)強(qiáng)度,為自動(dòng)化檢定、智能檢定打下基礎(chǔ);(3)本文研究的儀表視頻識(shí)別模型圖像識(shí)別步驟具有實(shí)用價(jià)值,可以進(jìn)一步完善推廣在指針式儀表、數(shù)碼顯示儀表中應(yīng)用。