張光建



摘 要:在手寫數(shù)字識(shí)別中,對(duì)采集的數(shù)字圖像必須預(yù)先進(jìn)行預(yù)處理,再進(jìn)行識(shí)別研究。使用MATLAB的GUI創(chuàng)建圖形化的操作與顯示界面進(jìn)行預(yù)處理,能減少研究人員反復(fù)修改代碼的重復(fù)工作,并能直接顯示預(yù)處理后數(shù)字圖像,能對(duì)比各種算法處理的效果,以確定最佳算法及方式,達(dá)到高識(shí)別率目標(biāo)。
關(guān)鍵詞:模式識(shí)別;手寫數(shù)字識(shí)別;圖像處理;MATLAB GUI
中圖分類號(hào):TP181 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-2163(2015)01-
Abstract: In handwritten numeral recognition, the digital image acquisition must be pretreated, and then to carry out identify research. Create graphics using MATLAB GUI operation and display interface for pretreatment, repetitive work of the researchers can be reduced to repeatedly modify the code, and can directly display the digital image pretreatment, which can compares the treatment effect of various algorithms, therefore determine the best algorithm and the way. So the target of high recognition rate is achieved.
Key words: Pattern Recognition; Handwritten Numeral Recognition; Image Processing;MATLAB GUI
0 引 言
手寫體數(shù)字識(shí)別(Handwritten Numeral Recognition)是光學(xué)字符識(shí)別技術(shù)(Optical Character Recognition,簡(jiǎn)稱OCR)的一個(gè)分支。主要研究利用計(jì)算機(jī)自動(dòng)辨認(rèn)人手寫在紙張上或電子設(shè)備的10個(gè)阿拉伯?dāng)?shù)字。寫在紙張上的稱為脫機(jī)手寫(off-line),寫在電子設(shè)備上的稱為聯(lián)機(jī)手寫(on-line)[1]。手寫數(shù)字識(shí)別的研究有很強(qiáng)的實(shí)際應(yīng)用價(jià)值,如在大規(guī)模的數(shù)據(jù)統(tǒng)計(jì)(如:行業(yè)年檢、人中普查等)、賬務(wù)、稅務(wù)、金融領(lǐng)域等。在郵件的自動(dòng)分揀中,手寫數(shù)字識(shí)別與光學(xué)條碼識(shí)別和人工輔助識(shí)別等手段相結(jié)合,來協(xié)同完成郵政編碼的閱讀。
聯(lián)機(jī)手寫的數(shù)字識(shí)別已應(yīng)用于實(shí)際,但脫機(jī)手寫的研究成果還不是很好,雖然手寫數(shù)字識(shí)別只有0-9十個(gè)數(shù)字,共10個(gè)符號(hào),筆畫的結(jié)構(gòu)與書寫較為簡(jiǎn)單,但困難在于同一個(gè)數(shù)字寫法各個(gè)不同,不同的人對(duì)同一個(gè)數(shù)字寫法不一樣,同一個(gè)人在不同時(shí)候?qū)懴嗤臄?shù)字時(shí)數(shù)字樣式也可能不同,而且書寫的數(shù)字在一般應(yīng)用范圍內(nèi)也沒有上下文的關(guān)聯(lián)。脫機(jī)手寫一般寫在紙質(zhì)載體上,需要先期用圖像進(jìn)行采集,對(duì)數(shù)字符號(hào)的圖像的預(yù)處理將直接影響到數(shù)字識(shí)別率高低。
圖形用戶界面(Graphical User Interface,簡(jiǎn)稱 GUI,又稱圖形用戶接口)[2]是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對(duì)于用戶來說在視覺上更易于接受,而且極大地方便了非專業(yè)用戶的使用。因?yàn)椴辉傩枰烙浻脖炒罅康拿睿皇峭ㄟ^窗口、菜單、按鍵等方式即可方便地進(jìn)行各類操作。并且,嵌入式GUI具有輕型、占用資源少、高性能、高可靠性、便于移植、可配置等特點(diǎn)。
脫機(jī)手寫數(shù)字識(shí)別中需要對(duì)原始的數(shù)字圖像進(jìn)行先期預(yù)處理,但是使用不同的處理方法(或算法),卻會(huì)對(duì)后期數(shù)字識(shí)別率產(chǎn)生直接影響。研究已知,數(shù)字識(shí)別是一種實(shí)驗(yàn)性科學(xué),因此可以通過實(shí)踐對(duì)實(shí)驗(yàn)進(jìn)行一些有利嘗試,只要這些設(shè)計(jì)嘗試不會(huì)影響一般性前提并且是合理的,那么這種處理就是可行的。比如,對(duì)數(shù)字圖像二值化就可以采用:整體閾值二值化、局部閾值二值化、動(dòng)態(tài)閾值二值化、利用空間信息閾值二值化等,具體在預(yù)處理時(shí),則可根據(jù)采樣樣本選擇最佳的二值化處理。
使用MATLAB的M文件也能測(cè)試各種處理效果,但研究人員卻要反復(fù)修改程序代碼。使用MATLAB的GUI[3 -5],在數(shù)字圖像預(yù)處理中,各步驟中可以應(yīng)用現(xiàn)有的各種處理方法(或算法),同時(shí)借助操作簡(jiǎn)單的圖像化數(shù)字圖像工具,如此則可為手寫數(shù)字識(shí)別研究的人員減少研究中的重復(fù)工作,并且直觀比較各種算法處理完成的結(jié)果和效果,而研究人員只需重點(diǎn)專注于識(shí)別算法的研究方面。本文即就是GUI設(shè)計(jì)的完整過程給出詳細(xì)論述。
1 GUI設(shè)計(jì)
1.1 啟動(dòng)MATLAB 的GUI
在MATLAB的命令窗口中,鍵入guide命令,啟動(dòng)“GUIDE Quick Start”窗口,如圖1所示。選擇GUIDE的模板,單擊“OK”按鈕確認(rèn),啟動(dòng)了GUI設(shè)計(jì)窗口 。
1.2 設(shè)計(jì)圖像預(yù)處理GUI
一般情況下,預(yù)處理步驟分別包括了字圖像的導(dǎo)入、灰度化、二值化、平滑去噪、分割、歸一化、矯正、細(xì)化以及保存。根據(jù)每一步驟的實(shí)現(xiàn),針對(duì)每一個(gè)步驟均需設(shè)計(jì)一個(gè)菜單項(xiàng),并且如果有多種處理方式(或算法),則設(shè)計(jì)子菜單項(xiàng),具體實(shí)現(xiàn)過程為:?jiǎn)螕鬐UI設(shè)計(jì)窗口的工具欄中的控件“Menu Editor” ,在彈出的“Menu Editor”窗口中根據(jù)預(yù)處理步驟設(shè)計(jì)菜單,如圖2所示。如果默認(rèn)操作則使用按鈕完成。
使用GUI設(shè)計(jì)窗口的工具欄中的控件“Toolbar Editor” 添加常用的工具欄按鈕,完成界面如圖3所示。
2功能實(shí)現(xiàn)
根據(jù)數(shù)字圖像的處理步驟,在各個(gè)按鈕上右擊鼠標(biāo),其后出現(xiàn)的快捷菜單中則選擇“View CallBack”,再單擊級(jí)聯(lián)菜單的“CallBack”,將彈出該按鈕的返回代碼過程,即可在其中輸入事件操作代碼[6-8]。
2.1數(shù)字圖像的導(dǎo)入
采用Windows打開對(duì)話框,靈活選擇圖像文件,導(dǎo)入數(shù)字圖像后即時(shí)顯示原始圖像。按鈕的返回代碼可設(shè)計(jì)展開如下。
2.2灰度化
2.4分割
分割是把多行或多個(gè)字符圖像中的顯式字符從整個(gè)圖像中切割出來成為單個(gè)字符。對(duì)于單個(gè)字符的圖像也可以分割數(shù)字,并將多余的空白區(qū)域切割掉,從而減少存儲(chǔ)空間,也利于后期的快速處理。數(shù)字字符分割算法包括:投影法、氣泡法、投影-氣泡法等。這里默認(rèn)使用的是單數(shù)字符號(hào)的邊緣進(jìn)行分割,如此則可減少數(shù)字符號(hào)的存儲(chǔ)量,同時(shí)剪切掉多余的空白區(qū)域。
2.5 歸一化
因?yàn)樵紙D像在位置、形狀等方面都存在很大的差異,所以需要進(jìn)行歸一化處理。處理后,使所有樣本均具有相同的大小和形狀,便于后續(xù)特征提取和識(shí)別。歸一化可以按位置或大小進(jìn)行操作。
3軟件生成
制作GUI可執(zhí)行文件,生成EXE文件,使其在Windows平臺(tái)下,沒有安裝MATLAB軟件的情況下直接運(yùn)行,即可脫離Matalab環(huán)境的執(zhí)行程序。這里需要使用MATLAB自帶的Lcc編譯器來完成。制作步驟:在命令窗口輸入>> mbuild –setup,選擇編輯器,創(chuàng)建exe文件;將創(chuàng)建的M文件和fig兩個(gè)擴(kuò)展名的同名文件以及exe文件,ctf文件一起復(fù)制到同一個(gè)文件夾中,再將這個(gè)文件夾復(fù)制到目標(biāo)機(jī)上,直接執(zhí)行即可。
另一個(gè)方法:在MATLAB窗口輸入>> comtool,點(diǎn)擊file-open project可將預(yù)先已經(jīng)創(chuàng)建的cbl工程文件打開,再點(diǎn)擊component--package component就實(shí)現(xiàn)了打包,此時(shí)在文件夾里的exe就是生成打包后的壓縮文件。復(fù)制這個(gè)文件到目標(biāo)硬盤中,雙擊解壓,在解壓的文件夾中點(diǎn)擊_install.bat就可以實(shí)現(xiàn)并完成安裝。
本文的所有程序代碼是在MATLAB 2013a 64位版本下調(diào)試通過。
4結(jié)束語
隨著信息化的迅速發(fā)展,手寫數(shù)字識(shí)別的應(yīng)用會(huì)涉及到很多領(lǐng)域。手寫數(shù)字識(shí)別應(yīng)用系統(tǒng)性能的關(guān)鍵與瓶頸在于手寫數(shù)字識(shí)別核心算法,核心算法需要準(zhǔn)確的采樣數(shù)據(jù),準(zhǔn)確的圖像預(yù)處理方案能保證采樣數(shù)據(jù)的準(zhǔn)確性,如此才能研究出零誤識(shí)率和零拒識(shí)率的高速識(shí)別算法。
參考文獻(xiàn):
[1]白天毅. 基于神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識(shí)別關(guān)鍵技術(shù)研究[D].西安:西安工業(yè)大學(xué),2014.
[2]王天永. 基于MATLAB GUI的電子散斑干涉圖像采集和處理系統(tǒng)[J]. 大眾科學(xué),2012(1):11-13.
[3]王霞英. 基于MATLAB GUI指紋圖像特征提取與對(duì)比的研究[D].太原:中北大學(xué),2013.
[4]錢超. 基于MATLAB GUI的指紋圖像采集及預(yù)處理研究[D].太原:中北大學(xué),2013.
[5]張猛,余仲秋,姚紹文. 手寫體數(shù)字識(shí)別中圖像預(yù)處理的研究[J].微計(jì)算機(jī)信息,2006(16):256-258.
[6]彭敏. 基于多級(jí)神經(jīng)網(wǎng)絡(luò)分類器的手寫數(shù)字識(shí)別[D].沈陽:沈陽工業(yè)大學(xué),2014.
[7]王一木,潘赟,龍彥辰,嚴(yán)曉浪,宦若虹. 基于自組織映射的手寫數(shù)字識(shí)別的并行實(shí)現(xiàn)[J].浙江大學(xué)學(xué)報(bào)(工學(xué)版),2014(4):742-747.
[8]王璇,薛瑞. 基于BP神經(jīng)網(wǎng)絡(luò)的手寫數(shù)字識(shí)別的算法[J].自動(dòng)化技術(shù)與應(yīng)用,2014(5):5-10.