基于FPGA的數字識別的實現一
現如今隨著機器識別技術的日益成熟,在我們的日常生活中機器識別也隨處可見。大家常見的有二維碼識別,指紋識別,車牌識別等,這些技術已經相當成熟。還有現如今比較火的無人駕駛系統。無人駕駛系統中存在很多機器識別技術,包括對人或移動物體的識別,路標識別,以及距離估算等。而各種識別系統中,對數字的識別是必不可少的。數字在我們人類世界無處不在。
目前實現數字識別的方法大致分為以下4種:
1)使用軟件編程在傳統個人PC上進行實現;
2)使用通用的MCU微型處理器(例如51單片機、ARM等)上進行實現;
3)使用通用DSP作為系統處理器進行實現;
4)使用專用DSP作為運算核心;
除以上四種方法以外,FPGA以其獨有的硬件可并行運行的優勢,打破了傳統處理器順序執行的模式,可在一個時鐘周期內并行完成多個運算,相比于DSP在處理速度與處理能力上有了大幅的提高, 在具有成本低、集成化程度高、便于后期維護、 升級等優勢的同時使系統的運行速度能夠滿足圖像實時處理的需求,所以本設計決定采用FPGA作為硬件平臺,設計與實現一種基于FPGA的數字識別系統。
02
基于FPGA的數字識別的方法
通常,針對印刷體數字識別使用的算法有:基于模版匹配的識別方法、基于BP神經網絡的識別方法、基于數字特征的識別方法等。下文將對這幾種算法進行討論以及比較。
1>模版匹配法
模版匹配法是一種被較早應用的數字識別算法,該算法的關鍵是對所要識別的所有數字進行模版構建,之后將圖像中的數字與所有的數字模版一一進行比較,計算出圖像中數字與每個模版的相似度,根據所計算出的相似度結果進行識別。其中相似度最高的模版即為我們所要識別的結果。模版匹配法的對數字的大小、結構形狀的規范化程度要求很高,數字的規范化程度對識別的準確率有著直接的影響。該算法原理較為簡單,但計算復雜度過大,同時不利于FPGA的實現。
2>神經網絡識別算法
神經網絡識別的方法是模仿動物神經網絡的特征,對信息進行分布式并行處理的一種算法。神經網絡識別算法具有一定的抗干擾能力,但為了保證識別的準確率,該算法需要負責并且大量的計算,來對神經網絡進行訓練,而過于復雜的計算不利于FPGA對該算法的實現。
3>數字特征識別算法
基于數字特征的識別算法其核心是通過對數字的形狀以及結構等幾何特征進行分析與統計,通過對數字特征的識別從而達到對圖像中數字的識別。
03
基于數字特征算法實現數字識別
我們采用基于數字特征的算法進行數字的識別,通過圖像采集模塊采集到圖像,進行灰度化,二值化,然后進行數字特征的提取和統計來完成對數字的識別,最終顯示到數碼管上,完成圖像信息到數字信息的轉化。
圖1 0-6數字特征標線
圖2 7-8數字特征標線
圖3 5數字特征
數字特征信息的提取基于打印體,如上圖1,圖2,圖3所示,以圖3數字5舉例,紅框是數字5的水平和豎直的上下左右邊界。X1在豎直方向的2/5處的水平線,x2在豎直方向的2/3處的水平線,y在水平方的1/2處的水直線。我們以此特征來統計x1,x2,y與數字5的交叉點。
以交叉統計法來區分0-9數字的特征如下表1:
表1 0-9數字特征統計表
由于2,3,5的數字特征統計表一樣,無法區分所以我們繼續增加數字特征以區分2,3,5。如表2:
表2 2,3,5數字特征統計
這樣通過數字統計完全區分開數字0-9。然后利用FPGA系統搭建實時數字識別系統。
04
基于FPGA的數字識別的實現
圖4基于ov5640的FPGA實時數字識別系統
如圖4所示,我們圖像采集使用ov5640 500W像素攝像頭,采集到的彩色RGB圖像首先存入SDRAM中,然后由TFT顯示控制端讀出圖像數據,讀出RGB圖像數據后,我們首先進行RGB轉Ycbcr算法操作,然后對灰度圖像進行閾值分割,形成二值圖像。對二值數字圖像進行數字識別,最終顯示在數碼管上。
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
結果展示
圖5實驗原圖
圖6數字5識別
圖7數字6識別
圖8數字7識別
結果分析
本實驗完成了對0-9數字的單個數字識別,對于多個數字的識別,我們要進行模塊分割,然后在每個模塊里邊再識別數字。我們可以加上語音系統來播報我們識別出來的數字,已到達更加人性化的更加實用的開發。
基于FPGA的數字識別的實現二
01
背景知識
對于FPGA識別數字的基本算法知識請查看《基于FPGA的數字識別的實現》一文,對于數字位置的實時跟蹤的基本算法知識請查看《基于FPGA的實時移動目標的追蹤》一文。本節將基于FPGA的目標跟蹤以及統計學的特征統計來實現對數字的位置實時定位以及數字識別,不在局限于數字在屏幕中的位置,也不局限數字的大小。
02
基于FPGA的數字識別的實現
圖1基于ov5640的FPGA實時數字識別系統
如圖1所示,我們圖像采集使用ov5640 cmos 500W像素攝像頭,將采集到的彩色RGB圖像首先存入SDRAM中,然后由TFT顯示控制端讀出圖像數據,讀出RGB圖像數據后,我們首先進行RGB轉Ycbcr算法操作,然后對灰度圖像進行閾值分割,形成二值圖像,對二值數字圖像進行邊界追蹤的基礎上進行數字識別,最終將邊界顯示在TFT5寸屏幕上,將識別的數字信息顯示在數碼管上。
圖2邊界追蹤數字識別的三大主要核心模塊
如圖2所示,以TFT屏的顯示時序為基準,首先進行邊界追蹤,識別數字邊界后,我們在邊界的基礎上進行統計特征的數字識別。
圖3邊界追蹤模塊
如圖3所示,hcount為列計數器,vcount為行計數器,TFT_VS_fall和TFT_VS_rise分別是幀下降沿標志和幀上升沿標志,frame_cnt為幀計數器,hcount_l和hcount_r分別是識別后數字的左右邊界,vcount_l和vcount_r分別是數字的上下邊界。Th_flag_fall和th_flag_rise分別是灰度圖像閾值后的下降沿和上升沿標志。
圖4數字識別模塊
如圖4所示基本的邊界信息均來自數字邊界識別模塊,數字識別模塊主要的到數字統計學的兩橫一豎(x1,x2,y)與數字的交點信息,以及其他補充信息。
部分核心代碼:
/*
Module name: digital_recognition.v
Description: digital recognition
Data: 2018/04/17
Engineer: lipu
e-mail: 137194782@qq.com
微信公眾號:FPGA開源工作室
*/
數字識別x1 ,x2,y核心代碼:
TFT顯示屏顯示代碼:
數字識別與數碼管顯示對接代碼:
結果展示
圖5實驗原圖
圖6邊界跟蹤數字識別6
圖7邊界跟蹤數字識別7
圖8邊界跟蹤數字識別4
圖9邊界跟蹤數字識別5
展望
基于機器視覺的識別是走向人工智能的必然之路,字符的識別就是這條路的敲門磚。本次實驗的結果完成了無論數字大小,數字在屏幕中的位置均可正確識別。基于此,可以開發人臉位置識別,人臉模板匹配識別,車牌識別等現如今比較火的機器視覺,人工智能等。
-
FPGA
+關注
關注
1629文章
21729瀏覽量
603012 -
神經網絡
+關注
關注
42文章
4771瀏覽量
100719 -
數字識別
+關注
關注
2文章
19瀏覽量
10140
原文標題:基于FPGA的數字識別的實現
文章出處:【微信號:eetop-1,微信公眾號:EETOP】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論