山丹 張曉旭 叢國濤
摘要:為滿足符號識別系統(tǒng)對實時性、低功耗和小型化的要求,該文設(shè)計了一種以FPGA為系統(tǒng)核心,輔以O(shè)V7670視頻采集模塊和VGA接口顯示器,實現(xiàn)對基本圖形、數(shù)字和英文字母進行識別及結(jié)果顯示。其中,對圖像的處理及符號識別部分由FPGA完成,包括IIC攝像頭配置、緩存、灰度處理、中值濾波、根據(jù)特征識別基本圖形和數(shù)字、根據(jù)字模匹配程度識別英文字母、VGA顯示等,充分利用FPGA的高速并行處理的特點,結(jié)合片內(nèi)RAM高速處理和片外SDRAM大容量特性,實現(xiàn)對視頻數(shù)據(jù)的處理和存儲。同時,系統(tǒng)具有抗干擾性較強、小巧、通用性強等特點,可擴展為人工智能、車牌識別等系統(tǒng)使用。
關(guān)鍵詞:FPGA;符號識別;圖像處理;中值濾波
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)30-0252-03
Abstract: In order to satisfy the real-time, low-power and miniaturization requirements of symbol recognition system, a system is designed based on FPGA, supplemented by OV7670 video acquisition module and VGA interface displayer to realize the recognition of basic graphics, numbers and English letters. The image processing and symbol recognition part is completed by FPGA, including IIC camera configuration, buffer, gray processing, median filtering, recognition of basic graphics and numbers according to features, recognition of English letters according to the degree of font matching, VGA display and so on. The features of high-speed and parallel processing ability of FPGA are fully utilized in combination with high-speed RAM on chip and large capacity of off-chip SDRAM to achieve the processing and storage of video data. At the same time, the system has strong anti-interference, compact, versatility and other characteristics, which can be extended to artificial intelligence, number plate recognition systems.
Key words: FPGA; Symbol Recognition; Image Processing; Median Filtering
對圖形、數(shù)字和英文字母等符號的識別,作為圖像處理和機器視覺領(lǐng)域的重要分支,近年來成為廣大學(xué)者研究的熱點和難點。目前,此類系統(tǒng)在信息處理、人工智能、密碼識別、車牌識別和交通管理等領(lǐng)域有著廣泛的應(yīng)用前景。而現(xiàn)有系統(tǒng),絕大多數(shù)都是基于PC機[1] [2]設(shè)計的,其從實時性、功耗、成本和小型化等方面都難以滿足不同應(yīng)用的需求。鑒于此,基于嵌入式平臺的符號識別系統(tǒng)成為研究熱點,而FPGA擁有大量邏輯單元和布線資源,具有并行處理、速度快、功耗低、成本低的特點,其設(shè)計靈活,易于維護和升級,較傳統(tǒng)PC機及其他以單片機為核心的嵌入式系統(tǒng),有明顯優(yōu)勢。因此,本文提出了一種基于FPGA硬件平臺的符號識別方案。
對符號的識別方法目前有很多種,如提取特征的識別方法[3]、模板匹配方法[4]和人工神經(jīng)網(wǎng)絡(luò)法[5]等。其中,人工神經(jīng)網(wǎng)絡(luò)的方法雖較為流行,但其輸入向量數(shù)據(jù)量大,訓(xùn)練時間長,網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜,實現(xiàn)難度大;基于特征的識別方法適用于一些簡單符號,特征明顯,易提取,如三角形等基本圖形和數(shù)字的識別;模板匹配方法無須樣本訓(xùn)練,也避免了提取復(fù)雜符號特征的困難,而是利用符號圖像的整體特征,大大提高識別速度和準(zhǔn)確率,適用于如英文字母的識別。
1系統(tǒng)總體設(shè)計方案及原理
本系統(tǒng)是由FPGA核心板、OV7670視頻采集模塊、VGA顯示模塊組成,如圖1系統(tǒng)結(jié)構(gòu)框圖所示。
系統(tǒng)工作原理。 ① FPGA核心板采用Altera的CycloneIV系列 4CE6F17 FPGA作為控制和數(shù)據(jù)處理中心,接收由視頻采集模塊送來的圖像幀信息,進而經(jīng)過一系列處理并識別符號后,產(chǎn)生VGA接口控制時序,最終將識別結(jié)果顯示出來。② 視頻采集模塊采用CMOS攝像頭模塊OV7670,通過IIC接口對其進行配置后,開始采集圖像數(shù)據(jù),并通過8位并行接口,每幀圖像傳輸30萬像素數(shù)據(jù),給FPGA單元,供后續(xù)處理。③VGA顯示模塊用于接收來自FPGA的顯示數(shù)據(jù),經(jīng)過D/A轉(zhuǎn)換后,顯示在顯示器上。
2FPGA實現(xiàn)
2.1 FPGA內(nèi)部電路結(jié)構(gòu)
FPGA內(nèi)部電路作為整個電路的核心,如圖2所示,主要由IIC配置模塊、并行視頻數(shù)據(jù)緩存模塊、預(yù)處理模塊、基本圖形識別模塊、數(shù)字識別模塊、英文字母識別模塊、VGA接口模塊和狀態(tài)機模塊組成。這里,為提高圖像識別精度,節(jié)省FPGA內(nèi)部資源,采用紅色矩形方框作為識別框,將待識別符號置于識別框內(nèi),之后完成識別操作;有限狀態(tài)機模塊協(xié)調(diào)電路動作的整體步調(diào),對電路動作的先后順序進行控制。
2.2 圖像采集及預(yù)處理模塊
對于圖像采集部分,首先,在FPGA內(nèi)部實現(xiàn)IIC接口時序,并對OV7670圖像數(shù)據(jù)采集模塊寄存器進行設(shè)置,使其每幀圖像以640*480的RGB565格式輸出,由于并行接口位寬為8位,而每個像素點顏色為16位,分2次傳輸。其中,F(xiàn)PGA外部晶振輸入為50MHz,而IIC接口的通信頻率為10KHz,并行數(shù)據(jù)傳輸頻率為25MHz,所以模塊內(nèi)部需對50MHz進行分頻,產(chǎn)生相應(yīng)時鐘,供數(shù)據(jù)傳輸用。之后,對采集進來的圖像信息進行緩存??紤]到FPGA內(nèi)部存儲器資源有限,而視頻數(shù)據(jù)量較大,這里使用片外SDRAM進行緩存,以突發(fā)方式傳輸。由于其讀寫速度較快,在100MHz左右,與輸入圖像信息頻率不一致,所以引入雙端口FIFO解決異步時鐘域的數(shù)據(jù)傳輸。
對于圖像預(yù)處理部分,為節(jié)省邏輯資源和減小計算量,首先完成對彩色圖像的灰度處理,每個像素點數(shù)據(jù)由原來的16比特減少為8比特,節(jié)省一半的存儲空間。灰度處理公式如(1)所示。由于式中涉及浮點數(shù)的處理,在FPGA中將浮點數(shù)轉(zhuǎn)為定點數(shù)后,方便電路實現(xiàn)。所以,將各系數(shù)同時擴大256倍,則公式(1)變成公式(2)的形式。
之后,對灰度圖像進行中值濾波,用統(tǒng)計排序結(jié)果的中值來代替中心像素的值,濾除脈沖噪聲。采用5ⅹ5濾波窗口,以滑窗形式,不斷在圖像上從左向右,從上向下流水線式滑動。對濾波窗口中25個值的中值獲取,采用基于比特平面的中值濾波算法[6]來實現(xiàn)。
最后,對中值濾波后的圖像進行二值化處理,每個像素點用1和0區(qū)分,供后續(xù)符號識別時用,使后續(xù)計算變得簡單、穩(wěn)定、易于電路實現(xiàn)。
2.3 基本圖形識別模塊
特征提取的目的是獲取一組少而精的分類特征,即獲取特征數(shù)目少且分類錯誤概率小的特征向量。由于三角形、矩形、圓形等基本圖形基本特征比較明顯,這里采用特征法來區(qū)分三角形、矩形和圓型。這里,如圖3所示,用兩條線對圖形進行切割,對每個圖形的切割交點記錄橫坐標(biāo),由于圖形線條存在寬度差別,取最左側(cè)交點作為X交點坐標(biāo),比較各個橫坐標(biāo)點X的大小從而判斷圖形所屬類別。
如圖3(a)所示,當(dāng)用識別框中心點以下兩條線切割三角形時,X1-X2>閾值,可作為三角形的特征。如圖3(b)所示,當(dāng)用識別框中心點以下兩條線切割矩形時,|X1-X2|<閾值,可作為矩形的特征。如圖3(c)所示,當(dāng)用識別框中心點以下兩條線切割圓型時,X2-X1>閾值,可作為圓形的特征。這里,識別框行坐標(biāo)范圍設(shè)為:100 2.4 數(shù)字識別模塊 數(shù)字0~9的識別,同樣采用特征點統(tǒng)計方式實現(xiàn)[3]。如圖4所示,以對數(shù)字3的識別為例,用三條直線對數(shù)字進行切割,其中,行方向兩條,列方向一條,統(tǒng)計數(shù)字在三條直線上的特征變化情況,從而達到圖像號碼的區(qū)分和識別。在號碼的列方向上的2/5和2/3處的橫線與號碼的交點數(shù)量均為1個;號碼行方向中間的1/2處作豎線,與號碼豎直方向的交點數(shù)量為3個。同樣規(guī)則下,對0~9所有統(tǒng)計數(shù)據(jù)進行歸類總結(jié),同時結(jié)合X1和X2交點在Y方向左右情況,作為識別數(shù)字的特征依據(jù),保存于FPGA片內(nèi)ROM中,供查詢比較用。這里,根據(jù)識別框坐標(biāo),行方向兩條直線的列坐標(biāo)分別為180和230,列方向直線的行坐標(biāo)為200??紤]到數(shù)字線條粗細差別,交點個數(shù)計算時,以灰度值由0到1變化一次計數(shù)一次。 2.5 英文字母識別模塊 對于英文大寫字母A~Z和小寫字母a~z的識別,采用模板匹配方式實現(xiàn),在FPGA片內(nèi)ROM中分別存儲26個大寫字母和26個小寫字母的印刷體模板,供查詢比較用。未減少存儲空間需求和減少比較復(fù)雜度,方便FPGA電路實現(xiàn),這里只取9×9一共81個點作為模板,黑色區(qū)域為字母區(qū)域,用1表示,白色區(qū)域為非字母區(qū)域,用0表示。將識別框內(nèi)英文字符與模板進行比較,結(jié)合不同字母的形狀特征,區(qū)分字母類型。如圖5所示,以字母“B“為例,坐標(biāo)以左上角為(0,0),右下角坐標(biāo)為(8,8),字母‘B的特征位置分別為四個區(qū)域:(0,2)、(0,3)、(0,4);(1,6)、(1,7)、(2,6)、(2,7);(5,6)、(5,7)、(6,6)、(6,7);(8,2)、(8,3)、(8,4)。這里,為增加與字母‘D的區(qū)分特征,這里增加了第五個特征區(qū)域(4,3)、(4,4)、(4,5)。每個特征區(qū)域內(nèi)的點以“或“的形式存在,與被識別字母的二值化圖像進行比較。 為減少比較點數(shù)量,縮小組合邏輯規(guī)模,提高比較效率,這里,對識別框內(nèi)二值化后圖像進行隔20行掃描一次,隔20列掃描一次,即取行110、130、150、170、190、210、230、250、270與列110、130、150、170、190、210、230、250、270的交點作為與9×9模板的比較點,實現(xiàn)與字母模板的一致性判別。 2.6 VGA接口模塊 VGA接口模塊用來產(chǎn)生VGA顯示器所需要的接口時序,包括行同步、場同步和數(shù)據(jù)總線信號,并讀取視頻數(shù)據(jù),以25MHz的頻率以RGB565格式送到數(shù)據(jù)總線上。VGA顯示器分辨率為640*480,刷新頻率約為60Hz。 3 實驗結(jié)果與分析 FPGA電路在黑金開發(fā)板AX-301上實現(xiàn),并配以O(shè)V7670視頻采集模塊和VGA接口顯示器,構(gòu)建系統(tǒng)并驗證基于FPGA的符號識別系統(tǒng)的實現(xiàn)效果。圖6為基本圖像識別前后對比。圖7數(shù)字識別前后對比。圖8英文字母識別前后對比。紅色框中為識別框,將待識別字符置于識別框內(nèi);藍色框為識別結(jié)果。 4 結(jié)語 本系統(tǒng)充分利用FPGA的高速并行處理能力,配以圖像采集單元和VGA顯示器,實現(xiàn)了基于FPGA的基本圖像、數(shù)字和英文字母的識別。電路設(shè)計既便于FPGA電路實現(xiàn),又注重算法效率和實時性要求。本設(shè)計具有低功耗、低成本等特點,可作為符號識別和信息處理的基礎(chǔ),方便實現(xiàn)功能擴展。 參考文獻: [1] 王育卜, 白寶興. 印刷體數(shù)字識別研究與實現(xiàn)[J].長春理工大學(xué)學(xué)報(自然科學(xué)版),2016,39(1):101-102. [2] 殷璇,王生.基于離散Hopfield神經(jīng)網(wǎng)絡(luò)的字母識別研究[J], 計算機與數(shù)字工程,2011,12(1):34-37. [3] 高振斌,趙盼,王霞,等.印刷體數(shù)字識別系統(tǒng)的FPGA實現(xiàn)[J].重慶郵電大學(xué)學(xué)報(自然科學(xué)版),2015,27(2):213-215. [4] 羅佳,劉大剛. 基于整體特征的快速英文字母識別方法[J]. 計算機與數(shù)學(xué)工程,2012,40(9):117. [5] 張翼成,陳欣,楊紅軍,等.基于組合特征的Bp神經(jīng)網(wǎng)絡(luò)數(shù)字識別方法[J].計算機系統(tǒng)應(yīng)用,2013,22(3):113-116. [6] 王瑩,高美鳳.基于FPGA的視頻圖像目標(biāo)檢測系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2017,26(6):98-102. 【通聯(lián)編輯:梁書】