文獻標識碼: A
文章編號: 0258-7998(2011)09-0015-03
計算機文字識別也被稱為光學文字識別[1]OCR(Optical Character Recognition),在智能計算機和辦公自動化領域有著極其重要的應用。文字識別的基本原理是通過諸如照相機、掃描儀等圖像輸入設備獲取文字圖片,經(jīng)過圖像處理后使用光學模式判別等算法分析文字圖片,最后將判斷出的文字編碼儲存起來從而完成文字識別。
文字識別設備對識別速度要求較高,因此圖像采集和預處理的速度十分關鍵。同時對識別率要求高,識別字體種類多,因此選用帶學習功能的軟件引擎非常重要。另外系統(tǒng)需要交互界面和大量外圍設備的驅動,因此需要引入操作系統(tǒng)以方便設計開發(fā)。
1 SoPC系統(tǒng)設計
系統(tǒng)功能設計的整體方案如圖1所示。各部分功能介紹如下:
(1)圖像采集功能,通過外接的攝像頭模塊完成圖像的采集;
(2)由硬件模塊完成文字圖像預處理功能,能夠對采集的文字圖像進行傾斜糾正[2]、圖像分割[3]、二值化[4]等處理,保證系統(tǒng)的性能和速度,以提高后續(xù)的文字識別率;
(3)文字圖像識別功能,能夠將文字圖像中的文字識別出來并保存在TXT中;
(4)識別結果的存儲和發(fā)送功能,能夠將識別結果文件存入SD卡或U盤中,或者通過網(wǎng)絡發(fā)送給上位機;
(5)交互界面功能:能夠通過LCD模塊或者外接的VGA設備等輸出設備以及鍵盤、觸摸屏或者鼠標等輸入設備與使用者交互。
整個系統(tǒng)由一塊FPGA和攝像采集、輸入輸出等外圍設備組成。FPGA硬件模塊完成攝像采集控制和圖像預處理,CPU作為系統(tǒng)主控控制外設和硬件模塊的數(shù)據(jù)流。文字識別模塊和外圍設備驅動在Linux平臺上進行開發(fā)或移植。
本文采用Altera Cyclone2系列的FPGA,通過Altera提供的SoPC技術,可以將Nios Ⅱ軟核處理器和外圍設備接口IP通過Avalon總線連接起來,并集成在一塊FPGA上。圖2是系統(tǒng)的SoPC設計。
2 系統(tǒng)硬件設計
文字識別硬件設計主要包括文字圖像的采集控制和文字圖像的預處理。文字圖像的預處理又分為邊緣檢測、傾斜糾正、文字區(qū)域提取、二值化。硬件模塊總體設計圖如圖3所示。
對于待識別的文字圖像,影響文字識別準確率的不僅僅是后端引擎的性能,更重要的是文字圖像的質量和實際使用的文字圖像,除了光照不均勻且有傾斜外,還會有不少干擾信息。因此,本設計選取傾斜糾正、文字圖像分割、二值化等預處理方法來減少干擾因素,保證后續(xù)文字識別的質量。本設計的處理方法概括如下:
(1)圖像邊緣就是圖像中灰度發(fā)生急劇變化的地方。本設計采用一階導數(shù)的Sobel算子的邊緣檢測算法可以滿足設計的需要。本設計中將最后得到的梯度值簡化為水平方向梯度絕對值和垂直方向梯度絕對值之和。求出梯度后采用基本全局門限:當某像素點(x,y)的梯度值大于或等于設定的門限T時,規(guī)定該點的像素值為1,反之則為0。
(2)文字圖像傾斜糾正包括傾斜角計算和圖像旋轉,即將拍攝中獲取的傾斜圖像根據(jù)傾斜角度進行旋轉,最后得到校正后的圖像。本設計采用基于Hough的變換來計算傾斜角?;驹硎峭ㄟ^找出圖像中通過最多點的直線,即為圖像的傾斜角。變換中,將二維圖像中的點通過極坐標系表示,而平面坐標系中一條直線上的所有點對應的極坐標系曲線交于極坐標系中唯一一點(ρ,θ),因此,只需要尋找極坐標系中最大值即可。
(3)文字圖像的分割可以提取文字信息區(qū)域以減少背景等干擾,同時,由于圖像區(qū)域的減少,對于光照不均勻也有一定的改善。本設計根據(jù)文字圖像的具體特點設計分割方法,首先將經(jīng)過傾斜糾正的文字圖像通過邊緣檢測算法得到邊緣檢測圖片;后通過逐行和逐列掃描確定行和列的閾值;接著對所有符合閾值的區(qū)域進行分析,相隔較近的區(qū)域進行聯(lián)通,從而確定最終的分割區(qū)域。最后根據(jù)分割區(qū)域對原圖進行圖像分割。
(4)經(jīng)過傾斜糾正和圖像分割后得到的文字圖像仍有光照不均勻和噪聲的影響,因此需要進行二值化處理。對圖像進行二值化不僅能提高文字識別的精度,對后端引擎的識別速度也有不少的幫助??紤]到實際拍攝的圖片光照不均勻的程度較高,使用全局或者混合二值化的效果都不理想,且考慮到硬件實現(xiàn)等因素,本設計采取局部閾值二值化。
3 系統(tǒng)軟件設計
本設計軟件部分基于嵌入式Linux。首先在NiosⅡ處理器中植入嵌入式Linux;然后在Linux內核中配置外圍設備驅動并加入一些自定義的設備驅動;最后基于Linux移植或者開發(fā)交互界面、文字識別引擎等。另外,還需要移植bootloader,系統(tǒng)啟動后,bootloader將Linux內核搬到SDRAM中運行,從而實現(xiàn)系統(tǒng)開機自啟動的功能。
整體流程是:首先將bootloader和Linux內核下載進入Flash,同時設定復位地址為Flash中內核bootloader的入口地址。系統(tǒng)啟動時先啟動bootloader,初始化外圍設備,并通過串口打印輸出信息,同時將Linux內核搬運到SDRAM進行解壓。Linux內核解壓完成后內核啟動。只是Linux初始化所有的外圍硬件設備,啟動nano-X圖形接口和nano-wm窗口管理器和基于FLTK的交互界面。交互界面上是各種的按鈕選擇,包括圖片瀏覽、圖像采集、文本瀏覽編輯、網(wǎng)絡連接及文字識別等應用程序的按鈕。當按鍵選擇各種功能后會進入相應的功能模塊。當程序運行完成后通過選擇返回按鈕再次進入到交互界面的按鍵選擇部分。
4 系統(tǒng)功能驗證
將硬件信息配置進入FPGA,同時通過Flashprogrammer將bootloader和Linux下載到Flash。Linux內核啟動完成后,調用交互界面程序,系統(tǒng)可以通過鼠標鍵盤進行輸入操作,通過VGA輸出交互界面。此外,可通過串口對系統(tǒng)進行調試并看到打印出來的系統(tǒng)信息。
本設計通過NiosⅡ控制圖像采集模塊,通過DE2-70開發(fā)板上的開關可以調節(jié)曝光,采集回的圖像通過NiosⅡ寫入SD卡,用來驗證圖像采集模塊的功能。開發(fā)板和攝像頭通過支架固定在文字識別區(qū)域上方。實際采集的效果滿足應用需求。
由于受DE2-70開發(fā)板上SDRAM大小的限制,本設計Tesseract引擎的數(shù)據(jù)文件不能太大。因此先使用默認引擎進行英文的識別,然后用拍攝的幾幅文字圖像對引擎進行訓練;再使用經(jīng)過訓練的引擎對圖像進行識別。最終的圖像識別結果存入SD卡中。文字識別的效果圖如圖4所示。
圖4(a)是默認引擎的識別效果圖,圖4(b)是經(jīng)過訓練的引擎識別效果圖。通過對比可以看出,未經(jīng)訓練的識別效果錯誤率高達18.59%,而經(jīng)過訓練的引擎識別效果明顯好于默認引擎識別的結果,錯誤率僅為7.7%。但是在一些圖像偽影和不連續(xù)處,兩個引擎都出現(xiàn)了不同程度的錯誤。其原因在于目前的文字識別理論還尚未成熟,難以達到百分之百的文字識別精確度。
本文通過硬件電路完成文字圖像采集和文字圖像預處理,嵌入式軟件完成文字識別,實現(xiàn)了一種基于SoPC的嵌入式文字識別系統(tǒng)。此設計中構建了完整的SoPC系統(tǒng),嵌入了Linux操作系統(tǒng),通過軟硬件協(xié)同充分發(fā)揮各自的優(yōu)點,達到了較好的文字識別效果。
參考文獻
[1] 盛蹇,劉偉.計算機文字識別的發(fā)展及應用[J].科技信息, 2008(13).
[2] 王希常,劉江.一種掃描文檔圖像的快速糾偏算法設計 [A].2010 Third International Conference on Education Technology and Training,2010.
[3] 瞿燕慧.圖像分割常用算法優(yōu)缺點探析[J].科教新報(教育科研),2010(3).
[4] GUPATA M R,JACOBSON M R,GARCIA E K.舊式文本的OCR二值化和圖像預處理研究[J].章晟(譯).圖像識別與自動化,2007(1).