李 執(zhí),熊經(jīng)先,閆 坤,周海燕,劉 威
(1.桂林電子科技大學信息與通信學院,廣西桂林 541004;2.桂林金格電工電子材料科技有限公司,廣西桂林 541004)
在實際工業(yè)生產中,為保證生產質量與效率,常需要進行實時數(shù)據(jù)監(jiān)控,如電壓、電流、溫度、壓力等。數(shù)碼管作為數(shù)字儀表的一種[1-5],廣泛應用于生產領域。其具有讀寫方便、安裝簡易、精度高等優(yōu)點?,F(xiàn)在大多工廠采用的還是人工檢測,而工業(yè)環(huán)境較復雜,如光照不均導致讀數(shù)不準確、高溫高壓環(huán)境讀數(shù)不方便等,而且工業(yè)生產中數(shù)據(jù)量較大,采用人工讀數(shù),工作量大、正確率難以保證、不能做到全方位檢測,采集到數(shù)據(jù)也不便保存管理。數(shù)碼管識別,是研究的熱點。國內外的學者也做了很多這方面的研究工作。張歷等提出了采用局部二值模式特征和支持向量機分類算法對數(shù)碼管的定位,然后采用穿線法進行數(shù)碼管字符識別。該算法只適用于數(shù)碼管字符為統(tǒng)一顏色情況,不適用于由于復雜光照下數(shù)碼管字符顏色多樣數(shù)碼管的識別[6]。葉景東等采用了模板匹配法對數(shù)碼管進行識別。通過待檢測圖像與標準模板的差異對比來識別定位,該方法適合單一同種類儀表的識別[7]。陳剛等提出了基于特征提取的數(shù)字儀表快速識別算法,把七段數(shù)碼管的每一段作為一個特征點,然后分別計算每個特征點的像素值,再與標準像素值大小相比較,從而判斷識別出相對應的數(shù)字。文中測試圖像是字符與背景對比度比較明顯情況下,因此不能驗證該算法是否適用于背景與檢測目標灰度值相近情況下字符的識別[8]。陸靖濱等設計了自適應特征提取算法對不同光照下儀表的自動識別,采用改進的最大類間方差法,通過迭代計算求出在設定的范圍內對應的最佳分割閾值。該方法適用于目標與背景區(qū)域灰度值差異不大情況,不能應用于更加復雜條件下,且平均識別時間為1.136 s,識別效率較低[9]。
復雜光照一直是圖像處理中常見的干擾[10],而在真實的生產環(huán)境中,環(huán)境光是動態(tài)變化的,光照過強會導致圖像過度曝光,數(shù)碼管字體形狀也會發(fā)生膨脹;光照太弱,數(shù)碼管點亮字體與熄滅的數(shù)碼管區(qū)域灰度值差異太小,不利于算法的定位與分割。因此會導致采集到的數(shù)碼管數(shù)字的大小、顏色、形狀、模糊程度等不一致問題,給數(shù)碼管的定位和識別帶來很大的挑戰(zhàn),為了解決這個問題,減弱光照對數(shù)碼管定位和識別影響,首先對灰度圖像進行灰度均值統(tǒng)計,然后結合灰度直方圖特征對圖像進行反向灰度拉伸操作,增大與前景的差異,弱化光照問題。為使算法具有更強的適應性,設計了動態(tài)自適應閾值分割法來實現(xiàn)對數(shù)碼管的正確定位及分割,然后再進行校正及識別工作。經(jīng)過測試驗證,該算法識別效率及準確性比較高,與其他識別方法相比,適用性及魯棒性更強,符合工業(yè)生產要求。
文中對于數(shù)碼管字符的識別主要運用的是數(shù)字圖像處理和圖像識別技術,其系統(tǒng)結構如圖1所示。
圖1 系統(tǒng)結構
首先通過選定的攝像頭采集數(shù)碼管圖片,通過索引計算初步定位到七段數(shù)碼管所在的區(qū)域位置并進行圖像歸一化。再對歸一化后的圖像進行預處理來進一步去除噪聲及背景干擾。圖像預處理主要包括灰度化、圖像增強、動態(tài)自適應閾值分割及膨脹腐蝕等形態(tài)學操作。特征提取主要目的是根據(jù)數(shù)字所在的區(qū)域特點,通過具有別于背景的特征將數(shù)字提取出來。由于數(shù)碼管中字符往往是多個的,下一步是進行數(shù)字分割,將提取出來的一連串數(shù)字分割成獨立的單個數(shù)字。最后采用穿線法識別。
在真實工業(yè)環(huán)境中,許多設備是直接暴露在陽光下,加上設備是24 h工作的,一天之內光照是動態(tài)變化的。光照角度、光照強度等都會隨時間動態(tài)變化,這會導致采集到的圖像中的數(shù)碼管字符大小、顏色、清晰度、明暗對比度等不同,給字符定位和識別準確性帶來影響。而在進行字符定位前,由于不同光照下成像效果不同,圖像中的灰度值差異明顯。因此,可以基于灰度特征統(tǒng)計,在進行字符定位前,對圖像進行灰度統(tǒng)計來初步判斷光照的強弱。
假設R為數(shù)碼管所在區(qū)域,p為區(qū)域R內像素點,g(x,y)為像素點p灰度值,F(xiàn)為區(qū)域平面所有像素點總和。通過式(1)可計算得出區(qū)域灰度均值。
(1)
式中M為目標區(qū)域灰度均值。
在實際作業(yè)環(huán)境中,采集到的圖像是復雜多變的,而且受到噪聲污染,圖像灰度分布變化多樣。為了使算法能自適應處理光照的動態(tài)變化,需要將圖像根據(jù)灰度均值大小自動進行分類。圖像分類主要為如下7種:
夜晚無光型圖像:設備未受到光照直射,周圍背景為黑色,數(shù)碼管亮度高,字符較大,灰度均值大,與背景之間對比度明顯,如圖2(a)所示。
夜晚正常型圖像:光照均勻,圖像背景較暗,數(shù)碼管字符輪廓紋理清晰,如圖2(b)所示。
夜晚強光型圖像:受到非自然光照的影響,出現(xiàn)過度曝光,數(shù)碼管字體過度膨脹,字符顯示不清晰,如圖2(c)所示。
白天弱光型圖像:光照強度小,數(shù)碼管亮度高,字符顏色為白色,圖像較清晰,如圖2(d)所示。
白天正常型圖像:光線適中,數(shù)碼管字符大小與顏色發(fā)生變化,圖像對比度也較好,如圖2(e)所示。
白天強光型圖像:光照強度大,出現(xiàn)發(fā)光情況,數(shù)碼管點亮與熄滅之間灰度值差異小,字體顏色不一,不利于定位與分割,如圖2(f)所示。
設備未工作圖像:設備未開機,數(shù)碼管字符全部為熄滅狀態(tài),圖像整體為灰色狀態(tài),如圖2(g)所示。
當受到不同程度環(huán)境光照射下,對圖像的質量也有一定影響,灰度均值是粗略分析與判斷光照強弱的一個指標。不同時間段光照下的采集到的圖像分類及待檢測區(qū)域灰度均值分別如圖2和表1所示。
(a)夜晚無光型圖像
采集到的圖像中存在噪聲、模糊等干擾,為了后續(xù)能正確定位分割字符以及提高字符的定位和分割的準確性,還需要對圖片進行預處理。圖像預處理目的是為了去除噪聲干擾、光照不均等問題,從而可以更加準確分割及識別字符[11]。其主要步驟包括灰度化、中值濾波、圖像增強、閾值分割、形態(tài)學處理。流程如圖3所示。
圖3 圖像預處理流程
2.2.1 中值濾波
采集圖像的過程中,由于工廠生產環(huán)境較復雜,因此原圖像會受到噪聲的影響。經(jīng)過實驗測試驗證,文中選擇中值濾波[12]。經(jīng)過中值濾波處理后,可以減少噪聲的干擾,同時也能保留圖像細節(jié)及邊緣信息。圖4(a)、圖4(b)分別為灰度化及中值濾波后圖像。
(a)灰度化后圖像
2.2.2 圖像增強
為了更好區(qū)分數(shù)碼管亮滅狀態(tài),增加前景和背景對比度,同時去除噪聲及光照不均的干擾,需要對濾波后的圖像進行圖像增強處理,進一步定位的數(shù)碼管字符所在的位置。文中運用的是灰度變換中的線性灰度增強方法來對圖像進行處理。其計算公式如下:
g′i(x,y)=Ai(x,y)·gi(x,y)+Bi(x,y)
(2)
式中:i表示第i張圖像;g′i(x,y)為變換后的灰度值;gi(x,y)為原來的灰度值;Ai(x,y)為所乘系數(shù);Bi(x,y)為加權偏移值。
Ai(x,y)和Bi(x,y)的最佳取值計算公式如下:
(3)
Bi(x,y)=-Ai(x,y)·Gimin(x,y)
(4)
式中:Gimax為圖像最大灰度值;Gimin為圖像最小灰度值。
灰度直方圖就是通過直方圖的形式統(tǒng)計圖像中灰度分布頻率特性[13],反映了各個級別灰度出現(xiàn)的次數(shù)和頻率。圖5為圖4灰度化后和中值濾波后的圖像灰度直方圖。
(a)灰度化后直方圖
對于復雜光照條件下數(shù)碼管的識別,在不同時間段的光照下數(shù)碼管成像效果有差異,結合實驗測試、灰度統(tǒng)計分析以及光照不均特點,最后選擇了反向灰度拉伸。經(jīng)過該步驟后,去除了噪聲,且前景與背景的灰度差異更明顯,背景更干凈統(tǒng)一,消除了光照對圖像的影響,為后續(xù)圖像閾值分割提供了有利操作。圖6為光照較弱和光照較強條件下的圖像增強,以及增強后的灰度直方圖。
(a)光照較強下圖像增強 (b)光照較弱下圖像增強
2.2.3 動態(tài)自適應閾值分割
閾值分割是根據(jù)圖像灰度值的分布特征來選擇合適的閾值K,將圖像灰度值劃分成不同的區(qū)間范圍。分割方法如下:
(5)
式中:g(x,y)為閾值分割后圖像灰度值;f(x,y)為圖像增強后圖像灰度值。
g(x,y)=1的部分表示在設定閾值K下所分割的目標區(qū)域,g(x,y)=0表示圖像中背景區(qū)域。
為解決光照不均的影響,提高算法的適用性及穩(wěn)定性,設計了動態(tài)自適應閾值分割,其主要步驟為:
(1)根據(jù)灰度均值將圖像進行自動分類。
(2)通過Otsu算法[14]計算得到閾值參數(shù)K0。
(3)以K0為基準附加補償值得到動態(tài)閾值參數(shù)K。
K=K0+δi
(6)
式中δi為第i張圖像的附加補償值。
由于復雜光照影響,圖像的灰度分布并不唯一,會出現(xiàn)超過2個高斯核的灰度分布,此時利用Otsu算法計算得到的閾值參數(shù)可能并非為最佳閾值參數(shù),沒法得到正確的分割,為了使算法具有更強的適用性和穩(wěn)定性,通過附加補償值δi實現(xiàn)動態(tài)自適應閾值分割,根據(jù)灰度均值M范圍設定計算所需要的附加補償值,從而減少光照對定位分割的影響,提高分割定位的準確性。閾值參數(shù)K選擇根據(jù)不同灰度均值(式(1))動態(tài)變化。其具體取值選擇如表2所示。
表2 閾值參數(shù)K與灰度均值M之間關系
灰度信息是圖像的基本特征之一,灰度值的大小可以表示圖像的亮暗程度,利用這個特征對圖像進行了灰度均值的統(tǒng)計及圖像自動分類。閾值門限的大小與灰度均值相關,表2所列的動態(tài)閾值參數(shù)K取值與灰度均值M的關系主要通過點對點判斷,為使算法具有更高的通用性,將這種離散關系通過特征數(shù)據(jù)擬合成連續(xù)的泛化關系。
分別取每一梯度灰度均值M范圍的一個特征數(shù)據(jù)點作為自變量,閾值K作為因變量,進行四階多項式擬合。
擬合函數(shù)原型如下:
p(x)=P4x4+P3x3+P2x2+P1x+P0
(7)
式中:x為灰度均值M;p(x)為閾值K。
將7組數(shù)據(jù)輸入可得多項式系數(shù),得到最終的擬合函數(shù)(如圖7所示):
圖7 多項式擬合函數(shù)
p(x)=-1.159×10-7x4+6.014×10-5x3-0.009x2+0.491x-0.031
(8)
通過上述函數(shù)關系,將不同類型的圖像輸入,得到動態(tài)自適應閾值分割后結果,如圖8所示。
(a)光照較弱時分割結果
2.2.4 形態(tài)學處理
閾值分割處理后的圖像還存在其他連通區(qū)域干擾,需要將字符進一步提取處理。采用形態(tài)學處理進一步去除干擾。常見的形態(tài)學處理有膨脹、腐蝕、開運算、閉運算。
開運算(先腐蝕后膨脹)、閉運算(先膨脹后腐蝕)。文中根據(jù)不同時間段采集到的數(shù)碼管圖像選擇不同的形態(tài)學處理方法。夜晚采集到的數(shù)碼管字符比較大,文中選擇腐蝕操作,平滑邊緣,去除細小毛刺。針對白天情況,選擇先進性閉操作,填充孔洞,后進行開操作,消除噪聲及干擾區(qū)域。圖像經(jīng)過形態(tài)學操作后處理效果如圖9所示。
圖9 形態(tài)學處理效果
經(jīng)過預處理后的圖像再通過特征篩選即可把數(shù)碼管區(qū)域提取出來。但數(shù)碼管區(qū)域都是由多個字符組成的,要進行識別首先要進行字符分割[15-16],把一連串字符分割成單個字符來依次識別。由于每個數(shù)字所處的區(qū)域不同,并且每個數(shù)字的筆畫也不同,要將每個數(shù)字準確分割出來,就必須找到每個數(shù)字的精準位置。根據(jù)數(shù)字特點及形狀特征,選擇最小外接旋轉矩形法的定位方法。首先統(tǒng)計圖像中數(shù)字個數(shù),然后依次求出每個數(shù)字的最小外接旋轉矩形再進行分割。數(shù)字分割結果如圖10所示。
圖10 字符分割處理
由于拍攝角度原因,采集到圖像中的數(shù)碼管字符并不都是方正的,為提高字符識別準確性,將傾斜的數(shù)字進行校正。在前面處理工作中,字符分割時選用的是最小外接旋轉矩形方法,可以得到數(shù)字區(qū)域的傾斜角度θ,判斷出字符是否發(fā)生傾斜。通過仿射變換將傾斜的字符進行校正。
仿射變換是指二維坐標系經(jīng)過旋轉和平移變換到另一個二維坐標的過程。旋轉變換矩陣H1和平移變換矩陣T1分別如下:
式中:θ為旋轉角度;Tx為沿x軸平移量;Ty為沿y軸平移量。
假設w(x,y)為原始像素點坐標,w′(x′,y′)為仿射變換后的坐標,通過平移矩陣和平移矩陣關系可以計算得到仿射變換矩陣,仿射變換計算公式為
H′=T1·H1
(9)
(10)
式中H′為仿射變換矩陣。
校正前后圖片如圖11所示。
(a)校正前圖像 (b)校正后圖像
數(shù)碼管字符識別方法選用穿線法[17]。分別采用兩次水平掃描和一次垂直掃描,水平掃描選擇的分別是數(shù)碼管字符外接矩形高度1/3和2/3處,垂直方向選擇的是數(shù)碼管字符外接矩形寬度1/2處。然后依次檢測3條線與7段數(shù)碼管的每一段(1,2,3,4,5,6,7)相交情況,相交的記為1,不相交的記為0。再與數(shù)碼管字符編碼表(表3)作對比,以此得到識別結果。
表3 數(shù)碼管字符八位二進制碼表
表3中,數(shù)字1具有與其他字符獨特的形態(tài),所以可以通過字符面積及長寬比來判斷。各類光照條件下字符識別結果如圖12所示。
(a)(b)
實驗測試圖像全部都是在真實工業(yè)條件下采集的,由于工業(yè)壞境復雜,一天中光照是動態(tài)變化的,不同時間段下采集到的圖片由于光照強度不同導致成像效果不一樣,為了驗證算法的可實施性及準確性,選擇不同時間段的、光照不均的,每種圖像分類選取不同數(shù)目的圖片作為測試數(shù)據(jù)集。數(shù)據(jù)集中包括875張白天非均勻光照采集(其中825張為數(shù)碼管正常工作狀態(tài),50張為數(shù)碼管關閉),455張夜晚采集圖像,總共測試1 330張圖像。為了驗證算法的準確性及適用性,此次實驗測試選取的圖像中都包含4個字符的七段數(shù)碼管,而且數(shù)碼管字符大小不一、顏色多樣,當且僅當每張圖像中4個七段數(shù)碼管字符全部正確識別才算作一次成功的識別,不同類別圖像識別結果如表4所示。
表4 數(shù)碼管字符識別準確度
根據(jù)表4結果,采用文中提出的動態(tài)自適應閾值分割方法,總體識別準確性都比較高,在夜晚正常型、白天弱光型及設備未工作類型圖像中,識別準確率達到100%。但對于夜晚強光型圖像識別準確性比較低,由于過度曝光原因,在這種類型的圖像中,一些數(shù)碼管字符不是標準數(shù)字,導致算法造成了誤判或不能識別。白天強光型圖像識別準確率也較低,經(jīng)過對圖像的分析,發(fā)現(xiàn)在這個時間段采集到的圖像中由于受到光照影響太大,導致七段數(shù)碼管點亮的段數(shù)和熄滅的段數(shù)之間的灰度值差異太小,導致有些數(shù)字不能正確分割出來,從而影響識別結果。實驗測試總體識別準確率達到98.17%,平均識別時間為0.5 s,具有比較高的穩(wěn)定性和準確性。也驗證了該算法的適用性,可以對復雜光照條件下的數(shù)碼管進行區(qū)域定位以及準確識別字符。
為了驗證算法的適用性,將文中方法與文獻[9]方法作比較。對于不同光照下數(shù)碼管閾值分割定位,文獻[9]采用改進的最大類間方差法的方法閾值分割方法來處理光照不均的影響,字符識別同樣采用穿線法。每個數(shù)字的識別準確度如圖13所示。
圖13 本文方法與文獻[9]方法識別準確度對比
受到復雜光照影響,圖像灰度分布為動態(tài)變化,傳統(tǒng)的閾值分割方法不能滿足各類情況,相比較可知,本文設計方法可以更好適應復雜光照條件下對數(shù)碼管的識別,準確性更高,識別效率更快,滿足工業(yè)生產實時性要求。
在實際生產環(huán)境中,由于光照強度和角度的動態(tài)變化,導致不同時間段采集到的數(shù)碼管圖像灰度值及形態(tài)有明顯差異,不利于數(shù)碼管字符的正確定位與分割,從而給字符的識別帶來很大挑戰(zhàn)。為解決這個問題,利用圖像的灰度特征結合灰度直方圖設計了反向灰度拉伸方法,消除了光照不均對數(shù)碼管定位的影響,為提高字符分割的準確性,提出了動態(tài)自適應閾值分割方法,對不同灰度均值范圍的圖像選用不同的閾值參數(shù),提高了算法的適用性和魯棒性。通過實驗證明,該方法可以解決在復雜光照環(huán)境下對七段數(shù)碼管字符的識別,具有較強的穩(wěn)定性和適應性而且準確率較高、效率快,符合實際生產應用。下一步將進行的工作是研究圖像模糊及數(shù)碼管字符過度膨脹下識別算法,使算法具有更強的適用性與穩(wěn)定性。