鄭新哲
(北京理工大學,北京 100081)
近年來,各種智能識別技術(shù)得到迅速發(fā)展,包括指紋識別、手寫輸入、車輛牌照識別、人臉識別等技術(shù)已經(jīng)得到廣泛應用。本文利用MATLAB提供的幾個圖像處理函數(shù),研究了印刷體英文字母的識別方法和過程,對智能識別技術(shù)進行了初步嘗試,對于在研究過程中遇到的標點符號及阿拉伯數(shù)字識別的誤判問題,進行了原因分析與程序處理,最終得到滿意的結(jié)果。本文對初次接觸數(shù)字圖像處理技術(shù)的人員具有引導和示范作用,可以作為學習數(shù)字圖像處理課程的入門訓練。
MATLAB是 Matrix Laboratory(矩陣實驗室)的縮寫,是Math Works公司開發(fā)的一種功能強、效率高、簡單易學的數(shù)學軟件。MATLAB的圖像處理工具箱功能也十分強大,支持的圖像文件格式豐富,如 *.BMP、*.JPG、*.JPEG、*.GIF、*.TIF、*.TIFF、*.PNG、*.PCX、*.XWD、*.HDF、*.ICO、*.CUR 等。MATLAB提供了20多類的圖像處理函數(shù),幾乎涵蓋了圖像處理的所有技術(shù)方法,這些函數(shù)按其功能可分為:圖像顯示、圖像文件I/O、圖像算術(shù)運算、幾何變換、圖像登記、像素值與統(tǒng)計圖像分析、圖像增強、線性濾波、線性二元濾波設計、圖像去模糊、圖像變換、鄰域與塊處理、灰度與二值圖像的形態(tài)學運算、基于邊緣的處理、色彩映射表操作、色彩空間變換、圖像類型與類型轉(zhuǎn)換等。
基于MATLAB的圖字符識別過程大體分成五個步驟:①建立字符樣本庫;②獲取含字符的圖像并對字符區(qū)域塊進行定位和讀取;③對各個字符進行切割提取;④所提取的圖像字符與樣本庫中的樣本進行比對,確定識別的字符;⑤輸出識別的字符串。
上述識別過程所涉及的核心算法包括:①彩色圖像灰度化rgb2gray()、二值化im2bw();②根據(jù)需要對圖像進行大小調(diào)整imresize();③根據(jù)垂直直方圖分割字符,并根據(jù)零的寬度識別單詞間隔;④建立字符模板數(shù)據(jù)庫;⑤用適當算法進行識別和字符輸出[1]。
①選擇測試的特定字體,本文采用宋體對應的英文字母;②準備包含該字體的英文語句的圖像文件,這里用“.jpg”格式的文件進行測試;③準備該字體大小寫英文字母及標點符號模板,每個字符用一個文件,采用二值化的“.bmp”格式。
①讀入待識別圖像文件。②先對圖像進行灰度化處理,再對其進行二值化處理,必要時黑白反轉(zhuǎn)。③根據(jù)像素值確定文字區(qū)域的位置,并截取該區(qū)域保存,待進行后續(xù)處理。④判斷該區(qū)域的高度,若小于某值,則對此圖像區(qū)域進行放大,以提高識別率。⑤根據(jù)圖像中列像素的不連續(xù)性及其大小,分割字符并判斷單詞分割。⑥對分割出來的每個字符圖像單獨保存到變量中,并對其修整,去掉外圍無效區(qū)域。⑦對已分割的字符圖塊,按高度分成高、低字符兩類。⑧最關(guān)鍵的一步是字符識別,識別過程即為圖像最佳匹配過程。有很多算法可以實現(xiàn)圖像匹配評估,常用的有:直方圖法、圖像模板匹配法、SSIM(結(jié)構(gòu)相似性度量)法、余弦相似度法、互信息度量法等。本文解決的內(nèi)容相對簡單,對于二值圖像來講可選用簡單的算法即可。本文采用圖像模板匹配法,將待識別字符圖塊和模板字符圖塊放大/縮小成同樣大小的圖像,用異或運算后的殘余像素總數(shù)的多少判定匹配程度。⑨根據(jù)英文字母的特點,大寫字符都屬于高字符,而小寫字符中的b,d,f,g,h,i,j,k,l,p,q,t,y為高字符,其余為低字符。待識別字符圖塊屬于高字符類時,只與模板中的高字符相匹配;待識別字符圖塊屬于低字符類時,只與模板中的低字符相匹配。⑩根據(jù)第5步中單詞分割位置,將完整的英文語句輸出到屏幕上。不能識別的字符用“?”替代。
處理程序流程圖見附件1。

附件1:程序流程圖
測試1:彩色背景的簡單語句,識別正確(下面為圖像,上面為識別后的文本)
I am a student of BIT
I am a student of BIT
測試2:稍長些的語句,識別正確
The last layer is the network output
The last layer is the network output
測試3:軟件改進前,字符較小時多個字符識別失敗
Ada?tion is don?with TRAINS which u?dat?s
Adaption is done with TRAINS which up dates
測試4:改進后,字符較小時在識別之前將圖片整體放大后再識別,識別正確
Adaption is done with TRAINS which updates
Adaption is done with TRAINS which updates
測試5:包含標點符號的文字測試,識別正確
Each layer's weights are initialized.
Each layer’s weights are initialized.
測試6:包含標點符號和數(shù)字的文字測試,識別正確
Foreigners' trips to,out of China up 11 pct in 2018.
Foreigners’trips to,out of China up 11 pct in 2018.
本程序在軟件調(diào)試過程中遇到了幾個問題,通過軟件的算法處理大部分問題都得到了圓滿解決。具體情況如下:
①字符圖像較小時識別的錯誤率較高,通過先判斷字符的高度,在小于某一特定值時,對圖像整體進行放大,然后再進行識別處理,該問題得到解決。
②大寫“O”與小寫“o”通過字符高度得到分離。
③大寫“O”與阿拉伯數(shù)字“0”通過字符的高寬比得到分離。
④冒號“:”與等號“=”通過字符寬度得到分離。
⑤單引號“‘”與逗號“,”通過字符起始高度得到分離。
采用MATLAB提供的圖像處理函數(shù),可以實現(xiàn)英文語句圖像的字符識別,對標點符號及阿拉伯數(shù)字也可以得到滿意結(jié)果。與此同時,本文中提供的方法也存在以下問題:
①只能處理相同字體、大小一致的英文文本,且只能處理一行;
②由于采用了灰度化、二值化方法,文字與背景反差小的圖像無法正確識別。
本文僅用了簡單的圖像匹配算法,可以采用更好的特征提取法、相關(guān)系數(shù)法、神經(jīng)網(wǎng)絡算法等技術(shù),以適應不同字體,提高識別的適應性和準確性。此外,通過在軟件中建立學習功能,并對分辨不清的情況提供不同選項,可以使系統(tǒng)能識別不同字體,并提高識別的正確性和實用性。