陳宗雄
摘要:介紹了一種簡易的LED數(shù)字識別的算法。與傳統(tǒng)的數(shù)字識別方法相比較,識別精度較高。該算法對采集到的4個數(shù)字字符二值化后的圖像用最近鄰算法,并對最近鄰得到的結(jié)果的置信度進行評估實現(xiàn)數(shù)字的識別。利用該方法時,通過對置信度的評估,只有4個數(shù)字都具有較高置信度的識別結(jié)果才能被接受,否則單獨對某個字符重新細化處理,大大提高了識別的精度。減少因鏡頭模糊,傾斜,光照等因素而造成采集得到的圖像的中字符發(fā)生的旋轉(zhuǎn),粘連,部分缺失而引起的誤識。在以此算法為基礎(chǔ)對256幅圖片,每幅圖片上4個字符的數(shù)字同時進行識別測試,正確識別率達到97.66%,誤識率僅為2.34%。實驗表明,該算法在識別精度、抗干擾性方面表現(xiàn)良好。
關(guān)鍵詞:數(shù)字識別;最近鄰算法;外接矩形;置信度
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2014)23-5496-05
數(shù)字識別是光學(xué)字符識別(OCR)的一個重要分支,在車牌號碼、身份證號碼、支票號碼、郵政編碼以及其他編號識別方面具有重要的實用價值。傳統(tǒng)OCR過程大都包含二值化、去噪、規(guī)整、細化、輪廓提取、特征提取、字體字符分類等處理步驟,系統(tǒng)運行效率較低。許多數(shù)字字符識別系統(tǒng)為了提高識別率采用SIFT提取特征[1],Adaboost級聯(lián)分類器[2]、BP神經(jīng)網(wǎng)絡(luò)來識別數(shù)字[3][4]、支持向量機[5]等方式這樣大大增加了算法的復(fù)雜性。在本文中采集到的數(shù)字是由數(shù)碼管顯示的,這些數(shù)字具有一定的規(guī)律,通過對數(shù)字圖片的樣本的采集分類,直接采用最近鄰算法[6](KNN)就可以實現(xiàn)對數(shù)字的識別了??紤]到相機拍攝的過程中可能有遮擋,傾斜,光照等一些外觀因素的影響,造成了對數(shù)字識別的干擾,使得直接采用傳統(tǒng)的KNN算法在對數(shù)字識別過程中的準確率相對比較低。為了提高數(shù)字識別的準確率,該文通過對某個數(shù)字的“鄰居”的個數(shù)作為該數(shù)字判斷的置信度,只有置信度滿足某個閾值,才認為該數(shù)字的識別是正確的。這樣就可以避免地低置信度的識別進入到最后的結(jié)果,大大提高了識別的準確率。
1 識別框架
本系統(tǒng)中奶牛奶量的產(chǎn)量會在LED顯示屏上顯示4個數(shù)字。故本文所采集圖像雖然一開始不知道該圖片中是否包含有數(shù)字,但是每幅正確采集得到的圖像中應(yīng)該包含4個LED數(shù)字。所以在識別數(shù)字之前要對圖片中是否有數(shù)字以及數(shù)字的個數(shù)進行判斷。通過對圖像二值化、輪廓提取,定位外接矩形來判斷圖片中是否包含數(shù)字以及每幅圖像包含數(shù)字的個數(shù)。最后用最近鄰法判斷測試樣本,并且對每個識別出來的數(shù)字的置信度進行評估,滿足條件的才能認為是準確識別的,輸出結(jié)果,否則對該數(shù)字重新處理。
2 識別算法設(shè)計
2.1 圖像二值化
首先對拍攝到的圖像進行二值化,形態(tài)學(xué)操作,達到消除噪聲的目的,使數(shù)字的識別更加精確。
大津法[7](OTSU)是一種確定圖像二值化分割閾值的算法,由日本學(xué)者大津于1979年提出。從大津法的原理上來講,該方法又稱作最大類間方差法,因為按照大津法求得的閾值進行圖像二值化分割后,前景與背景圖像的類間方差最大。
對于圖像[I(x,y)],前景(即目標)和背景的分割閾值記作[T],屬于前景的像素點數(shù)占整幅圖像的比例記為[ω0],其平均灰度[μ0];背景像素點數(shù)占整幅圖像的比例為[ω1],其平均灰度為[μ1]。圖像的總平均灰度記為[μ],類間方差記為[g]。
假設(shè)圖像的背景較暗,并且圖像的大小為[M*N],圖像中像素的灰度值小于閾值[T]的像素個數(shù)記作[N0],像素灰度大于閾值[T]的像素個數(shù)記作[N1],則有:
采用遍歷的方法得到使類間方差g最大的閾值T,即為所求。
如下圖所示,經(jīng)過二值化后的圖像是比較清晰的。我們可以很方便的從圖片中截取有數(shù)字的區(qū)域作為感興趣區(qū)(ROI,Region Of Interest),減少之后對圖片處理的運算量。
2.3 輪廓獲取[8]
在拍攝過程中的存在各種干擾,導(dǎo)致在圖像中引入很多噪聲。
1) 數(shù)字模糊問題
如下圖所示,可以看到如下的數(shù)字是“1394”,但是由于外在因素導(dǎo)致“9”,“4”這兩個數(shù)字有些模糊,直接對輪廓的提取,得到的外接矩形效果如圖,我們可以看到數(shù)字“4”有部分缺失,導(dǎo)致在輪廓的提取中被分割成了3個獨立的部分。這樣會導(dǎo)致在后續(xù)的處理中將數(shù)字“4”當作3個獨立的數(shù)字處理。這樣在最后的識別過程中就會得不到正確的結(jié)果。
3) 數(shù)字粘連問題
因為對數(shù)字的識別是一組4個數(shù)字同時進行識別,只有四個數(shù)字完全識別正確,才認為最后的識別結(jié)果是正確的。所以上述的3個問題會直接導(dǎo)致我們在對數(shù)字識別錯誤。必須采取一系列的措施對外接矩形的重新定位。
考慮到本文所采集得到的圖像在縮放方面的影響因素比較小,可以采用事先對每個數(shù)字的外接矩形進行標定,之后通過如下算法對外接矩形進行精確的定位。
1) 通過判斷每個數(shù)字的外接矩形的橫軸中心位置,可以知道如果兩個矩形的是同一個矩形,則滿足
導(dǎo)致在對有效輪廓的判斷是被忽略掉。
采用上述方法對輪廓提取、外接矩形定位后使得后續(xù)中對數(shù)字的識別的準確度大大提高。
2.3 改進的最近鄰算法
近鄰法是根據(jù)樣本提供的信息,繞開概率的估計而直接決策的方法,是一種非參數(shù)決策方法。直接使用該方法會導(dǎo)致對識別結(jié)果的置信度不能確定,不能估計該數(shù)字識別正確的概率有多大。
改進后的最近鄰算法如下:
1) 對處理過的圖像采用傳統(tǒng)KNN識別,并對K(本文中K = 21) 個“鄰居”中每個可能的結(jié)果的置信度進行計算。計算公式如下:
[置信度=該數(shù)出現(xiàn)的頻數(shù)N定義鄰居的個數(shù)K×100%]
2) 對得到的置信度進行評估,只有滿足以下條件的置信度大于一定的閾值threshold(本文中取threshold = 80)認為該數(shù)字的識別結(jié)果是正確的,輸出結(jié)果。
3) 如果置信度不滿足要求,將此時識別的結(jié)果和該結(jié)果對應(yīng)的置信度保存在數(shù)組possible_array中。并對該數(shù)字字符重新細化處理,可以通過膨脹或腐蝕的方式,使得輪廓變得更加清晰,之后轉(zhuǎn)到步驟1。
4) 經(jīng)過上述的一系列處理之后仍然得不到滿足條件的置信度,此時我們可以查看possible_array數(shù)組,取置信度最高對應(yīng)的數(shù)字作為最終識別的結(jié)果。這樣可以保證該數(shù)字的識別結(jié)果的置信度最高。
下面舉例說明。如圖13所示:
以下是對256幅圖像進行測試得到的結(jié)果。
3 總結(jié)
本文基于最近鄰算法,通過其“鄰居”的個數(shù)作為置信度的方法實現(xiàn)了對LED數(shù)字的識別。該方法思路簡單清晰。對從攝像頭采集得到的數(shù)字圖像進行了預(yù)處理,能夠得到較高識別準確率。使用該方法發(fā)生進行識別數(shù)字時,能夠克服LED數(shù)字字符顯示偏暗而造成的對比度降低,字符的小角度旋轉(zhuǎn)等一些因素的影響。使用該方法造成的誤判時,錯誤的來源是,有些LED數(shù)字字符沒有顯示或僅顯示1段而造成該字符的信息過多。同時該算法由于多次的重新對圖像的處理,使得整個識別的過程比較慢,實時性不強。
參考文獻:
[1] 張璐.基于印刷體數(shù)字SIFT特征的目標識別[D].成都:電子科技大學(xué),2013.
[2] 趙萬鵬,古樂野.基于Adaboost算法的數(shù)字識別技術(shù)的研究與應(yīng)用[J].計算機應(yīng)用,2005,25(10):2413-2417.
[3] 何松,戚建宇.基于改進BP神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識別[J].計算機科學(xué),2011,38(10A):204-205.
[4] 張彤,肖南峰.基于BP網(wǎng)絡(luò)的數(shù)字識別方法[J].重慶理工大學(xué)學(xué)報:自然科學(xué)版,2010,24(3):43-47.
[5] 宋婉娟.基于支持向量機的手寫數(shù)字串識別[J].湖北第二師范學(xué)院學(xué)報,2010,27(2):84-86.
[6] Trevor Hastie, Rolbert Tibshirani. Discriminant Adaptive Nearest Neighbor Classification[J].Pattern Analysis and Machine Intelligence, IEEE Transactions on, VOL. 18, NO. 6, JUNE 1996: 607-616.
[7] N. Otsu, A threshold selection method from gray level histograms[J]. IEEE Trans on SYSTEMS, MAN, AND CYBERNETICS. VOL. SMC-9, NO.1.JAN,1979: 62-66.
[8] Bradski G, Kaehler A. Learning OpenCV: Computer vision with the OpenCV library[M].O'Reilly Media, Inc., 2008.
[9] 基于 OpenCV 的計算機視覺技術(shù)實現(xiàn)[M].北京:科學(xué)出版社, 2008.
[10] 陳兵旗,孫明.Visual C++實用圖像處理[M].北京:清華大學(xué)出版社,2004.