www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > FPGA開源工作室


基于FPGA的數(shù)字識別的實(shí)現(xiàn)

01


背景知識

現(xiàn)如今隨著機(jī)器識別技術(shù)的日益成熟,在我們的日常生活中機(jī)器識別也隨處可見。大家常見的有二維碼識別,指紋識別,車牌識別等,這些技術(shù)已經(jīng)相當(dāng)成熟。還有現(xiàn)如今比較火的無人駕駛系統(tǒng)。無人駕駛系統(tǒng)中存在很多機(jī)器識別技術(shù),包括對人或移動物體的識別,路標(biāo)識別,以及距離估算等。而各種識別系統(tǒng)中,對數(shù)字的識別是必不可少的。數(shù)字在我們?nèi)祟愂澜鐭o處不在。

目前實(shí)現(xiàn)數(shù)字識別的方法大致分為以下4種:

1)使用軟件編程在傳統(tǒng)個人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)算核心;

除以上四種方法以外, FPGA 以其獨(dú)有的硬件可并行運(yùn)行的優(yōu)勢,打破了傳統(tǒng)處理器順序執(zhí)行的模式,可在一個時鐘周期內(nèi)并行完成多個運(yùn)算,相比于 DSP 在處理速度與處理能力上有了大幅的提高, 在具有成本低、集成化程度高、便于后期維護(hù)、 升級等優(yōu)勢的同時使系統(tǒng)的運(yùn)行速度能夠滿足圖像實(shí)時處理的需求,所以本設(shè)計(jì)決定采用 FPGA 作為硬件平臺,設(shè)計(jì)與實(shí)現(xiàn)一種基于FPGA 的數(shù)字識別系統(tǒng)。

02


基于FPGA的數(shù)字識別的方法

通常,針對印刷體數(shù)字識別使用的算法有:基于模版匹配的識別方法、基于BP 神經(jīng)網(wǎng)絡(luò)的識別方法、基于數(shù)字特征的識別方法等。下文將對這幾種算法進(jìn)行討論以及比較。
1>模版匹配法
模版匹配法是一種被較早應(yīng)用的數(shù)字識別算法,該算法的關(guān)鍵是對所要識別
的所有數(shù)字進(jìn)行模版構(gòu)建,之后將圖像中的數(shù)字與所有的數(shù)字模版一一進(jìn)行比較,
計(jì)算出圖像中數(shù)字與每個模版的相似度,根據(jù)所計(jì)算出的相似度結(jié)果進(jìn)行識別。
其中相似度最高的模版即為我們所要識別的結(jié)果。模版匹配法的對數(shù)字的大小、
結(jié)構(gòu)形狀的規(guī)范化程度要求很高,數(shù)字的規(guī)范化程度對識別的準(zhǔn)確率有著直接的
影響。該算法原理較為簡單,但計(jì)算復(fù)雜度過大,同時不利于 FPGA 的實(shí)現(xiàn)。
2>神經(jīng)網(wǎng)絡(luò)識別算法
神經(jīng)網(wǎng)絡(luò)識別的方法是模仿動物神經(jīng)網(wǎng)絡(luò)的特征,對信息進(jìn)行分布式并行處
理的一種算法。神經(jīng)網(wǎng)絡(luò)識別算法具有一定的抗干擾能力,但為了保證識別的準(zhǔn)
確率,該算法需要負(fù)責(zé)并且大量的計(jì)算,來對神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,而過于復(fù)雜的
計(jì)算不利于 FPGA 對該算法的實(shí)現(xiàn)。
3>數(shù)字特征識別算法
基于數(shù)字特征的識別算法其核心是通過對數(shù)字的形狀以及結(jié)構(gòu)等幾何特征
進(jìn)行分析與統(tǒng)計(jì),通過對數(shù)字特征的識別從而達(dá)到對圖像中數(shù)字的識別。

03


基于數(shù)字特征算法實(shí)現(xiàn)數(shù)字識別

我們采用基于數(shù)字特征的算法進(jìn)行數(shù)字的識別,通過圖像采集模塊采集到圖像,進(jìn)行灰度化,二值化,然后進(jìn)行數(shù)字特征的提取和統(tǒng)計(jì)來完成對數(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處的水直線。我們以此特征來統(tǒng)計(jì)x1,x2,y與數(shù)字5的交叉點(diǎn)。

以交叉統(tǒng)計(jì)法來區(qū)分0-9數(shù)字的特征如下表1

1   0-9數(shù)字特征統(tǒng)計(jì)表

數(shù)字

y交叉點(diǎn)個數(shù)

x1交叉點(diǎn)個數(shù)

x2交叉點(diǎn)個數(shù)

分類

0

2

2

2

A

1

1

1

1

B

2

3

1

1

C

3

3

1

1

C

4

2

2

1

D

5

3

1

1

C

6

3

1

2

E

7

2

1

1

F

8

3

2

2

G

9

3

2

1

H

由于2,3,5的數(shù)字特征統(tǒng)計(jì)表一樣,無法區(qū)分所以我們繼續(xù)增加數(shù)字特征以區(qū)分2,3,5。如表2

2   2,3,5 數(shù)字特征統(tǒng)計(jì)

數(shù)字

x1的交叉點(diǎn)位置(左,右)

x2的交叉點(diǎn)位置(左,右)

分類

2

I(C)

3

J(C)

5

K(C)

這樣通過數(shù)字統(tǒng)計(jì)完全區(qū)分開數(shù)字0-9。然后利用FPGA系統(tǒng)搭建實(shí)時數(shù)字識別系統(tǒng)。

04


基于FPGA的數(shù)字識別的實(shí)現(xiàn)

4 基于ov5640FPGA實(shí)時數(shù)字識別系統(tǒng)

如圖4所示,我們圖像采集使用 ov5640  500W像素?cái)z像頭,采集到的彩色RGB圖像首先存入SDRAM中,然后由TFT顯示控制端讀出圖像數(shù)據(jù),讀出RGB圖像數(shù)據(jù)后,我們首先進(jìn)行RGB轉(zhuǎn)Ycbcr算法操作,然后對灰度圖像進(jìn)行閾值分割,形成二值圖像。對二值數(shù)字圖像進(jìn)行數(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識別

7 數(shù)字6 識別



8 數(shù)字7 識別

結(jié)果分析


本實(shí)驗(yàn)完成了對0-9數(shù)字的單個數(shù)字識別,對于多個數(shù)字的識別,我們要進(jìn)行模塊分割,然后在每個模塊里邊再識別數(shù)字。我們可以加上語音系統(tǒng)來播報(bào)我們識別出來的數(shù)字,已到達(dá)更加人性化的更加實(shí)用的開發(fā)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉