<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于SoPC的嵌入式文字識別系統設計

基于SoPC的嵌入式文字識別系統設計

作者: 時(shí)間:2011-11-07 來(lái)源:網(wǎng)絡(luò ) 收藏

摘 要: 設計了一種基于SoPC的嵌入式系統。在FPGA平臺下,基于SoPC框架搭建軟硬件協(xié)同系統,設計硬件電路完成文字圖像的采集和預處理,嵌入Linux系統,使用其下的識別引擎完成文字圖像的識別。采用Altera公司的SoPC builder構建系統框架,Quartus II完成硬件電路的設計,在宿主機Linux環(huán)境下完成了軟件部分的交叉編譯并嵌入到FPGA平臺。整體設計在DE2-70開(kāi)發(fā)板上完成了系統驗證。
關(guān)鍵詞: ;;;Linux

 計算機也被稱(chēng)為光學(xué)文字識別[1]OCR(Optical Character Recognition),在智能計算機和辦公自動(dòng)化領(lǐng)域有著(zhù)極其重要的應用。文字識別的基本原理是通過(guò)諸如照相機、掃描儀等圖像輸入設備獲取文字圖片,經(jīng)過(guò)圖像處理后使用光學(xué)模式判別等算法分析文字圖片,最后將判斷出的文字編碼儲存起來(lái)從而完成文字識別。
文字識別設備對識別速度要求較高,因此圖像采集和預處理的速度十分關(guān)鍵。同時(shí)對識別率要求高,識別字體種類(lèi)多,因此選用帶學(xué)習功能的軟件引擎非常重要。另外系統需要交互界面和大量外圍設備的驅動(dòng),因此需要引入操作系統以方便設計開(kāi)發(fā)。
1 SoPC系統設計
系統功能設計的整體方案如圖1所示。各部分功能介紹如下:

基于SoPC的嵌入式文字識別系統設計

(1)圖像采集功能,通過(guò)外接的攝像頭模塊完成圖像的采集;
(2)由硬件模塊完成文字圖像預處理功能,能夠對采集的文字圖像進(jìn)行傾斜糾正[2]、圖像分割[3]、二值化[4]等處理,保證系統的性能和速度,以提高后續的文字識別率;
(3)文字圖像識別功能,能夠將文字圖像中的文字識別出來(lái)并保存在TXT中;
(4)識別結果的存儲和發(fā)送功能,能夠將識別結果文件存入SD卡或U盤(pán)中,或者通過(guò)網(wǎng)絡(luò )發(fā)送給上位機;
(5)交互界面功能:能夠通過(guò)LCD模塊或者外接的VGA設備等輸出設備以及鍵盤(pán)、觸摸屏或者鼠標等輸入設備與使用者交互。
整個(gè)系統由一塊FPGA和攝像采集、輸入輸出等外圍設備組成。FPGA硬件模塊完成攝像采集控制和圖像預處理,CPU作為系統主控控制外設和硬件模塊的數據流。文字識別模塊和外圍設備驅動(dòng)在Linux平臺上進(jìn)行開(kāi)發(fā)或移植。
本文采用Altera Cyclone2系列的FPGA,通過(guò)Altera提供的SoPC技術(shù),可以將Nios Ⅱ軟核處理器和外圍設備接口IP通過(guò)Avalon總線(xiàn)連接起來(lái),并集成在一塊FPGA上。圖2是系統的SoPC設計。

基于SoPC的嵌入式文字識別系統設計

2 系統硬件設計
文字識別硬件設計主要包括文字圖像的采集控制和文字圖像的預處理。文字圖像的預處理又分為邊緣檢測、傾斜糾正、文字區域提取、二值化。硬件模塊總體設計圖如圖3所示。

基于SoPC的嵌入式文字識別系統設計

對于待識別的文字圖像,影響文字識別準確率的不僅僅是后端引擎的性能,更重要的是文字圖像的質(zhì)量和實(shí)際使用的文字圖像,除了光照不均勻且有傾斜外,還會(huì )有不少干擾信息。因此,本設計選取傾斜糾正、文字圖像分割、二值化等預處理方法來(lái)減少干擾因素,保證后續文字識別的質(zhì)量。本設計的處理方法概括如下:
(1)圖像邊緣就是圖像中灰度發(fā)生急劇變化的地方。本設計采用一階導數的Sobel算子的邊緣檢測算法可以滿(mǎn)足設計的需要。本設計中將最后得到的梯度值簡(jiǎn)化為水平方向梯度絕對值和垂直方向梯度絕對值之和。求出梯度后采用基本全局門(mén)限:當某像素點(diǎn)(x,y)的梯度值大于或等于設定的門(mén)限T時(shí),規定該點(diǎn)的像素值為1,反之則為0。
(2)文字圖像傾斜糾正包括傾斜角計算和圖像旋轉,即將拍攝中獲取的傾斜圖像根據傾斜角度進(jìn)行旋轉,最后得到校正后的圖像。本設計采用基于Hough的變換來(lái)計算傾斜角?;驹硎峭ㄟ^(guò)找出圖像中通過(guò)最多點(diǎn)的直線(xiàn),即為圖像的傾斜角。變換中,將二維圖像中的點(diǎn)通過(guò)極坐標系表示,而平面坐標系中一條直線(xiàn)上的所有點(diǎn)對應的極坐標系曲線(xiàn)交于極坐標系中唯一一點(diǎn)(ρ,θ),因此,只需要尋找極坐標系中最大值即可。
(3)文字圖像的分割可以提取文字信息區域以減少背景等干擾,同時(shí),由于圖像區域的減少,對于光照不均勻也有一定的改善。本設計根據文字圖像的具體特點(diǎn)設計分割方法,首先將經(jīng)過(guò)傾斜糾正的文字圖像通過(guò)邊緣檢測算法得到邊緣檢測圖片;后通過(guò)逐行和逐列掃描確定行和列的閾值;接著(zhù)對所有符合閾值的區域進(jìn)行分析,相隔較近的區域進(jìn)行聯(lián)通,從而確定最終的分割區域。最后根據分割區域對原圖進(jìn)行圖像分割。
(4)經(jīng)過(guò)傾斜糾正和圖像分割后得到的文字圖像仍有光照不均勻和噪聲的影響,因此需要進(jìn)行二值化處理。對圖像進(jìn)行二值化不僅能提高文字識別的精度,對后端引擎的識別速度也有不少的幫助??紤]到實(shí)際拍攝的圖片光照不均勻的程度較高,使用全局或者混合二值化的效果都不理想,且考慮到硬件實(shí)現等因素,本設計采取局部閾值二值化。
3 系統軟件設計
本設計軟件部分基于嵌入式Linux。首先在NiosⅡ處理器中植入嵌入式Linux;然后在Linux內核中配置外圍設備驅動(dòng)并加入一些自定義的設備驅動(dòng);最后基于Linux移植或者開(kāi)發(fā)交互界面、文字識別引擎等。另外,還需要移植bootloader,系統啟動(dòng)后,bootloader將Linux內核搬到SDRAM中運行,從而實(shí)現系統開(kāi)機自啟動(dòng)的功能。
整體流程是:首先將bootloader和Linux內核下載進(jìn)入Flash,同時(shí)設定復位地址為Flash中內核bootloader的入口地址。系統啟動(dòng)時(shí)先啟動(dòng)bootloader,初始化外圍設備,并通過(guò)串口打印輸出信息,同時(shí)將Linux內核搬運到SDRAM進(jìn)行解壓。Linux內核解壓完成后內核啟動(dòng)。只是Linux初始化所有的外圍硬件設備,啟動(dòng)nano-X圖形接口和nano-wm窗口管理器和基于FLTK的交互界面。交互界面上是各種的按鈕選擇,包括圖片瀏覽、圖像采集、文本瀏覽編輯、網(wǎng)絡(luò )連接及文字識別等應用程序的按鈕。當按鍵選擇各種功能后會(huì )進(jìn)入相應的功能模塊。當程序運行完成后通過(guò)選擇返回按鈕再次進(jìn)入到交互界面的按鍵選擇部分。
4 系統功能驗證
將硬件信息配置進(jìn)入FPGA,同時(shí)通過(guò)Flashprogrammer將bootloader和Linux下載到Flash。Linux內核啟動(dòng)完成后,調用交互界面程序,系統可以通過(guò)鼠標鍵盤(pán)進(jìn)行輸入操作,通過(guò)VGA輸出交互界面。此外,可通過(guò)串口對系統進(jìn)行調試并看到打印出來(lái)的系統信息。
本設計通過(guò)NiosⅡ控制圖像采集模塊,通過(guò)DE2-70開(kāi)發(fā)板上的開(kāi)關(guān)可以調節曝光,采集回的圖像通過(guò)NiosⅡ寫(xiě)入SD卡,用來(lái)驗證圖像采集模塊的功能。開(kāi)發(fā)板和攝像頭通過(guò)支架固定在文字識別區域上方。實(shí)際采集的效果滿(mǎn)足應用需求。
由于受DE2-70開(kāi)發(fā)板上SDRAM大小的限制,本設計Tesseract引擎的數據文件不能太大。因此先使用默認引擎進(jìn)行英文的識別,然后用拍攝的幾幅文字圖像對引擎進(jìn)行訓練;再使用經(jīng)過(guò)訓練的引擎對圖像進(jìn)行識別。最終的圖像識別結果存入SD卡中。文字識別的效果圖如圖4所示。

基于SoPC的嵌入式文字識別系統設計

圖4(a)是默認引擎的識別效果圖,圖4(b)是經(jīng)過(guò)訓練的引擎識別效果圖。通過(guò)對比可以看出,未經(jīng)訓練的識別效果錯誤率高達18.59%,而經(jīng)過(guò)訓練的引擎識別效果明顯好于默認引擎識別的結果,錯誤率僅為7.7%。但是在一些圖像偽影和不連續處,兩個(gè)引擎都出現了不同程度的錯誤。其原因在于目前的文字識別理論還尚未成熟,難以達到百分之百的文字識別精確度。
本文通過(guò)硬件電路完成文字圖像采集和文字圖像預處理,嵌入式軟件完成文字識別,實(shí)現了一種基于SoPC的嵌入式文字識別系統。此設計中構建了完整的SoPC系統,嵌入了Linux操作系統,通過(guò)軟硬件協(xié)同充分發(fā)揮各自的優(yōu)點(diǎn),達到了較好的文字識別效果。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>