基于MATLAB/GUI的文字圖片識別系統設計
字符識別在圖像處理中是一種比較常見(jiàn)的技術(shù)。隨著(zhù)技術(shù)的發(fā)展,常見(jiàn)的一些文字通常用圖片的格式來(lái)進(jìn)行存儲。當需要使用到這些文字的時(shí)候,圖片上的文字不是很方便人們的使用,這個(gè)時(shí)候就要借助文字識別的手段,把需要的文字從圖片中提取出來(lái)。
本文引用地址:http://dyxdggzs.com/article/202304/445939.htm本設計運用MATLAB/GUI 設計實(shí)現文字圖片識別系統,該系統包括GUI 界面設計,圖像預處理,文字的分割和識別。建立圖片文字模板,該文字識別系統可以實(shí)現圖片的讀取和保存、圖片的各種預處理操作,然后對文字進(jìn)行分割,最后對文字進(jìn)行識別,并在記事本中顯示識別結果。
1 文字圖片識別系統方案
文字圖片識別系統主要包括GUI 界面設計,圖像預處理,文字的分割與識別3 部分。
文字圖片識別系統的實(shí)現方案為:
1)首先根據系統的功能,確定GUI 界面需要的控件或菜單的種類(lèi)和數量,后面通過(guò)編寫(xiě)每個(gè)控件或菜單的回調函數,實(shí)現控件或菜單相應的功能;
2)準備幾種不同類(lèi)型文字的圖片,以備進(jìn)行識別測試,首先進(jìn)行圖片預處理,包括對圖像大小的裁剪旋轉、圖像增強、圖像灰度化、圖像二值化等操作,為了后面的文字分割和識別做準備,方便提取文字圖像的特征點(diǎn);
3)研究字符分割算法,實(shí)現對文字圖片的分割和識別;
4)進(jìn)行系統各個(gè)模塊的運行調試,修改相關(guān)程序,完善設計系統。
2 文字圖片預處理
預處理比較重要的操作包括以下幾步:
首先對文字圖像進(jìn)行灰度化處理,將彩色圖像轉換成灰度圖像。其次去除圖像中的噪聲,對圖像進(jìn)行降噪,提高識別的準確度,噪聲會(huì )導致圖像的質(zhì)量下降,影響圖像上的關(guān)鍵信息。接著(zhù)對文字圖像二值化,將文字圖像轉換成只有黑色和白色兩種顏色的圖像。
2.1 圖像的輸入與裁剪
在MATLAB中,使用函數imread() 函數來(lái)讀取圖像,利用函數imshow() 顯示圖像。
當系統讀入一張圖片,通常字符的周邊存在許多與文字沒(méi)有關(guān)系的其他信息,會(huì )對后續的處理帶來(lái)干擾,并且增大了程序的運算量,延緩了程序的運行速度。所以有時(shí)需要對圖像適當進(jìn)行裁剪,去掉那些無(wú)用的干擾信息。
利用函數imcrop() 可以對圖像進(jìn)行剪切。還可以借助MATLAB 的算法,獲取鼠標的一些操作來(lái)實(shí)現截圖的功能。
2.2 圖像灰度化處理
對文字圖像進(jìn)行灰度化處理,主要是為了提取圖像中的關(guān)鍵信息,過(guò)濾掉原來(lái)圖像中的色彩信息。彩色的圖像經(jīng)過(guò)灰度化處理后,就只剩下一個(gè)灰度值。把原本的三通道R、G、B色彩圖像轉變成為單通道的灰度圖像。
灰度化處理算法有分量法、最大值法平均值法和加權平均法。在MATLAB 中使用rgb2gray() 函數,對彩色圖像進(jìn)行灰度化處理。
2.3 圖像增強
圖像增強是用來(lái)降低圖像中的噪聲,使圖像顯示的更加清晰,為后續的處理做準備。
依據圖像所在空間的不同,圖像增強的方式也就不同。一種是基于空間域的圖像增強,它分為灰度變換增強、直方圖增強和空間濾波等。另一種是頻域的圖像增強,常用的有低通濾波、高通濾波和中值濾波等。
經(jīng)過(guò)對幾種算法進(jìn)行測試對比,最后選擇使用中值濾波對圖像進(jìn)行降噪處理,然后再對濾波后的圖像進(jìn)行直方圖增強處理。經(jīng)過(guò)這樣的處理后,得到的圖像字符是比較清晰的。
在MATLAB 圖像工具箱中,采用imhist() 函數計算和顯示圖像的直方圖,用imadjust() 函數進(jìn)行對比度調整。
2.4 圖像二值化
圖像二值化的實(shí)現是選取一個(gè)合適的閾值thresh,把它作為分界點(diǎn)。當像素點(diǎn)的像素值大于thresh 時(shí),將其設置為白色,當像素點(diǎn)的像素值小于閾值thresh 時(shí),將其定為黑色。在MATLAB 工具箱中,函數graythresh()的功能就是獲取一定的閾值,然后依據獲得的閾值把圖像進(jìn)行二值化。函數graythresh() 獲取匹配的閾值的原理是最大類(lèi)方差法。
將獲取到的閾值用到函數im2bw(t,thresh) 中,就可以把圖像二值化,得到一個(gè)黑白色的圖像。
3 文字分割和識別
把二值化后的文字圖像進(jìn)行字符分割,分割好后的字符會(huì )被寫(xiě)入資料庫,生成待識別的字符模塊。字符識別時(shí),讀取處理后的待識別字符和標準的文字字符模板,把這兩部分進(jìn)行匹配識別,輸出文字的識別結果。
3.1 字符分割
字符分割采用基于連通域分析的方法,對二值圖像上的文字進(jìn)行分割。連通區域的標記算法種類(lèi)是比較多的。在標記過(guò)程中,某些算法只經(jīng)過(guò)一次的遍歷就可以標記成功,也有的算法需要不止一次的圖像掃描才可以完成標記。
本設計采用基于行程掃描的算法進(jìn)行連通域的標記,處理對象是經(jīng)過(guò)處理后的二值圖像,作用是將圖像中感興趣的前景目標和背景分離。圖像遍歷完畢之后,得到很多個(gè)團的起始坐標、結束坐標以及它們所在的行和標號。同時(shí),還得到一個(gè)等價(jià)對列表。
二值圖像中的文字部分是白色的,在矩陣里面用1表示,背景是黑色的,在矩陣里用0 表示。在遍歷圖像的進(jìn)程中,標號從一開(kāi)始計數,找到等價(jià)的序列并且賦值一個(gè)標號給它們。找到等價(jià)對后,記錄它們的標號,最后把每個(gè)團的標號填入圖像當中。
每一個(gè)字符信息都有自己的連通區域,字符是白色的,在矩陣中用1 表示。所以只需要找到像素值是1 的連通區域,然后標注并提取出來(lái)。這樣就可以實(shí)現字符的分割處理。
3.2 文字識別
模板的匹配識別是利用小尺寸的字符圖像和模板中的圖像進(jìn)行比較,確定原圖像中是否存在和這個(gè)模板相同或者相似的區域。文字識別的效果與選取的模板是息息相關(guān)的。
數據庫里面的模板都是經(jīng)過(guò)一系列處理的,字符庫由26 個(gè)大小寫(xiě)英文字母和0~9 十個(gè)數字組成。數據庫中的模板圖片的格式是高度42,寬度24。
在匹配識別的時(shí)候,首先將待識別圖片進(jìn)行尺寸變換,轉換成和模板圖片一樣的大小,利用imresize() 函數實(shí)現;然后利用函數corr2() 來(lái)計算兩張圖片的相似度。當得到的結果在1 的附近,表示兩者的匹配度是很高的,也就是相似的;當獲取的結果接近0,表示二者的匹配度是很低的。
經(jīng)過(guò)對比,獲得1 個(gè)與分割字符相似度最高的字庫圖片,建立1 個(gè)文檔,把找到的模板圖片中的文字信息輸出在文檔中,即可實(shí)現文字的識別。
4 文字圖片識別系統的調試與分析
GUI 界面設計完成后,編寫(xiě)對應菜單控件的回調函數。然后運行這個(gè)系統,對要識別的圖片進(jìn)行文字識別測試。通過(guò)菜單可以實(shí)現圖片的讀取和保存,顯示圖片處理的各個(gè)中間過(guò)程,GUI 可視化界面及部分測試結果如圖1 和圖2。
圖1 文字識別測試一
圖2 文字識別測試二
從識別的結果來(lái)看,有時(shí)會(huì )發(fā)生識別錯誤,不過(guò)錯誤率是比較低的。
手寫(xiě)的字符只要寫(xiě)的很規范,系統能夠準確地識別圖像中的文字。如果數據庫中每個(gè)字符有許多的模板字體,可以大大地提高文字的識別成功率。另外就是字母大小寫(xiě)可能發(fā)生識別錯誤,發(fā)生大小寫(xiě)混淆。
總體來(lái)說(shuō),文字圖片識別系統能夠識別大部分文字,個(gè)別的一些識別缺陷,將在以后的研究中繼續改進(jìn)。
參考文獻:
[1] 張紅霞,王燦,劉鑫,等.復雜背景圖像的字符識別算法研究[J].計算機測量與控制,2019,27(8):29-37.
[2] 劉思慧,江維.基于MATLAB手寫(xiě)體數字識別程序設計[J].電子世界,2019(3):18-21.
[3] 李夢(mèng)瑤.基于matlab的圖像增強處理技術(shù)[J].信息記錄材料,2020,21(3):19-26.
[4] 甘曉英,白陽(yáng),何曉棟,等.一種并行二值圖像連通域標記算法[J].計算機與數字工程,2021,49(5):43-49.
(本文來(lái)源于《電子產(chǎn)品世界》雜志2023年4月期)
評論