文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.172946
中文引用格式: 高俊嶺,陳志飛,章佩佩. 基于FPGA的實(shí)時(shí)視頻圖像采集處理系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2018,44(2):10-12,19.
英文引用格式: Gao Junling,Chen Zhifei,Zhang Peipei. Design of real time video image acquisition and processing system based on FPGA[J]. Application of Electronic Technique,2018,44(2):10-12,19.
0 引言
隨著社會的不斷發(fā)展,視頻圖像采集處理技術(shù)在許多行業(yè)領(lǐng)域中扮演著非常重要的角色,如軍事、安全監(jiān)控、工業(yè)視覺等領(lǐng)域,而各行各業(yè)對于視頻圖像采集和處理技術(shù)的要求也越來越高。高速、實(shí)時(shí)性是主要發(fā)展趨勢之一。目前,視頻圖像采集與處理技術(shù)的發(fā)展主要分為兩類:一是基于PC在相關(guān)特定的PCIe采集板卡的基礎(chǔ)上,通過軟件對視頻圖像進(jìn)行處理;二是利用相關(guān)的集成硬件如DSP、MCU、FPGA等對視頻圖像進(jìn)行采集處理[1]。相對來講后者的處理效果不如前者,但實(shí)時(shí)性好、體積小、方便使用,更適合于工業(yè)的需求。
FPGA現(xiàn)場可編程邏輯門列,采用并行運(yùn)算模式,且工作頻率較高,可對大量數(shù)據(jù)進(jìn)行實(shí)時(shí)操作與處理,在通信領(lǐng)域、圖像處理等方面上優(yōu)勢明顯[2]。因此,本設(shè)計(jì)選用FPGA作為系統(tǒng)的控制和數(shù)據(jù)處理中心。
1 系統(tǒng)總體概述
基于FPGA的視頻采集處理系統(tǒng)可分為:視頻采集模塊、圖像存儲模塊、數(shù)據(jù)處理模塊和圖像顯示模塊。工作過程為:首先,F(xiàn)PGA通過IIC總線協(xié)議對攝像頭進(jìn)行初始化配置,攝像頭對焦工作拍攝采集圖像,然后,采集的視頻數(shù)據(jù)通過FIFO緩存器不斷寫入到DDR2 SDRAM中存儲,再經(jīng)過FIFO緩存器讀出視頻數(shù)據(jù),接著,選擇性對讀出的視頻圖像數(shù)據(jù)進(jìn)行處理,最后在VGA上顯示視頻圖像。系統(tǒng)的總體框圖如圖1所示。
2 中央控制單元
2.1 FPGA
從FPGA硬件開發(fā)的角度考慮,利用EDA開發(fā)軟件和硬件描述語言Verilog編程,對FPGA芯片進(jìn)行開發(fā),得到其工程要求的硬件功能。對比傳統(tǒng)的硬件設(shè)計(jì)開發(fā),減少了器件的浪費(fèi)和多次焊接的工作量,設(shè)計(jì)過程也更加靈活、方便、高效。
另外,F(xiàn)PGA要實(shí)現(xiàn)對每個(gè)模塊的控制和處理,除并行數(shù)據(jù)處理優(yōu)點(diǎn)外,自身必須擁有較多I/O口,豐富的邏輯單元等。鑒于此,選用了Alter公司研發(fā)的Cyclone IV系列的EP4CE617C8。此款FPGA擁有179個(gè)I/O接口,62 792個(gè)邏輯單元,392個(gè)乘法器,且功耗低。
2.2 視頻圖像采集模塊
CMOS OV7670圖像傳感器,其體積小,工作電壓小,640×380像素,可選用自帶的降噪、數(shù)模轉(zhuǎn)換、分頻等功能,是較好的視頻圖像采集選擇。FPGA通過IIC總線協(xié)議與CMOS攝像頭進(jìn)行初始化配置。IIC總線寫入前,CMOS攝像頭的SCLK和SDAT引腳必須帶上拉電阻。IIC總線寫入時(shí),首先寫入設(shè)備地址,CMOS的初始地址為0x42,其次寫入寄存器地址,最后寫入數(shù)據(jù)。其IIC總線數(shù)據(jù)寫入流程如圖2所示。
IIC總線與CMOS的數(shù)據(jù)通信后,配置CMOS攝像頭控制寄存器。時(shí)鐘配置使用外部時(shí)鐘即FPGA的工作時(shí)鐘頻率,目的是更好地控制CMOS攝像頭。PLL寄存器配置零分頻、使能內(nèi)部線性穩(wěn)壓器LDO,內(nèi)部電壓工作穩(wěn)定。配置的Verilog部分代碼分別依次為:
SET_OV7670+19 : LUT_DATA=16'h1180;
SET_OV7670:5 : LUT_DATA=16'h6b00;
其他相關(guān)控制寄存器中,配置了水平鏡像、關(guān)閉彩條、視頻格式RGB565等功能。保證其能在系統(tǒng)高速運(yùn)行下采集到可靠度大、信息性強(qiáng)的視頻圖像數(shù)據(jù)。
2.3 系統(tǒng)存儲模塊
2.3.1 DDR2 SDRAM
DDR2 SDRAM作為系統(tǒng)存儲器,選用采用1 GB內(nèi)存的DDR2 800系列 SDRAM作為存儲器。DDR2工作時(shí)鐘頻率為200 MHz[2],具有讀寫速度快、集成度高、存儲容量大以及成本低等特點(diǎn)。其操作速率是普通SDRAM的4倍,能夠較好地達(dá)到系統(tǒng)實(shí)時(shí)性的要求。
DDR2不僅能在系統(tǒng)時(shí)鐘控制下工作,也可以獨(dú)立的進(jìn)行操作,如自刷新、自預(yù)充電凈化等,其控制復(fù)雜[3]。因此,利用Quartus II自帶的IP核構(gòu)建DDR2 SDRAM控制器。同時(shí)也生成了Altera數(shù)字PHY。PHY是連接DDR2 內(nèi)核控制器和外部DDR2器件的橋梁。PHY擁有四層接口,分別為帶local_*類的用戶邏輯接口、帶mem_*類的外部DDR2芯片接口、帶ctl_*和ctl_mem_*的PHY與IP控制器相互連接的接口。其功能框圖如圖3所示。
IP內(nèi)核控制器的使用將DDR2復(fù)雜的控制操作轉(zhuǎn)變成用戶簡單的讀寫時(shí)序操作,因此,DDR2存儲模塊可設(shè)計(jì)分為時(shí)鐘、復(fù)位、初始化、控制、數(shù)據(jù)通道和仲裁等子模塊。其中數(shù)據(jù)通道子模塊建立了DDR2連接FIFO緩存器的通道。
2.3.2 FIFO
FIFO是一種先入先出的存儲器,沒有地址定義,使用簡單。FIFO只能順序讀寫數(shù)據(jù),確保了數(shù)據(jù)的安全性。由此,在多數(shù)情況下作為系統(tǒng)數(shù)據(jù)緩沖器使用[5]。
在Quartus II的內(nèi)核中,建立異步FIFO的控制器。異步FIFO,即讀寫操作時(shí)鐘信號不一致,有利于圖像數(shù)據(jù)的緩沖。wrusedw信號控制著數(shù)據(jù)的讀寫請求。當(dāng)wrusedwd等于FIFO深度值4時(shí)(為方便說明,仿真的FIFO深度為4),表示FIFO已空,Write_Req信號有效,只能寫入數(shù)據(jù)。wrusedw為0,表示FIFO已滿,Read_Req信號有效,只能讀出數(shù)據(jù)。wrusedwd為其余值,則讀、寫數(shù)據(jù)請求都可執(zhí)行。如圖4所示。
3 視頻圖像處理模塊
本文通過Sobel邊緣檢測對圖像數(shù)據(jù)進(jìn)行處理。邊緣檢測意義在于能夠獲取目標(biāo)物體的邊緣信息,有利于目標(biāo)識別和追蹤[6]。Sobel邊緣檢測算法具有計(jì)算量小、檢測精度高等優(yōu)點(diǎn),也是最常用的圖像邊緣處理方法之一。
Sobel邊緣檢測算法過程:首先,確立Sobel算子模板,它包含了橫縱向兩組3×3運(yùn)算算子矩陣模板。如下式:
其次,利用水平和垂直方向的矩陣算子與原始圖像像素點(diǎn)進(jìn)行平面卷積分運(yùn)算,算出X、Y兩個(gè)方向上的一階導(dǎo)數(shù)梯度值[7],如下式:
然后,把計(jì)算出的X、Y方向梯度值做平方求和后再開方,得到中心點(diǎn)的梯度值。如下式:
最后,中心點(diǎn)梯度值與設(shè)定的閾值互相比較,大于閾值的為邊緣點(diǎn),輸出為黑色,小于閾值的為普通點(diǎn),輸出為白色[8-9]。
Sobel邊緣檢測的實(shí)現(xiàn)包括緩沖模塊、計(jì)算卷積模塊和門級處理模塊。其中,緩沖模塊使用基于RAM的移位寄存器altshift_taps,卷積計(jì)算模塊使用6個(gè)可編程乘加器aitmult_add和2個(gè)并行加法器parallel_add計(jì)算出水平和垂直的梯度值,再通過浮點(diǎn)平方根altfr_sqrt得到中心點(diǎn)值。門級處理模塊即閾值的比較[10]。原理過程如圖5所示。
4 實(shí)驗(yàn)
完成系統(tǒng)硬件設(shè)計(jì)后,保存工程文件。并繪制電路原理圖和PCB圖。最后,制作電路板。完成所有工作后,建立系統(tǒng),進(jìn)行實(shí)驗(yàn)。
實(shí)驗(yàn)一:實(shí)時(shí)視頻圖像采集顯示實(shí)驗(yàn)。首先,F(xiàn)PGA控制CMOS 7670采集圖像;然后,F(xiàn)PGA對采集圖像數(shù)據(jù)傳輸和存儲;最后,通過VGA顯示圖像。其畫面清晰、流暢。實(shí)驗(yàn)結(jié)果如圖6所示。
實(shí)驗(yàn)二:Sobel邊緣檢測算法處理視頻圖像顯示實(shí)驗(yàn)。在實(shí)驗(yàn)一的基礎(chǔ)上,增加了對圖像數(shù)據(jù)的Sobel邊緣檢測處理,再通過VGA進(jìn)行顯示。圖像中物體輪廓提取明顯,且實(shí)時(shí)性較好。實(shí)驗(yàn)結(jié)果如圖7所示。
5 結(jié)論
實(shí)時(shí)視頻圖像采集與處理技術(shù)廣泛用于監(jiān)控、工業(yè)視覺等領(lǐng)域。本系統(tǒng)以FPGA核心,充分利用其高速、大數(shù)據(jù)處理能力和硬件編程設(shè)計(jì)等特點(diǎn),結(jié)合相關(guān)器件,實(shí)現(xiàn)了對視頻圖像的采集、處理和顯示。實(shí)驗(yàn)結(jié)果畫面清晰、流暢,效果好。同時(shí)在此基礎(chǔ)上,增加了對物體的邊緣檢測,在物體追蹤和識別方面也具有一定的實(shí)用意義。
參考文獻(xiàn)
[1] 田杰,玉廣龍,喬中濤,等.基于FPGA高速視頻圖像實(shí)時(shí)采集與處理系統(tǒng)設(shè)計(jì)[J].電子器件,2016,39(3).
[2] 王誠,蔡海寧,吳繼華.Alter FPGA/CPLD設(shè)計(jì)[M].北京:人民郵電出版社,2011.
[3] 李原.DDR/DRR2接口的FIFO設(shè)計(jì)[D].西安:西安電子科技大學(xué),2009.
[4] 吳厚航.例說FPGA:可直接用于工程項(xiàng)目的第一手經(jīng)驗(yàn)[M].北京:機(jī)械工業(yè)出版社,2016.
[5] 梅傲寒.基于FPGA的無線圖像采集傳輸系統(tǒng)的設(shè)計(jì)與研究[D].合肥:安徽大學(xué),2016.
[6] 丁繼生.基于FPGA的數(shù)字圖像處理算法研究及實(shí)現(xiàn)[D].合肥:合肥工業(yè)大學(xué),2015.
[7] 羅琳.基于FPGA的快速圖像處理算法的研究與實(shí)現(xiàn)[D].重慶:重慶交通大學(xué),2015.
[8] 馬苗,樊養(yǎng)余,謝松元,等.基于灰色系統(tǒng)理論的圖像邊緣檢測新算法[J].中國圖像圖形學(xué)報(bào),2003,10(10):1136-1139.
[9] 仝海峰.基于FPGA的視頻圖像邊緣檢測優(yōu)化設(shè)計(jì)[D].淮南:安徽理工大學(xué),2016.
[10] 張麗紅,凌朝東.基于FPGA的Sobel邊緣檢測應(yīng)用[J].電子技術(shù)應(yīng)用,2011,37(8).