隨著機器視覺[1]、物聯(lián)網(wǎng)技術及人工智能(Atificial Intelligence)技術的發(fā)展,半自動甚至全自動機械設備的廣泛使用將成為主流趨勢,現(xiàn)代化的工廠中每臺設備中都有若干個傳感器,能源源不斷地將控制信息和狀態(tài)信息傳給中央控制臺統(tǒng)一管理。然而一些老式的加工設備中沒有裝備這些設備,只有一些儀表或七段數(shù)碼管顯示設備,對這些設備集中管理主要有人工巡檢、加裝傳感器及機器人自動巡檢3種方案。顯然人工巡檢成本高、效率低;加裝傳感器的方案更可行一點,但對已有設備要做較大改動,有可能會損壞設備;采用機器人自動巡檢成本低、無時間限制,可以24小時工作且不需要改動原有機器設備,是一種較優(yōu)的方案。要讓機器人自動巡檢,首先要解決儀表及數(shù)碼管的自動識別問題。
由于七段數(shù)碼管數(shù)字顯示設備[2]具有可靠性高、精度高、控制簡單等特點,被廣泛應用于工廠自動化流水生產(chǎn)線、儀器儀表顯示等領域;七段數(shù)碼管數(shù)顯設備的自動識別技術,是實現(xiàn)各種老式數(shù)顯設備互聯(lián)和集成,實現(xiàn)管控一體化、智能化的關鍵,也是儀表自動校正和儀表數(shù)據(jù)自動錄入系統(tǒng)的核心。
本文初步探討了七段數(shù)碼管數(shù)字的識別方法,提出了一種使用神經(jīng)網(wǎng)絡分類、識別數(shù)顯儀表的字符圖像特征向量的算法。試驗結(jié)果表明,該系統(tǒng)的分類正確率較高,對于帶小數(shù)點的數(shù)字圖像能達到94%,對于不帶小數(shù)點的數(shù)字圖像能達到98%。本方法暫時僅用于識別七段數(shù)碼管顯示的數(shù)字字符圖像,應用領域有一定限制。后續(xù)研究中將進一步提高算法的正確率和魯棒性,完善其他儀表的識別功能[3],為實現(xiàn)遠程儀表數(shù)據(jù)識別和錄入以及各種數(shù)顯設備互聯(lián)和集成提供技術支持。
七段數(shù)碼管圖像中數(shù)字識別算法的流程框圖如圖1所示。首先由數(shù)碼相機獲取儀表盤的圖像,由于廠房內(nèi)一般是燈光照明而非自然日光照明,拍攝的數(shù)碼圖像上往往存在噪聲,表現(xiàn)在數(shù)碼管圖像上的顏色不夠均一,會影響數(shù)字的提取;這就需要先去除圖像上的噪聲,再對圖像進行平滑,使數(shù)字上顏色值盡可能相同,便于從圖片中提取數(shù)字。為便于進一步處理,將提取出的數(shù)字圖像設置為黑色,其余部分全部設置為白色;為便于用神經(jīng)網(wǎng)絡進行識別,還需要進一步將多數(shù)字圖片分割為一個個獨立數(shù)字的圖片,并轉(zhuǎn)化為相同的圖片尺寸,即對圖片尺寸進行歸一化處理;歸一化后的圖片若直接作為神經(jīng)網(wǎng)絡輸入,以一幅圖片像素為例,將產(chǎn)生900個數(shù)據(jù),這對神經(jīng)網(wǎng)絡來說是很龐大的數(shù)據(jù),將影響神經(jīng)網(wǎng)絡計算的實時性,比如將圖片分塊為分割成塊,則只有25個數(shù)據(jù),容易實現(xiàn)實時計算。為使得神經(jīng)網(wǎng)絡能識別出對應的數(shù)字,需要先用多幅數(shù)字0~9的圖片的特征向量對神經(jīng)網(wǎng)絡進行訓練,得到神經(jīng)網(wǎng)絡正確的參數(shù)以后,神經(jīng)網(wǎng)絡才能根據(jù)輸入向量輸出對應的識別結(jié)果。
圖像去噪算法主要有均值濾波、眾值濾波、中值濾波、傅里葉變換及小波變換等算法。傅里葉變換及小波變換時間復雜度高,一般難以滿足實時性要求,中值濾波在濾除椒鹽噪聲方面效果較好且算法簡單、運行速度快,因而本文采用中值濾波先過濾椒鹽噪聲。中值濾波的原理如圖2所示,9是待處理的像素點,要同時考慮其周圍8個像素點的值,將9個點從小到大排序,取中間一個值作為最終結(jié)果,本例中將以6代替中間的9。
圖2 中值濾波原理
去除噪聲點后的數(shù)字圖像中各像素值的差異仍然比較大,為便于根據(jù)顏色提取數(shù)字圖像,需要將圖像進行平滑,也即低通濾波,其效果就是圖像看起來更加模糊。最簡單的低通濾波算法就是將一個像素值與其周圍8個點取平均值,算法簡單,但效果不好。二維高斯函數(shù)[見公式(1)]由于存在中間最大、四周逐漸變小的特性,能夠很好地處理當前像素點與周圍像素點之間的關系,且可以通過標準差(σ)調(diào)節(jié)函數(shù)的凹凸程度,使用較靈活、方便,因而本文使用二維高斯函數(shù)作為低通濾波器。如公式(2)所示,I(x,y)表示原圖像,如圖3中A1到A5所示;G(x,y,σ)表示二維高斯函數(shù);L(x,y,σ)表示經(jīng)過二維高斯函數(shù)濾波后的圖像,如圖3中B1到B5所示,(x,y),表示圖像中x,y處的像素。
圖3 樣本及識別過程
圖3中B1到B5是幾種典型顏色(粉紅色、深黃色、淡黃色、綠色、紅色)的七段數(shù)碼管去噪并平滑后的圖像,每種數(shù)碼管的典型色彩也列于圖片下方。提取時以典型顏色為中心,上下浮動30級,其區(qū)間內(nèi)的顏色作為數(shù)碼管的顏色,并將其設置為黑色,其余部分設置為白色。提取出的結(jié)果如圖3中C1到C5所示。
經(jīng)過上一步操作得到的是包含多個數(shù)字的黑白圖像,為識別出各個獨立的數(shù)字需要對這幅圖像進行分割。為使分割容易進行,最好先將C1到C5中的黑白圖像先放大一倍,雖然使黑色數(shù)字區(qū)域增大了,但也使得數(shù)字之間的白色間隔增大了一倍,使分割出錯的概率明顯降低。分割時,先對圖像進行行掃描,若一行中所有像素都是白色,表示其中沒有字符組成像素,直接忽略;若該行中存在多個黑色像素點,說明該行跨過了字符像素,需要保留。經(jīng)過行掃描后,可以得到一行或數(shù)行字符圖片,再對這些圖片進行列掃描,即可得到一個一個獨立的數(shù)字圖片,如圖D1到D5所示。
值得注意的是,同一幅圖片中的各個數(shù)字高和寬是基本相同的,但1除外。1不但在高度方向上短于其他字符,在寬度方向上也比其他字符窄很多。為便于神經(jīng)網(wǎng)絡的識別,需要將這些數(shù)字圖片歸一化為相同的高和寬的圖片,與非歸一化相比,統(tǒng)一高寬的字符圖像的識別準確率更高。字符圖片寬、高的歸一化處理也會在一定程度上破壞原來的圖像,給識別帶來困難;若調(diào)整后的寬與高比原來的圖像小很多,會壓縮字符圖像,丟失圖像的細節(jié),不利于識別;若調(diào)整后的寬與高過大,圖像處理的計算量大,處理速度緩慢,考慮到數(shù)字圖片呈長方形狀,本文將調(diào)整后的寬、高分別設置為30與50。
拍攝的數(shù)碼管字符圖像中,有些圖像的數(shù)字組合中是帶小數(shù)點的,需要先處理小數(shù)點。對于帶有小數(shù)點的圖像,由于小數(shù)點離數(shù)字非常近,在分割圖像中的數(shù)字區(qū)域時,容易把小數(shù)點和其左邊的數(shù)字作為同一個數(shù)字劃分為一個字符,特別是數(shù)碼管是傾斜字體時更容易出現(xiàn)這種錯誤劃分,這種誤分對數(shù)字的識別影響不大,但損失了小數(shù)點的信息。字符分割前,先要判別圖像中是否帶有小數(shù)點及其具體位置,數(shù)字圖像中是否存在小數(shù)點的具體算法。首先定位小數(shù)點所在區(qū)域,一般在一個數(shù)字圖像的右下角,再統(tǒng)計此區(qū)域內(nèi)黑色像素的個數(shù),與區(qū)域整體像素個數(shù)相除,得出黑色像素比例m,若m大于通過試驗事先確定的閾值M,則表示此處有小數(shù)點,否則說明無小數(shù)點。
圖像的特征是指圖像中可以與其他圖像相區(qū)別的標志性信息。特征提取是將圖像中不易受隨機因素干擾的信息作為該圖像的標識提取出來。特征提取操作會產(chǎn)生一組數(shù)據(jù),按一定規(guī)律組合起來就是特征向量,特征向量所包含的信息雖比原圖像少,但它過濾了隨機噪聲,且包含識別、分類所需的關鍵信息,使識別或分類結(jié)果更穩(wěn)定。
本文中特征提取采用分塊法,將每一個數(shù)字圖形劃分為H×W個模塊,即將每個數(shù)字圖片的高度分為H份,寬度分為W份,整個圖像被分為H×W塊,統(tǒng)計每一塊內(nèi)黑色像素個數(shù)占本塊內(nèi)像素總數(shù)的比例,作為該塊區(qū)域的特征值。H、W的值越大,所得特征數(shù)據(jù)就越多,但計算量就越大。文中將圖片分塊為5×3塊,可提取出15個特征值,將這15個特征值按從左至右、從上往下的次序組合起來就成為特征向量,可進一步作為神經(jīng)網(wǎng)絡輸入,由神經(jīng)網(wǎng)絡識別出對應的數(shù)字。
圖4 數(shù)字2的特征提取示例
圖4中是提取數(shù)字2的圖像中特征向量的例子,為簡單起見,本例中只將圖像分為4(2×2)塊;首先計算出每個分塊中黑色像素所占比例,如圖中箭頭所指各塊中黑色像素所占比例分別為0.04、0.27、0.25、0.07;再將這4個數(shù)字按從左至右、從上往下的次序組合起來就得到右邊的特征向量。
在求出數(shù)字圖像的特征向量之后,就可以使用人工神經(jīng)網(wǎng)絡、SVM(Support Vector Machine)等分類算法進行識別。經(jīng)試驗確定選擇3層BP(Back Propagation)[4]神經(jīng)網(wǎng)絡對數(shù)字圖像的特征向量進行分類,每個數(shù)字圖像經(jīng)過預處理,得到一個含15個特征值的特征向量,因此將神經(jīng)網(wǎng)絡的輸入層神經(jīng)元設置為15個;隱含層的神經(jīng)元數(shù)設置為20個;輸出層神經(jīng)元數(shù)為10個,分別對應數(shù)字0到9;當識別出是某個數(shù)字時,輸出神經(jīng)元對應位置上為1,其余位置為-1。選擇S(Sigmoid)型函數(shù)作為隱含層的激勵函數(shù),線性函數(shù)作為輸出層的激勵函數(shù)。神經(jīng)網(wǎng)絡的結(jié)構如圖5所示,采用梯度下降法調(diào)整神經(jīng)網(wǎng)絡各節(jié)點的權重和偏置值,調(diào)整為公式(3)和(4)。
其中,W(m)——第m層的權重;b(m)——第m層的偏置值;k——第k次訓練;δ——調(diào)整速率因子;s(m)——第m層敏感因子,a(m-1)——第m-1層的實際輸出。
先要用若干特征向量的樣本對神經(jīng)網(wǎng)絡進行訓練,訓練后的神經(jīng)網(wǎng)絡才能用于識別與分類。
圖5 識別用神經(jīng)網(wǎng)絡結(jié)構
為了測試算法的性能和分類準確率,文中進行了一定量的試驗。其中,不帶小數(shù)點的數(shù)碼管圖像及帶小數(shù)點的數(shù)碼管圖像各用了50張,0到9每個數(shù)字各5張,分別來自不同的棉花加工設備的數(shù)顯儀表,這些圖像的拍攝角度及拍攝時的環(huán)境光線均不完全相同。測試結(jié)果如表1所示。從表1可見,無小數(shù)點的數(shù)碼管圖像的識別率要稍高于帶小數(shù)點的圖像,說明小數(shù)點對圖像識別準確性有些干擾,但強度不大。
表1 分類試驗與結(jié)果
本文初步探討了七段數(shù)碼管數(shù)字的識別方法,提出了一種使用神經(jīng)網(wǎng)絡分類、識別數(shù)顯儀表的字符圖像特征向量的算法。試驗結(jié)果表明,該系統(tǒng)的分類正確率較高,對于帶小數(shù)點的數(shù)字圖像能達到94%,對于不帶小數(shù)點的數(shù)字圖像能達到98%。后續(xù)研究中將進一步提高算法的正確率和魯棒性,完善其他儀表的識別功能,為實現(xiàn)各種數(shù)顯設備互聯(lián)和集成提供技術支持。