基于FPGA的數(shù)字識(shí)別的實(shí)現(xiàn)一
現(xiàn)如今隨著機(jī)器識(shí)別技術(shù)的日益成熟,在我們的日常生活中機(jī)器識(shí)別也隨處可見(jiàn)。大家常見(jiàn)的有二維碼識(shí)別,指紋識(shí)別,車(chē)牌識(shí)別等,這些技術(shù)已經(jīng)相當(dāng)成熟。還有現(xiàn)如今比較火的無(wú)人駕駛系統(tǒng)。無(wú)人駕駛系統(tǒng)中存在很多機(jī)器識(shí)別技術(shù),包括對(duì)人或移動(dòng)物體的識(shí)別,路標(biāo)識(shí)別,以及距離估算等。而各種識(shí)別系統(tǒng)中,對(duì)數(shù)字的識(shí)別是必不可少的。數(shù)字在我們?nèi)祟愂澜鐭o(wú)處不在。
目前實(shí)現(xiàn)數(shù)字識(shí)別的方法大致分為以下4種:
1)使用軟件編程在傳統(tǒng)個(gè)人PC上進(jìn)行實(shí)現(xiàn);
2)使用通用的MCU微型處理器(例如51單片機(jī)、ARM等)上進(jìn)行實(shí)現(xiàn);
3)使用通用DSP作為系統(tǒng)處理器進(jìn)行實(shí)現(xiàn);
4)使用專用DSP作為運(yùn)算核心;
除以上四種方法以外,F(xiàn)PGA以其獨(dú)有的硬件可并行運(yùn)行的優(yōu)勢(shì),打破了傳統(tǒng)處理器順序執(zhí)行的模式,可在一個(gè)時(shí)鐘周期內(nèi)并行完成多個(gè)運(yùn)算,相比于DSP在處理速度與處理能力上有了大幅的提高, 在具有成本低、集成化程度高、便于后期維護(hù)、 升級(jí)等優(yōu)勢(shì)的同時(shí)使系統(tǒng)的運(yùn)行速度能夠滿足圖像實(shí)時(shí)處理的需求,所以本設(shè)計(jì)決定采用FPGA作為硬件平臺(tái),設(shè)計(jì)與實(shí)現(xiàn)一種基于FPGA的數(shù)字識(shí)別系統(tǒng)。
02
基于FPGA的數(shù)字識(shí)別的方法
通常,針對(duì)印刷體數(shù)字識(shí)別使用的算法有:基于模版匹配的識(shí)別方法、基于BP神經(jīng)網(wǎng)絡(luò)的識(shí)別方法、基于數(shù)字特征的識(shí)別方法等。下文將對(duì)這幾種算法進(jìn)行討論以及比較。
1>模版匹配法
模版匹配法是一種被較早應(yīng)用的數(shù)字識(shí)別算法,該算法的關(guān)鍵是對(duì)所要識(shí)別的所有數(shù)字進(jìn)行模版構(gòu)建,之后將圖像中的數(shù)字與所有的數(shù)字模版一一進(jìn)行比較,計(jì)算出圖像中數(shù)字與每個(gè)模版的相似度,根據(jù)所計(jì)算出的相似度結(jié)果進(jìn)行識(shí)別。其中相似度最高的模版即為我們所要識(shí)別的結(jié)果。模版匹配法的對(duì)數(shù)字的大小、結(jié)構(gòu)形狀的規(guī)范化程度要求很高,數(shù)字的規(guī)范化程度對(duì)識(shí)別的準(zhǔn)確率有著直接的影響。該算法原理較為簡(jiǎn)單,但計(jì)算復(fù)雜度過(guò)大,同時(shí)不利于FPGA的實(shí)現(xiàn)。
2>神經(jīng)網(wǎng)絡(luò)識(shí)別算法
神經(jīng)網(wǎng)絡(luò)識(shí)別的方法是模仿動(dòng)物神經(jīng)網(wǎng)絡(luò)的特征,對(duì)信息進(jìn)行分布式并行處理的一種算法。神經(jīng)網(wǎng)絡(luò)識(shí)別算法具有一定的抗干擾能力,但為了保證識(shí)別的準(zhǔn)確率,該算法需要負(fù)責(zé)并且大量的計(jì)算,來(lái)對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,而過(guò)于復(fù)雜的計(jì)算不利于FPGA對(duì)該算法的實(shí)現(xiàn)。
3>數(shù)字特征識(shí)別算法
基于數(shù)字特征的識(shí)別算法其核心是通過(guò)對(duì)數(shù)字的形狀以及結(jié)構(gòu)等幾何特征進(jìn)行分析與統(tǒng)計(jì),通過(guò)對(duì)數(shù)字特征的識(shí)別從而達(dá)到對(duì)圖像中數(shù)字的識(shí)別。
03
基于數(shù)字特征算法實(shí)現(xiàn)數(shù)字識(shí)別
我們采用基于數(shù)字特征的算法進(jìn)行數(shù)字的識(shí)別,通過(guò)圖像采集模塊采集到圖像,進(jìn)行灰度化,二值化,然后進(jìn)行數(shù)字特征的提取和統(tǒng)計(jì)來(lái)完成對(duì)數(shù)字的識(shí)別,最終顯示到數(shù)碼管上,完成圖像信息到數(shù)字信息的轉(zhuǎn)化。
圖1 0-6數(shù)字特征標(biāo)線
圖2 7-8數(shù)字特征標(biāo)線
圖3 5數(shù)字特征
數(shù)字特征信息的提取基于打印體,如上圖1,圖2,圖3所示,以圖3數(shù)字5舉例,紅框是數(shù)字5的水平和豎直的上下左右邊界。X1在豎直方向的2/5處的水平線,x2在豎直方向的2/3處的水平線,y在水平方的1/2處的水直線。我們以此特征來(lái)統(tǒng)計(jì)x1,x2,y與數(shù)字5的交叉點(diǎn)。
以交叉統(tǒng)計(jì)法來(lái)區(qū)分0-9數(shù)字的特征如下表1:
表1 0-9數(shù)字特征統(tǒng)計(jì)表
由于2,3,5的數(shù)字特征統(tǒng)計(jì)表一樣,無(wú)法區(qū)分所以我們繼續(xù)增加數(shù)字特征以區(qū)分2,3,5。如表2:
表2 2,3,5數(shù)字特征統(tǒng)計(jì)
這樣通過(guò)數(shù)字統(tǒng)計(jì)完全區(qū)分開(kāi)數(shù)字0-9。然后利用FPGA系統(tǒng)搭建實(shí)時(shí)數(shù)字識(shí)別系統(tǒng)。
04
基于FPGA的數(shù)字識(shí)別的實(shí)現(xiàn)
圖4基于ov5640的FPGA實(shí)時(shí)數(shù)字識(shí)別系統(tǒng)
如圖4所示,我們圖像采集使用ov5640 500W像素?cái)z像頭,采集到的彩色RGB圖像首先存入SDRAM中,然后由TFT顯示控制端讀出圖像數(shù)據(jù),讀出RGB圖像數(shù)據(jù)后,我們首先進(jìn)行RGB轉(zhuǎn)Ycbcr算法操作,然后對(duì)灰度圖像進(jìn)行閾值分割,形成二值圖像。對(duì)二值數(shù)字圖像進(jìn)行數(shù)字識(shí)別,最終顯示在數(shù)碼管上。
FPGA部分源碼
//------------------------------------------------------------------------
// VGA display
//--------------------------------------------------------------------------
always @(posedge TFT_VCLK or negedge rst_n) begin
if(!rst_n)
TFT_RGB <= 16'b0;
else if(hcount == 400 || vcount == 192 || vcount == 320)
TFT_RGB <= 16'hff00;
else
TFT_RGB <={o_y_8b[7:3],o_y_8b[7:2],o_y_8b[7:3]};
end
//-------------------------------------------------------------
//digital tube display
//-------------------------------------------------------------
always @(posedge TFT_VCLK or negedge rst_n) begin
if(!rst_n)
disp_data <= 32'h0;
else if((!TFT_VS_r0) && TFT_VS_r1)
case({x1_l,x1_r,x2_l,x2_r,y,x1,x2})
16'b1111_0010_0010_0010: disp_data <= {28'b0,4'h0}; ?//0
16'b1010_0001_0001_0001: disp_data <= {28'b0,4'h1}; ?//1
16'b0110_0011_0001_0001: disp_data <= {28'b0,4'h2};??//2
16'b0101_0011_0001_0001: disp_data <= {28'b0,4'h3}; ?//3
16'b1110_0010_0010_0001: disp_data <= {28'b0,4'h4};?//4
16'b1001_0011_0001_0001: disp_data <= {28'b0,4'h5};?//5
16'b1011_0011_0001_0010: disp_data <= {28'b0,4'h6};?//6
16'b0110_0010_0001_0001: disp_data <= {28'b0,4'h7};?//7
16'b1111_0011_0010_0010: disp_data <= {28'b0,4'h8}; ?//8
16'b1101_0011_0010_0001: disp_data <= {28'b0,4'h9}; ?//9
default: disp_data <= 32'b0;
endcase
else
disp_data <= disp_data;
End
結(jié)果展示
圖5實(shí)驗(yàn)原圖
圖6數(shù)字5識(shí)別
圖7數(shù)字6識(shí)別
圖8數(shù)字7識(shí)別
結(jié)果分析
本實(shí)驗(yàn)完成了對(duì)0-9數(shù)字的單個(gè)數(shù)字識(shí)別,對(duì)于多個(gè)數(shù)字的識(shí)別,我們要進(jìn)行模塊分割,然后在每個(gè)模塊里邊再識(shí)別數(shù)字。我們可以加上語(yǔ)音系統(tǒng)來(lái)播報(bào)我們識(shí)別出來(lái)的數(shù)字,已到達(dá)更加人性化的更加實(shí)用的開(kāi)發(fā)。
基于FPGA的數(shù)字識(shí)別的實(shí)現(xiàn)二
01
背景知識(shí)
對(duì)于FPGA識(shí)別數(shù)字的基本算法知識(shí)請(qǐng)查看《基于FPGA的數(shù)字識(shí)別的實(shí)現(xiàn)》一文,對(duì)于數(shù)字位置的實(shí)時(shí)跟蹤的基本算法知識(shí)請(qǐng)查看《基于FPGA的實(shí)時(shí)移動(dòng)目標(biāo)的追蹤》一文。本節(jié)將基于FPGA的目標(biāo)跟蹤以及統(tǒng)計(jì)學(xué)的特征統(tǒng)計(jì)來(lái)實(shí)現(xiàn)對(duì)數(shù)字的位置實(shí)時(shí)定位以及數(shù)字識(shí)別,不在局限于數(shù)字在屏幕中的位置,也不局限數(shù)字的大小。
02
基于FPGA的數(shù)字識(shí)別的實(shí)現(xiàn)
圖1基于ov5640的FPGA實(shí)時(shí)數(shù)字識(shí)別系統(tǒng)
如圖1所示,我們圖像采集使用ov5640 cmos 500W像素?cái)z像頭,將采集到的彩色RGB圖像首先存入SDRAM中,然后由TFT顯示控制端讀出圖像數(shù)據(jù),讀出RGB圖像數(shù)據(jù)后,我們首先進(jìn)行RGB轉(zhuǎn)Ycbcr算法操作,然后對(duì)灰度圖像進(jìn)行閾值分割,形成二值圖像,對(duì)二值數(shù)字圖像進(jìn)行邊界追蹤的基礎(chǔ)上進(jìn)行數(shù)字識(shí)別,最終將邊界顯示在TFT5寸屏幕上,將識(shí)別的數(shù)字信息顯示在數(shù)碼管上。
圖2邊界追蹤數(shù)字識(shí)別的三大主要核心模塊
如圖2所示,以TFT屏的顯示時(shí)序?yàn)榛鶞?zhǔn),首先進(jìn)行邊界追蹤,識(shí)別數(shù)字邊界后,我們?cè)谶吔绲幕A(chǔ)上進(jìn)行統(tǒng)計(jì)特征的數(shù)字識(shí)別。
圖3邊界追蹤模塊
如圖3所示,hcount為列計(jì)數(shù)器,vcount為行計(jì)數(shù)器,TFT_VS_fall和TFT_VS_rise分別是幀下降沿標(biāo)志和幀上升沿標(biāo)志,frame_cnt為幀計(jì)數(shù)器,hcount_l和hcount_r分別是識(shí)別后數(shù)字的左右邊界,vcount_l和vcount_r分別是數(shù)字的上下邊界。Th_flag_fall和th_flag_rise分別是灰度圖像閾值后的下降沿和上升沿標(biāo)志。
圖4數(shù)字識(shí)別模塊
如圖4所示基本的邊界信息均來(lái)自數(shù)字邊界識(shí)別模塊,數(shù)字識(shí)別模塊主要的到數(shù)字統(tǒng)計(jì)學(xué)的兩橫一豎(x1,x2,y)與數(shù)字的交點(diǎn)信息,以及其他補(bǔ)充信息。
部分核心代碼:
/*
Module name: digital_recognition.v
Description: digital recognition
Data: 2018/04/17
Engineer: lipu
e-mail: 137194782@qq.com
微信公眾號(hào):FPGA開(kāi)源工作室
*/
數(shù)字識(shí)別x1 ,x2,y核心代碼:
TFT顯示屏顯示代碼:
數(shù)字識(shí)別與數(shù)碼管顯示對(duì)接代碼:
結(jié)果展示
圖5實(shí)驗(yàn)原圖
圖6邊界跟蹤數(shù)字識(shí)別6
圖7邊界跟蹤數(shù)字識(shí)別7
圖8邊界跟蹤數(shù)字識(shí)別4
圖9邊界跟蹤數(shù)字識(shí)別5
展望
基于機(jī)器視覺(jué)的識(shí)別是走向人工智能的必然之路,字符的識(shí)別就是這條路的敲門(mén)磚。本次實(shí)驗(yàn)的結(jié)果完成了無(wú)論數(shù)字大小,數(shù)字在屏幕中的位置均可正確識(shí)別?;诖耍梢蚤_(kāi)發(fā)人臉位置識(shí)別,人臉模板匹配識(shí)別,車(chē)牌識(shí)別等現(xiàn)如今比較火的機(jī)器視覺(jué),人工智能等。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21923瀏覽量
612389 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4797瀏覽量
102414 -
數(shù)字識(shí)別
+關(guān)注
關(guān)注
2文章
19瀏覽量
10212
原文標(biāo)題:基于FPGA的數(shù)字識(shí)別的實(shí)現(xiàn)
文章出處:【微信號(hào):eetop-1,微信公眾號(hào):EETOP】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
關(guān)于數(shù)字識(shí)別方法模板匹配的實(shí)現(xiàn)
【工程源碼】基于FPGA的數(shù)字識(shí)別的實(shí)現(xiàn)
特定人語(yǔ)音識(shí)別的方法有哪些?
MSK信號(hào)檢測(cè)識(shí)別的FPGA實(shí)現(xiàn)

FPGA平臺(tái)實(shí)現(xiàn)基于遺傳算法的圖像識(shí)別的研究
基于FPGA的智能車(chē)路徑圖像識(shí)別的預(yù)處理設(shè)計(jì)
使用OpenCV進(jìn)行車(chē)牌數(shù)字識(shí)別的資料免費(fèi)下載

射頻識(shí)別的構(gòu)成_射頻識(shí)別的主要工作頻率
語(yǔ)音識(shí)別的兩個(gè)方法_語(yǔ)音識(shí)別的應(yīng)用有哪些
信號(hào)識(shí)別的意義和發(fā)展趨勢(shì)及特定信號(hào)識(shí)別的方法說(shuō)明

使用FPGA平臺(tái)實(shí)現(xiàn)遺傳算法的圖像識(shí)別的研究設(shè)計(jì)說(shuō)明

人臉識(shí)別的優(yōu)點(diǎn)和識(shí)別方法

評(píng)論