吳 松,張利華
(華東交通大學(xué),江西 南昌330013)
數(shù)字圖像處理目的是把圖像中沒(méi)用的信息去除掉,保留或者恢復(fù)提供給用戶參考的數(shù)據(jù)信息。隨著用戶對(duì)圖像的細(xì)節(jié)信息越來(lái)越關(guān)注,圖像處理要求越來(lái)越高[1]。盡管軟件算法的不斷優(yōu)化能夠在一定程度達(dá)到要求,但是軟件算法優(yōu)化已經(jīng)趨近瓶頸[2]。目前,基于嵌入式的圖像采集平臺(tái)包括ARM、FPGA和DSP,基于FPGA的SOPC比ARM系統(tǒng)處理速度快,比DSP系統(tǒng)控制能力強(qiáng)[3]。以往的圖像采集與處理多是由圖像采集卡完成圖像采集后再由計(jì)算機(jī)對(duì)其進(jìn)行處理,這種方法雖然具有處理速度快的優(yōu)點(diǎn),但存在著價(jià)格昂貴、功耗高、體積大等不足[4-5]。
通過(guò)硬件FPGA實(shí)現(xiàn)圖像采集處理具有以下優(yōu)勢(shì):① 更多復(fù)雜的算法需要嵌入到到硬件平臺(tái)上實(shí)現(xiàn),能夠節(jié)約圖像處理的時(shí)間,增加實(shí)時(shí)性[6];② 基于嵌入式的硬件圖像處理系統(tǒng)可以進(jìn)行多次開(kāi)發(fā),而且每次開(kāi)發(fā)周期較短,節(jié)約開(kāi)發(fā)成本;③ 將圖像處理功能集成在專用芯片或者FPGA片上系統(tǒng)中,占用空間小,便于攜帶和戶外監(jiān)控[7]?;贔PGA的諸多優(yōu)勢(shì),文中提出采用可編程邏輯器件FPGA實(shí)現(xiàn)圖像采集處理的方案,在FPGA上實(shí)現(xiàn)攝像頭OV7725、SDRAM以及VGA的控制。通過(guò)完成各個(gè)模塊設(shè)計(jì),將圖像采集系統(tǒng)聯(lián)調(diào),預(yù)期采集系統(tǒng)工作正常,性能良好。
整個(gè)系統(tǒng)由視頻圖像采集、SDRAM存儲(chǔ)、圖像處理算法、VGA顯示控制以及電源模塊組成,其中SDRAM控制模塊、VGA顯示控制模塊、圖像算法模塊全部模塊集成在FPGA芯片中。實(shí)現(xiàn)平臺(tái)使用Altera公司Cyclone IV系列EP4CE10E22C8為核心實(shí)驗(yàn)板,該芯片包含專用外部存儲(chǔ)器以及flash接口,可以支持DDR存儲(chǔ)器和動(dòng)態(tài)隨機(jī)存儲(chǔ)器,最高提供150 000個(gè)邏輯單元。
系統(tǒng)的功能框圖如圖1所示。FPGA控制攝像頭OV7725采集視頻圖像,將數(shù)據(jù)寫(xiě)入SDRAM存儲(chǔ)器緩存。FPGA調(diào)用圖像處理算法對(duì)SDRAM中的數(shù)據(jù)進(jìn)行處理,處理后的圖像數(shù)據(jù)送至VGA顯示控制模塊,經(jīng)過(guò)VGA外圍接口電路呈現(xiàn)在VGA顯示屏上。
圖1 系統(tǒng)的功能框圖
攝像頭OV7725芯片內(nèi)部集成了圖像采集模塊、數(shù)模轉(zhuǎn)換模塊、DSP處理器,具有標(biāo)準(zhǔn)的SCCB配置接口,能夠配置輸出RGB565、YCbCr422、RAW等視頻流格式,支持VGA的分辨率圖像尺寸。攝像頭OV7725總共有172個(gè)內(nèi)部寄存器,但不是每個(gè)寄存器都需要配置,很多采用默認(rèn)的配置,通過(guò)SCCB總線進(jìn)行配置[8]。攝像機(jī)串行控制總線(SCCB)由時(shí)鐘信號(hào)SIO_C、數(shù)據(jù)信號(hào)SIO_D以及使能信號(hào)SCCB_E組成,為了節(jié)省芯片引腳,只采用了SIO_D和SIO_C。SCCB時(shí)序與I2C時(shí)序類似,SCCB總線仿真時(shí)序如圖2所示。
圖2 I2C總線仿真時(shí)序圖
SCLK為高電平,SDA由高電平變低電平,總線開(kāi)始傳輸;SCLK為高電平,SDA由低電平變高電平,總線傳輸結(jié)束。SCCB為串行傳輸,每次傳送一個(gè)字節(jié)。通過(guò)SCCB設(shè)置OV7725的工作模式后,就能夠捕獲圖像數(shù)據(jù)。行同步信號(hào)有效時(shí),攝像頭連續(xù)輸出1 280個(gè)像素的一行數(shù)據(jù)。而且數(shù)據(jù)輸出只有高8位有效,低2位被去除。RGB565格式分布是{R[4:0],G[5:0],B[4:0]},先輸出RGB的高8位,然后接著輸出RGB的低8位,通過(guò)將兩個(gè)數(shù)據(jù)進(jìn)行拼接得到需要RGB數(shù)據(jù)。RGB565格式數(shù)據(jù)拼接的關(guān)鍵代碼如下:
if(byte_flag == 1'b1) ∥當(dāng)采集到兩個(gè)有效數(shù)據(jù)時(shí),開(kāi)始拼接這兩個(gè)數(shù)據(jù)
cmos_frame_data_r <= {cmos_din_r,cmos_din};∥MSB -> LSB
else
cmos_frame_data_r <= cmos_frame_data_r;∥采集完之前,輸出的數(shù)據(jù)保持不變
end
由于攝像頭采集的數(shù)據(jù)與SDRAM控制器接收數(shù)據(jù)的速度存在速度匹配問(wèn)題,需要解決跨時(shí)鐘域的問(wèn)題,通過(guò)調(diào)用FIFO模塊來(lái)實(shí)現(xiàn)。為了能夠?qū)崟r(shí)快速顯示圖像,運(yùn)用乒乓操作來(lái)完成。首先調(diào)用兩個(gè)FIFO模塊,一個(gè)用于讀取,一個(gè)用于寫(xiě)入。攝像頭采集數(shù)據(jù)首先寫(xiě)入FIFO,當(dāng)FIFO寫(xiě)滿之后,控制器直接一次性讀取FIFO中所有數(shù)據(jù)存儲(chǔ)到SDRAM的第一塊當(dāng)中;然后第一塊等待讀取,第二塊進(jìn)行寫(xiě)入,這樣達(dá)到一邊讀取一邊寫(xiě)入的效果,不僅加快顯示速度,而且充分利用了SDRAM的存儲(chǔ)空間。SDRAM控制器主要包括控制模塊、命令模塊、數(shù)據(jù)傳輸模塊三部分[9]。命令模塊主要為了實(shí)現(xiàn)控制器中的狀態(tài)機(jī)以及實(shí)現(xiàn)在SDRAM的讀操作和寫(xiě)操作,并且實(shí)現(xiàn)SDRAM的動(dòng)態(tài)刷新,保證SDRAM控制器的正常操作。數(shù)據(jù)傳輸模塊主要完成SDRAM的數(shù)據(jù)傳輸。SDRAM控制模塊移植廠家開(kāi)源的代碼,控制模塊狀態(tài)如圖3所示。
圖3 控制模塊狀態(tài)圖
步驟一:計(jì)算Gy和Gx與模板每行的乘積
if(!rst_n) begin
Gx_temp1 <= 0;
Gx_temp2 <= 0;
Gx_data <= 0;
end else begin
Gx_temp1 <= matrix_p13 + (matrix_p23 << 1) + matrix_p33;∥postive result
Gx_temp2 <= matrix_p11 + (matrix_p21 << 1) + matrix_p31;∥negetive result
Gx_data <= (Gx_temp1 >= Gx_temp2) ? Gx_temp1 - Gx_temp2 :Gx_temp2 - Gx_temp1;
end
步驟二:計(jì)算平方和
if(!rst_n)
Gxy_square <= 0;
else
Gxy_square <= Gx_data * Gx_data + Gy_data * Gy_data;
步驟三:計(jì)算平方根
SQRT u_SQRT
(.radical(Gxy_square),
.q(Dim),
.remainder ());
在VGA顯示過(guò)程中,需要同步信號(hào)來(lái)決定掃描的開(kāi)始以及結(jié)束。每一行有效的時(shí)間和整體掃描的時(shí)間不同,而且要小一點(diǎn),因此在程序的設(shè)計(jì)過(guò)程中需要考慮。掃描的時(shí)序主要根據(jù)顯示器的基本原理進(jìn)行展開(kāi)[13-14]。用戶只需要滿足顯示的時(shí)序要求,就能夠設(shè)計(jì)完成這部分的代碼。通過(guò)modelsim完成仿真測(cè)試的VGA仿真時(shí)序圖,如圖4所示。
圖4 VGA仿真時(shí)序圖
在測(cè)試過(guò)程中,為了能夠形象看到VGA的掃描過(guò)程,筆者將行和列的像素?cái)?shù)按照一定的比例進(jìn)行減少,觀察圖4,當(dāng)行計(jì)數(shù)值hcnt達(dá)到用戶設(shè)定的數(shù)(46),行計(jì)數(shù)清0,場(chǎng)計(jì)數(shù)vcnt增1,直到行、場(chǎng)都掃描完成,一幀圖像顯示完成。根據(jù)筆者自定義輸入信號(hào),仿真出現(xiàn)預(yù)期效果波形。由圖4可知,lcd_en(數(shù)據(jù)顯示有效期)只有在行同步信號(hào)和場(chǎng)同步信號(hào)同時(shí)為高電平時(shí)才有效。場(chǎng)計(jì)數(shù)在行計(jì)數(shù)信號(hào)計(jì)數(shù)達(dá)到終點(diǎn)時(shí)進(jìn)行計(jì)數(shù),整個(gè)VGA時(shí)序電路由hcnt和vcnt的值決定。
系統(tǒng)各個(gè)模塊設(shè)計(jì)完成后,將設(shè)計(jì)好的系統(tǒng)下載到FPGA開(kāi)發(fā)板中,系統(tǒng)能夠?qū)崿F(xiàn)圖像的采集、處理和顯示?;贔PGA的視頻圖像處理系統(tǒng),不僅具有體積小、成本低、靈活性高和實(shí)時(shí)性強(qiáng)等特點(diǎn),而且系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)易于小型化、集成化,很容易在一片硅片上實(shí)現(xiàn)邏輯功能強(qiáng)大的電路。憑借這樣的優(yōu)點(diǎn),系統(tǒng)方便攜帶以及容易安裝,對(duì)移動(dòng)式監(jiān)控有利。另外,系統(tǒng)的算法全部由硬件電路實(shí)現(xiàn),各個(gè)模塊并行運(yùn)行,能夠滿足對(duì)圖像實(shí)時(shí)處理的效果。系統(tǒng)采集到的圖像以及邊緣檢測(cè)算法效果如圖5所示。
圖5 系統(tǒng)采集到的圖像以及邊緣檢測(cè)算法效果
文中設(shè)計(jì)的基于FPGA的視頻采集系統(tǒng)能夠?qū)崟r(shí)獲取現(xiàn)場(chǎng)圖像,同時(shí)經(jīng)過(guò)Sobel邊緣檢測(cè)能夠?qū)ΜF(xiàn)場(chǎng)圖像獲取清晰的邊緣。該視頻采集系統(tǒng)具有低成本、低功耗、小體積以及高圖像質(zhì)量的優(yōu)點(diǎn),可以方便地應(yīng)用于到圖像采集與處理以及視頻監(jiān)控項(xiàng)目中;同時(shí)通過(guò)硬件FPGA實(shí)現(xiàn)圖像的邊緣檢測(cè),能夠集成于攝像頭內(nèi),采集的圖像不需要上位機(jī)軟件處理,節(jié)約后續(xù)圖像處理的時(shí)間。
[1] 李慧敏,樊記明,楊笑.基于STM32和OV7670的圖像采集與顯示系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2016,35(9):114-117.
[2] 劉紫燕,馮亮,祁佳.一種基于FPGA的實(shí)時(shí)視頻跟蹤系統(tǒng)硬件平臺(tái)設(shè)計(jì)[J].傳感器與微系統(tǒng),2014,33(7):98-102.
[3] 梁皓東,張國(guó)平.基于ARM9+FPGA的便攜式視頻展示臺(tái)的設(shè)計(jì)[J].電視技術(shù),2014(3):60-63.
[4] 董心雨,黃俊.基于FPGA的紅外圖像采集與傳輸系統(tǒng)設(shè)計(jì)[J].半導(dǎo)體光電,2012,33(4):579-581,587.
[5] 陳序,卿粼波,何小海.基于FPGA的高速圖像處理平臺(tái)設(shè)計(jì)[J].成都信息工程學(xué)院學(xué)報(bào),2013(2):114-118.
[6] 李善壽,方潛生.基于FPGA和CIS的人民幣圖像采集系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2010,29(10):97-99.
[7] 孫春鳳,袁峰,丁振良.基于FPGA的多通道高速CMOS圖像采集系統(tǒng)[J].計(jì)算機(jī)工程與應(yīng)用,2008(21):46-48,105.
[8] 楊帆,張皓,馬新文,等.基于FPGA的圖像處理系統(tǒng)[J].華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,43(2):119-123.
[9] 李明,趙勛杰,毛偉民.Sobel邊緣檢測(cè)的FPGA實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(16):44-46.
[10] 艾揚(yáng)利,楊兵.基于FPGA的Sobel算子并行計(jì)算研究[J].現(xiàn)代電子技術(shù),2005(9):42-43.
[11] 李勇,許軍,張新喜,等.基于FPGA的高速圖像處理系統(tǒng)設(shè)計(jì)[J].裝甲兵工程學(xué)院學(xué)報(bào),2008(3):54-58.
[12] 崔躍.FPGA在圖像處理中的應(yīng)用[J].中國(guó)新通信,2008(9):68-71.
[13] 王嘯林,李玉惠.基于FPGA的圖像處理系統(tǒng)研究[J].儀器儀表用戶,2006(6):10-11.
[14] 鄒慶華,邵瑞.基于FPGA的視頻圖像處理系統(tǒng)研究[J].信息通信,2016(11):78-79.