宋緒勇+陳宇澤
摘 要:本設計主要針對燃氣表、水表等計量表在生產(chǎn)廠家或計量檢測單位對其進行質(zhì)量檢驗時的流量脈沖數(shù)檢測環(huán)節(jié),即計量表內(nèi)通過的檢測介質(zhì)的整體積數(shù)采樣環(huán)節(jié)。以FPGA為硬件平臺,采用硬件描述語言(Verilog)完成軟件設計。設計充分利用FPGA并行處理的優(yōu)勢,搭配高速時鐘信號,實現(xiàn)了數(shù)據(jù)流實時處理,克服了傳統(tǒng)圖像處理響應慢的問題。著重介紹了圖像二值化處理,模板采集與儲存及模板匹配環(huán)節(jié)的設計。
關鍵詞:FPGA;Verilog;圖像處理;匹配
中圖分類號:TP391.41 文獻標志碼:A 文章編號:2095-2945(2017)21-0043-02
1 總體流程
將裝置的攝像頭對準計量表盤的某一位數(shù)字后,接通電源,裝置開始工作如圖1所示,系統(tǒng)總體工作流程如下:前端的圖像傳感器采集到圖像信息,經(jīng)過模塊內(nèi)部的A/D轉(zhuǎn)換,傳輸?shù)紽PGA芯片內(nèi)部,經(jīng)過二值化,將圖像轉(zhuǎn)換為黑白圖片;通過點擊功能切換按鍵,將裝置切換到模板存儲狀態(tài),此時根據(jù)圖片的像素位置信息,選取指定大小的圖像數(shù)據(jù),按照順序存儲至SDRAM;點擊圖像實時對比按鍵,將裝置切換至圖像實時比對狀態(tài),此時圖像傳感器采集的圖像數(shù)據(jù)跟存儲的模板圖像數(shù)據(jù)進行實時比對,當兩個圖像滿足相似度閾值要求的時候,輸出脈沖信號,傳送至上位機,表示計量表轉(zhuǎn)了一圈,上位機得到的脈沖數(shù)也就是燃氣表的整十體積采樣值。
2 圖像采集
攝像頭我們采用的是OV7670攝像頭,主要因為它具有640*480的分辨率,性價比高,體積小,工作電壓低,適合嵌入式應用;具有標準的SCCB接口,兼容IIC接口,可以輸入整幀、子采樣、取窗口等方式的各種分辨率8位影像數(shù)據(jù);支持圖像縮放,具備手動調(diào)焦功能。通過OV7670的行輸出時序和幀時序圖可以看到。在行同步信號HREF為高時,每一個PCLK時鐘,輸出一個字節(jié)。值得注意的是,在RGB565格式中每兩個字節(jié)組成一個像素(高字節(jié)在前,低字節(jié)在后),因此每兩個時鐘信號輸出一個像素。當VSYNC為高時,產(chǎn)生一個幀同步信號,因此每產(chǎn)生兩個幀同步信號完成一幀數(shù)據(jù)的傳輸。這部分的程序和攝像頭初始化的程序在市面上已經(jīng)很成熟,這里直接采用,不再贅述。
3 圖像二值化處理
為了便于進一步的圖像數(shù)據(jù)處理,我們首先進行圖像數(shù)據(jù)的二值化。這樣做的目的是減少數(shù)據(jù)量,凸顯目標區(qū)域的輪廓。實現(xiàn)方法如下:已知圖像數(shù)據(jù)格式為RGB565,計量表盤數(shù)字為白色,底色為暗色。當某一像素點為白色時,其R值G值B值應幾乎相等,即|R-G|≈0且|G-B|≈0且|R-B|≈0成立,程序?qū)崿F(xiàn)如下:
if((((sys_data_in[15:11]-sys_data_in[10:6])<3)||((sys_data_in[15:11]-sys_data_in[10:6])>28))&&(((sys_data_in[15:11]-sys_data_in[4:0])<3)||((sys_data_in[15:11]-sys_data_in[4:0])>28))&&((sys_data_in[15:11]+sys_data_in[10:5]+sys_data_in[4:0])>50))
begin data_add <=16'b1111111111111111; end
else begin data_add <=16'd0;End
公式中的3和28是根據(jù)大量實驗得到的最為合理的閾值選擇。
4 模板采集與儲存
為保證圖像數(shù)據(jù)處理的快速性,設置了一個大小涵蓋數(shù)字輪廓的框,只需對框內(nèi)數(shù)據(jù)進行采集和儲存即可。經(jīng)過大量測試,最終確定框的大小為200*280。在模板儲存方面,經(jīng)過二值化后,每一個16位圖像素點值均為0或1,只需取其中一位即可。因此設置了一個大小為65536的ram來儲存模板數(shù)據(jù)。這部分的signaltap程序仿真如圖2所示。從圖中可以看到在ram使能信號(ram_enable)為高時,ram內(nèi)的數(shù)據(jù)(ram_data)隨著時鐘信號(ram_clk)存取了1位二值化后的圖像數(shù)據(jù)(data_add),同時ram地址(ram_waddr)疊加。仿真符合預期效果。
5 模板匹配
在SDRAM_CTRL內(nèi)主要完成SDRAM的初始化和圖像數(shù)據(jù)的寫讀操作,初始化包括時鐘,使能,片選,行列地址等信號。由于攝像頭和顯示屏對數(shù)據(jù)速度要求不一樣,SDRAM在這里起到數(shù)據(jù)緩沖作用。從SDRAM中讀出的圖像數(shù)據(jù)經(jīng)過處理后與模板數(shù)據(jù)進行匹配,當滿足一定閾值時,輸出脈沖信號,表示當前圖像與模板匹配。匹配算法設計如下:將檢測初始時刻定為相似度由符合條件變?yōu)椴环蠗l件的下降沿時刻,將數(shù)字表盤轉(zhuǎn)動一圈后輸出信號的時刻也定為相似度由符合條件變?yōu)椴环蠗l件的下降沿時刻。中間的時間間隔就是表盤轉(zhuǎn)動一圈再次達到初始位置所需的時間。同時發(fā)現(xiàn)將閾值設為88%時結(jié)果最為理想。這部分仿真如圖3所示。從圖中可以看出,當相同像素數(shù)量達到199*279*0.88=48858(199和279為框內(nèi)數(shù)據(jù)行列數(shù))時,輸出信號(LED[0])變高,仿真符合預期效果。
6 結(jié)束語
相比于傳統(tǒng)在計算機上建立滾輪數(shù)字模板庫進行數(shù)字識別的方法,這種模板匹配方法與數(shù)字無關,只比較圖像是否高度相似,不用考慮數(shù)字識別是否準確,圖像初始位置不論在何處都可任意選取,實現(xiàn)了模板多樣化,可以更多的應用到圖像重復性檢測領域。就系統(tǒng)響應速度而言,由于采用了數(shù)據(jù)流處理,所有數(shù)據(jù)均在FPGA內(nèi)部完成,系統(tǒng)響應更快,抗干擾能力更強。
參考文獻:
[1]夏宇聞.Verilog數(shù)字系統(tǒng)設計教程[J].單片機與嵌入式系統(tǒng)應用,2003(6):51.
[2]柴震海.圖像并行處理技術[J].紅外,2005(3):27-33.
[3]王德勝,康令州.基于FPGA的實時圖像采集與預處理[J].電視技術,2011,35(3):32-35.
[4]付昱強.基于FPGA的圖像處理算法的研究與硬件設計[D].南昌大學,2006.
[5]延明.FPGA在數(shù)字圖像處理中的應用[J].電子技術,2005,32(1):76-78.