摘 要:隨著科技的不斷發(fā)展,在財務(wù)、經(jīng)濟等一系列領(lǐng)域?qū)τ谑褂嬎銠C自動識別數(shù)字的應(yīng)用越來越廣泛,同時也不斷推動著更加精確的識別算法的深入研究。本文提出了一種針對手寫數(shù)字進行識別的方法,其基本思路是:將opencv開源庫函數(shù)與CodeBlocks編譯環(huán)境相結(jié)合,圖像預(yù)處理后再使用SVM(支持向量機)算法與較權(quán)威的MNIST數(shù)據(jù)集結(jié)合識別手寫數(shù)字。實驗結(jié)果表明,相比于參考文獻中的典型常用算法,該方法大大降低了識別錯誤率,在統(tǒng)計量樣本數(shù)比較小的情況下也能獲得較為準確的統(tǒng)計規(guī)律,該算法可行且有效。
關(guān)鍵詞:機器學(xué)習(xí);圖像處理;手寫數(shù)字識別;SVM分類算法
圖像是人們?nèi)粘I詈凸ぷ髦须S時都會碰到的一種客觀的靜態(tài)描述,對數(shù)字圖像的深入透徹研究大大方便了我們的生活。目前的對于數(shù)字識別的算法主要有K鄰近分類算法[1-3]、BP神經(jīng)網(wǎng)絡(luò)算法[4]。K近鄰分類算法本身簡單有效,不需要分類器進行訓(xùn)練,但其計算量較大,可理解性差;傳統(tǒng)的BP神經(jīng)網(wǎng)絡(luò)收斂速度慢,網(wǎng)絡(luò)和學(xué)習(xí)記憶不穩(wěn)定。本文使用SVM分類算法結(jié)合MNIST數(shù)據(jù)集進行數(shù)字的識別,SVM(support vector machine)即支持向量機是一種分類算法[5],其優(yōu)點是在統(tǒng)計量樣本數(shù)比較小的情況下也能獲得較為準確的統(tǒng)計規(guī)律。本文著手于研究機器識別手寫數(shù)字,此手寫數(shù)字識別實驗主要分為三個部分:圖像采集、圖像預(yù)處理、數(shù)字識別。
1 圖像預(yù)處理
對于攝取到的圖片進行數(shù)字預(yù)處理是實驗中重要的步驟之一是實驗得出準確結(jié)果的前提。采集信號時,周圍環(huán)境以及攝取設(shè)備對采集后的圖片影響很大,若不進行圖片預(yù)處理,往往很難得出正確結(jié)果。步驟如下:
1.1 中值濾波
一幅圖像中,噪聲的出現(xiàn)會使噪聲點處的像素值比其周圍的像素值相差非常多。可把圖像中某一塊的數(shù)據(jù)中所有像素值按大小順序排列,如此和其他像素值相差很大的噪聲點處的像素就會被排到最前或者最末端,再將排在中間的像素值代替模塊中的中間的目標像素值,便可有效去除噪聲。
1.2 直方圖均衡化
直方圖均衡化著重于圖像灰度級的變換,目的是將圖像灰度增強,它在實際工程中使用比較廣泛。利用直方圖均衡化可以將處理后的圖像實際亮度集中的分布在亮度范圍的中間區(qū)域。
1.3 圖像分割
對提取到的圖片進行圖片分割,可將想要得到的數(shù)字更清晰的呈現(xiàn)出來。對于最佳閾值的選取,可以采用遍歷像素值[1~254]。
(1)首先人工設(shè)置初始閾值Th=Th0將原圖分為兩類;分別計算兩類的類內(nèi)方差:
(4)
(5)
(6)
(7)
(2)計算兩個區(qū)域各自的分布概率
(8)
(9)
(3)像素遍歷選擇選擇最佳閾值,根據(jù)以下公式判定
(10)
1.4 形態(tài)學(xué)濾波
最基本的形態(tài)學(xué)濾波是腐蝕和膨脹,考慮到手寫數(shù)字筆畫可能會很粗不易于后期識別,所以采用膨脹的算法思路。一般膨脹是對二值圖像進行處理,將此放在預(yù)處理最后一步。
2 數(shù)字識別
得到攝像頭采集并經(jīng)過處理后的數(shù)字圖片后,下一步便是識別。識別數(shù)字的方式有很多,本文我們使用支持向量機SVM分類算法來實現(xiàn)手寫數(shù)字識別。深度學(xué)習(xí)一般的解決思路便是將大量實例用于訓(xùn)練學(xué)習(xí),學(xué)習(xí)后的機器會產(chǎn)生自己的一套識別體系,利用訓(xùn)練好的系統(tǒng)去識別未知的數(shù)字。其中SVM分類算法就是這樣一個基礎(chǔ)的機器學(xué)習(xí)的思想,在獲得大量樣本進行大量學(xué)習(xí)形成學(xué)習(xí)系統(tǒng)之后,機器形成一套自己用來識別手寫數(shù)字的規(guī)則。隨著樣本數(shù)量的增加,算法會學(xué)的更加精確,不斷提升自身的準確性。通常對于分類問題,可以將數(shù)據(jù)集分成三部分:訓(xùn)練集、測試集、交叉驗證集。用訓(xùn)練集訓(xùn)練系統(tǒng)從而生成對數(shù)字的學(xué)習(xí)模型,用后者進行準確性驗證(優(yōu)化參數(shù))。在ubuntu上,大約運行十分鐘便可以完成訓(xùn)練和預(yù)測測試集的結(jié)果。
采用MNIST數(shù)據(jù)集下載訓(xùn)練數(shù)據(jù)和測試文件。要注意,攝像機采集之后,為了增強識別效果,對采集到的數(shù)字圖片進行預(yù)處理以達到手寫數(shù)字圖片庫的數(shù)字模式使識別可以更加準確。MNIST數(shù)據(jù)庫是一個手寫數(shù)據(jù)庫,它有60000個訓(xùn)練樣本集,10000個測試樣本集。它是NIST數(shù)據(jù)庫的一個子集。下載后的文件并不是標準的圖像格式,圖像都保存在二進制文件中,每個樣本圖像的寬高為28*28。在進行編寫匹配程序之前要把其轉(zhuǎn)換為普通jpg格式的文件。
3 結(jié)論
本文從識別手寫數(shù)字字符識別入手,通過查閱大量資料得出一套完整的手寫數(shù)字識別的方法體系,并且在Windows平臺下,利用計算機視覺庫OpenCv和CodeBlocks環(huán)境相結(jié)合進行實驗,得出結(jié)果準確度高。采用的SVM分類算法與和典型的K鄰近分類算法、BP神經(jīng)網(wǎng)絡(luò)算法相比,識別精度高。但是,在攝取圖片背景復(fù)雜、圖片曝光過度或不足、分辨率低的情況下,各算法還需要進一步完善。
參考文獻
[1] 陳振洲,李磊,姚正安. 基于SVM的特征加權(quán)KNN算法[J]. 中山大學(xué)學(xué)報(自然科學(xué)版). 2005(01)
[2] 錢曉東,王正歐. 基于改進KNN的文本分類方法[J]. 情報科學(xué). 2005(04)
[3] Yufei Tao,Dimitris Papadias,Nikos Mamoulis,Jun Zhang.An efficient cost model for K-NN search technical report. HKUST . 2001
[4] 王建梅,覃文忠. 基于L-M算法的BP神經(jīng)網(wǎng)絡(luò)分類器[J]. 武漢大學(xué)學(xué)報(信息科學(xué)版). 2005(10)
[5] 奉國和,朱思銘. 基于聚類的大樣本支持向量機研究[J]. 計算機科學(xué). 2006(04)
作者簡介
梁培哲(1997-),女,漢族,鄭州大學(xué)物理工程學(xué)院電子信息科學(xué)與技術(shù)專業(yè)2014級學(xué)生。