王 鋒,項 導(dǎo)
(億嘉和科技股份有限公司,江蘇 南京 210012)
LED數(shù)碼表作為一種新型數(shù)顯測量儀器,由于其功耗低、壽命長、體積小及讀數(shù)精準等諸多優(yōu)點,被廣泛應(yīng)用于化工、機械、電子、金融、電力等行業(yè),如電網(wǎng)中的數(shù)字壓力表、數(shù)字型電流表、數(shù)字型溫度表等。傳統(tǒng)的LED數(shù)碼表讀數(shù)需要人工肉眼識別,該方法效率低下、勞動強度大,而且某些高危環(huán)境并不適宜人工作業(yè),這就使得利用圖像處理與模式識別算法[1]自動識別LED數(shù)碼表讀數(shù)具有重要的實用價值。
基于視覺的數(shù)字儀表的自動識別[2-3]問題,國內(nèi)外已經(jīng)有很多研究人員進行了深入研究,并提出了很多算法。一般而言,LED數(shù)碼表的讀數(shù)識別不僅包括數(shù)字(0~9)、小數(shù)點、正負號的識別,可能還包括一些特殊字符的識別等。文獻[4]首先對LED數(shù)碼圖像進行字符分割,得到LED數(shù)碼表二值圖;其次利用兩條水平線在數(shù)碼表二值圖像的3/4與1/4處,從左至右進行掃描,分別記錄像素的變換次數(shù);再次利用一條垂直線在數(shù)碼表二值圖像的1/2處,從上至下進行列掃描,記錄像素的變換次數(shù);最后將行列像素變換次數(shù)與標準數(shù)字的變換次數(shù)進行比較,根據(jù)一定的邏輯策略進行數(shù)字判別。該方法依賴于LED二值圖提取的準確度,如果二值圖像存在多余的孔洞或者存在團塊斷裂,則識別率會大大降低。此外,該方法只針對數(shù)字0~9的識別,沒有涉及小數(shù)點與正負號的識別。文獻[5]先根據(jù)二值圖像的投影直方圖進行數(shù)字與小數(shù)點分割并進行傾斜矯正,再根據(jù)七段數(shù)碼管的結(jié)構(gòu)特征進行特征掃描,最后采用BP神經(jīng)網(wǎng)絡(luò)[6]的方法進行字符識別并根據(jù)圖像尺寸大小進行團塊小數(shù)點辨識。實際情形中的光線變化、表盤雜質(zhì)等因素將影響二值圖像的提取,進而影響數(shù)碼管的特征描述,使得識別率下降;另一方面,根據(jù)圖像尺寸與小數(shù)點團塊大小來判別小數(shù)點的方法不能從本質(zhì)上描述小數(shù)點的特征,缺乏一定的魯棒性。
現(xiàn)有的識別方法大多是針對數(shù)字0~9的識別[7],而忽略了正負號及小數(shù)點的識別。但LED數(shù)碼表任意符號位的錯誤識別都是不能接受的,這就要求圖像識別[8]算法對不同符號的識別都必須具有高準確度、高魯棒性。為解決現(xiàn)有技術(shù)存在的問題,本文提出了一種數(shù)字儀表讀數(shù)圖像識別方法。算法先后采用模板匹配、卷積神經(jīng)網(wǎng)絡(luò)和MOSSE算法對數(shù)碼儀表進行定位、分割和分類,最后識別出數(shù)碼儀表中的數(shù)字讀數(shù)。
算法工作流程分為兩個階段,一個是數(shù)碼儀表和字符的定位,另一個是數(shù)字字符和小數(shù)點字符的識別。在對儀表數(shù)碼讀數(shù)識別之前,先要定位配電設(shè)備上儀表的位置,儀表區(qū)域定位的精度很大程度上影響著后續(xù)字符識別的精度。儀表區(qū)域定位采用模板匹配[10]的方法,采用標定的標準模板對測試圖片進行匹配得到定位區(qū)域,然后對定位區(qū)域進行仿射變換矯正,再進行字符定位和切割,最后輸入到預(yù)先訓(xùn)練好的識別模型進行數(shù)字字符識別和小數(shù)點識別,最終綜合識別結(jié)果得到數(shù)碼儀表的讀數(shù)。圖1所示是本文算法的處理流程樣例,最終得到的樣例數(shù)碼儀表讀數(shù)為12.386。
圖1 算法識別流程
儀表設(shè)備所處環(huán)境多種多樣,背景信息復(fù)雜。為了排除背景的干擾,提高識別準確率和穩(wěn)定性,本文采用模板匹配的方法進行儀表區(qū)域定位,利用標定好的數(shù)字儀表圖像模板進行歸一化相關(guān)法匹配,提取感興趣(region of interesting,ROI)區(qū)域,記為Iyx(1≤y≤H,1≤x≤W),其中H,W分別為ROI區(qū)域的高度與寬度。
先對1.1中提取的ROI區(qū)域通過仿射變換進行矯正,然后對矯正區(qū)域進行數(shù)字字符和小數(shù)點定位。
為了提高數(shù)碼表模板匹配的準確度,LED字符均應(yīng)包含于ROI區(qū)域中。選擇LED數(shù)碼表ROI區(qū)域,設(shè)ROI區(qū)域圖像為Ic,其中心像素點坐標點為p(x0,y0)。隨后以直線標定LED字符下(上)邊界,直線段左、右兩個端點分別記為p1(x1,y1)與p2(x2,y2),則直線段p1p2與x軸的夾角θ可以表示為:
(1)
以中心點p(x0,y0)為原點,夾角為θ的旋轉(zhuǎn)矩陣??梢悦枋鰹椋?/p>
(2)
(3)
式中:w=N/l,為單個字符的寬度。
(4)
式中:h=M/n,為小數(shù)點待檢測區(qū)域的高度。
在1.2中分別對數(shù)字字符和小數(shù)點進行了定位和切分,經(jīng)切分的數(shù)字字符和小數(shù)點字符分別作為經(jīng)過離線訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)模型和相關(guān)濾波模板的輸入,卷積神經(jīng)網(wǎng)絡(luò)模型對單數(shù)字字符進行識別,相關(guān)濾波模板對小數(shù)點進行識別,最后綜合兩個識別結(jié)果即可得到數(shù)碼儀表的最終讀數(shù)。
1.3.1數(shù)字字符識別
使用梯度下降法的多層網(wǎng)絡(luò)可以從大量的數(shù)據(jù)中學(xué)習(xí)復(fù)雜的、高維度、非線性的映射,而LED字符包括數(shù)字0~9與正負號,共計12個類別。設(shè)計一個小型的卷積神經(jīng)網(wǎng)絡(luò)(CNN)便可對字符進行高效的分類。本文算法采用經(jīng)典網(wǎng)絡(luò)模型LeNet-5[11],網(wǎng)絡(luò)共有8層,CNN具體結(jié)構(gòu)如圖2所示。
輸入層:根據(jù)LED字符尺寸比例,將字符樣本的尺寸統(tǒng)一縮放到32像素×32像素,以RGB三通道作為輸入層數(shù)據(jù)。
卷積層C1:采用大小為5像素×5像素的卷積核,特征圖個數(shù)為6,大小為28像素×28像素。
池化層S2:采用窗口尺寸為2像素×2像素的最大池化。特征圖個數(shù)為6,大小為14像素×14像素。
卷積層C3:采用大小為5像素×5像素的卷積核,特征圖個數(shù)為16,大小為10像素×10像素。
圖2 CNN結(jié)構(gòu)示意圖
池化層S4:采用窗口尺寸為2像素×2像素的最大池化。特征圖個數(shù)為16,大小為5像素×5像素。
卷積層C5:輸出特征圖個數(shù)為120,大小為1像素×1像素。
全連接F6:輸出個數(shù)為84。
輸出層:采用softmax輸出,根據(jù)本文的實際應(yīng)用場景,輸出的標簽個數(shù)為12,表示12個字符類別的置信度。
網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計好之后需對網(wǎng)絡(luò)進行訓(xùn)練,訓(xùn)練輸入圖像的大小為32像素×32像素,采用人工標注的28 397張圖片數(shù)據(jù)集按9∶1的比例進行模型訓(xùn)練和測試,得到最終訓(xùn)練好的模型精度約為98.0%,測試集損失值和精度值如圖3所示。
圖3 模型精度
使用離線訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)模型對上述提取的單字符區(qū)域進行識別,最終得到l個字符的識別結(jié)果。
1.3.2小數(shù)點識別
小數(shù)點識別采用MOSSE(minimum output of sum squared error)算法。MOSSE算法框架如圖4所示。
圖4 MOSSE算法框架圖
對于輸入的訓(xùn)練圖片,在小數(shù)點區(qū)域提取特征,以理想高斯分布作為期望響應(yīng),然后進行訓(xùn)練,得到相關(guān)濾波器。對于之后的每一個待檢測區(qū)域進行特征提取,再經(jīng)過cos窗函數(shù)平滑,接著做快速傅立葉變換(FFT),然后與相關(guān)濾波器相乘,將結(jié)果做逆向快速傅立葉變換(IFFT)之后,最大響應(yīng)點所在的區(qū)域即為小數(shù)點的位置,最后再用新位置區(qū)域訓(xùn)練、更新得到新的相關(guān)濾波器模板,用于之后的預(yù)測。
綜合單字符識別和小數(shù)點識別的結(jié)果可得到儀表最終的讀數(shù)。
為了驗證本文提出的算法的有效性,開展實驗研究。實驗所用計算機的CPU為Intel Core i7-8550U(主頻1.8GHz),內(nèi)存為16GB。操作系統(tǒng)為64位Windows 10,算法采用Visual C++編程實現(xiàn)。
實驗數(shù)據(jù)為億嘉和科技股份有限公司研制的智能巡檢機器人A200在各個配電站中采集所得,共計35 821張LED數(shù)字儀表樣本,包含多種拍攝角度、清晰度、光照等情況。
對所有的測試圖片進行算法測試,以算法識別儀表讀數(shù)是否正確為判別成功與否的標準,得到實驗數(shù)據(jù)的統(tǒng)計表,見表1。35 821張圖片中算法識別正確的數(shù)目為34 386,結(jié)果準確率為95.99%;識別錯誤的圖像為1 435張,失敗率為4.01%。單張圖像的算法識別時間平均為0.413s。實驗結(jié)果表明本文提出的算法在識別準確率和識別速度上均取得了較好的效果,能夠滿足實際需求。
表1 識別結(jié)果統(tǒng)計
本文從目前數(shù)字LED儀表圖像讀數(shù)識別只能進行數(shù)字0~9單字符識別而忽略了正負號和小數(shù)點的識別,且單一的識別算法在復(fù)雜環(huán)境(如過曝、欠曝、遮擋、模糊等情況)下的識別準確率不高等問題入手,詳細分析了產(chǎn)生問題的原因,提出了一種解決方案,其主要創(chuàng)新之處在于先利用卷積神經(jīng)網(wǎng)絡(luò)進行單字符識別,再結(jié)合MOSSE算法對小數(shù)點進行識別,最后綜合識別結(jié)果得到數(shù)碼儀表的讀數(shù)。實驗結(jié)果表明,本文方法能夠準確定位數(shù)字儀表讀數(shù)區(qū)域、識別儀表讀數(shù),并且算法耗時很短,能夠滿足數(shù)字儀表的實時巡檢需求。