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