付 濤 姚遠(yuǎn)程 秦明偉
(西南科技大學(xué)信息工程學(xué)院特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室 四川綿陽 621010)
?
高速圖像邊緣提取系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
付濤姚遠(yuǎn)程秦明偉
(西南科技大學(xué)信息工程學(xué)院特殊環(huán)境機(jī)器人技術(shù)四川省重點(diǎn)實(shí)驗(yàn)室四川綿陽621010)
摘要:針對Camera Link高速圖像接口,介紹了并行流水設(shè)計(jì)技術(shù)及其硬件實(shí)現(xiàn)方案,經(jīng)驗(yàn)證,相比PC機(jī)或者ARM平臺,系統(tǒng)圖像數(shù)據(jù)處理速度可提高50~100倍,實(shí)現(xiàn)了設(shè)計(jì)要求,且對CoaXPress等接口的高速圖像處理系統(tǒng)設(shè)計(jì)具有很高的參考價(jià)值。
關(guān)鍵詞:FPGA并行設(shè)計(jì)流水線設(shè)計(jì)圖像處理
傳統(tǒng)的圖像邊緣提取以及一些相關(guān)的圖像處理算法大多數(shù)都是在PC機(jī)軟件上進(jìn)行,雖然在一定范圍內(nèi)能得到較好的效果,但是在高速情況下其性能和處理時(shí)間完全制約了整個系統(tǒng)的開發(fā),此外,一些專用的圖像處理系統(tǒng)雖然在性能與響應(yīng)時(shí)間上能滿足要求,但往往規(guī)模龐大,價(jià)格昂貴,使得其在許多領(lǐng)域的應(yīng)用受到了一定的限制。本文提出一種將Laplace圖像邊緣提取算法與并行流水技術(shù)相結(jié)合的硬件實(shí)現(xiàn)方案,成功構(gòu)建一種基于FPGA的高速圖像邊緣提取系統(tǒng),并最終在Xilinx V6 ML605開發(fā)板上驗(yàn)證實(shí)現(xiàn)。
1系統(tǒng)總體設(shè)計(jì)
系統(tǒng)主要是在高速情況下完成對圖像邊緣的提取工作,系統(tǒng)以Camera Link接口最大傳輸數(shù)據(jù)率850 MB(實(shí)際相機(jī)數(shù)據(jù)率低于850 MB)為設(shè)計(jì)目標(biāo),即每秒鐘輸入FPGA處理器的像素點(diǎn)數(shù)為850 M個,基本要求2 352×1 728像素點(diǎn),60 幀/s,總體所占用FPGA資源不超過60%,以確保FPGA可靠運(yùn)行和后續(xù)算法的升級。
系統(tǒng)硬件架構(gòu)主要由Falcon 4M30工業(yè)相機(jī)、Camera Link接口、FPGA芯片xc6vlx240t、DDR3存儲器、HDMI顯示器等部分組成,其硬件構(gòu)架圖如圖1所示。
Teledyne DALSA公司生產(chǎn)的400 W像素工業(yè)相機(jī)Falcon 4M30主要完成視頻流圖像數(shù)據(jù)的采集工作,然后通過Camera Link接口傳送給Xilinx FPGA芯片xc6vx240t,DDR3存儲器完成視頻流數(shù)據(jù)的緩存,最后系統(tǒng)通過HDMI接口傳輸給顯示器顯示驗(yàn)證。
圖1 系統(tǒng)硬件架構(gòu)
FPGA芯片xc6vx240t是整個系統(tǒng)的核心,主要完成對Camera Link接口數(shù)據(jù)的接收、DDR3存儲器的控制、高速圖像的邊緣提取以及HDMI顯示的輸出控制,并且系統(tǒng)預(yù)設(shè)有PCI-E 3.0接口,便于與上位機(jī)的高速數(shù)據(jù)交互。
2Laplace算法
Laplace算法是幾種常見的圖像邊緣檢測算法之一,其實(shí)質(zhì)就是利用圖像灰度變化的二階梯度來描述兩種不同類型的圖像邊緣[1],在FPGA上實(shí)現(xiàn)Laplace算法的整個過程如圖2所示。首先對送入的各個像素點(diǎn)數(shù)據(jù)進(jìn)行梯度值求取,然后將求取的梯度值與相應(yīng)的閾值進(jìn)行比較,大于該閾值的則為邊緣點(diǎn),反之則為非邊緣點(diǎn),最后對所得結(jié)果進(jìn)行二值化操作,即可得到圖像邊緣。
圖2Laplace算法FPGA實(shí)現(xiàn)過程
Fig.2Laplace algorithm implementation process on FPGA
根據(jù)Laplace算法可知,圖像第n個像素點(diǎn)的二階梯度強(qiáng)度表達(dá)式如下[2]:
|▽2fi(x,y)|≈{[fi(x+1,y)-fi(x,y)]-
[fi(x,y)-fi(x-1,y)]}+
{[fi(x,y+1)-fi(x,y)]-
[fi(x,y)-fi(x,y-1)]}=
(1)
fi(x+1,y)+fi(x-1,y)+
fi(x,y+1)+fi(x,y-1)-4fi(x,y)
通過圖2與圖像像素點(diǎn)二階梯度強(qiáng)度表達(dá)式可知,Laplace算法實(shí)現(xiàn)過程的關(guān)鍵步驟——梯度值求取,其實(shí)質(zhì)就是將該像素點(diǎn)3×3鄰域內(nèi)的像素值與匹配矩陣進(jìn)行卷積運(yùn)算,匹配矩陣如式(2)所示。閾值判斷和二值化操作模塊可由一個比較器來完成,所以,高速圖像邊緣提取系統(tǒng)能否實(shí)現(xiàn),關(guān)鍵在于Laplace像素梯度值求取過程能否實(shí)現(xiàn)高速操作。
(2)
3高速圖像邊緣提取設(shè)計(jì)
系統(tǒng)以Camera Link接口最大數(shù)據(jù)率850 MB(實(shí)際相機(jī)數(shù)據(jù)率低于850 MB)為設(shè)計(jì)目標(biāo),也即每秒鐘輸入FPGA處理器的像素點(diǎn)數(shù)為850 M個,F(xiàn)PGA內(nèi)部工作時(shí)鐘遠(yuǎn)低于850 MHz,因此,Laplace圖像邊緣提取算法無法直接在FPGA上實(shí)現(xiàn)。
3.1流水線設(shè)計(jì)技術(shù)
由于圖像邊緣提取過程中每個像素點(diǎn)都要被多次調(diào)用,且整個數(shù)據(jù)處理過程是單向的,即沒有反饋運(yùn)算或者迭代運(yùn)算,因此,在系統(tǒng)設(shè)計(jì)時(shí),首先考慮采用流水線設(shè)計(jì)技術(shù)來提高系統(tǒng)的工作頻率。
流水線設(shè)計(jì)技術(shù)就是將原本一個時(shí)鐘周期完成的較大的組合邏輯通過合理的切割后,由多個時(shí)鐘周期完成,其思路如圖3所示。
假設(shè)一個完整數(shù)據(jù)處理過程需要4個處理步驟
圖3 流水線設(shè)計(jì)技術(shù)
完成,從有有效數(shù)據(jù)(in1)輸入的第一個時(shí)鐘周期(clk1)開始,到第4個時(shí)鐘周期(clk4)截止,整個數(shù)據(jù)處理過程完成,也就是說,流水線設(shè)計(jì)技術(shù)在開始處理時(shí)需要一定的時(shí)間,但是后面卻可以不間斷地輸出有效數(shù)據(jù),從而有效提高系統(tǒng)處理速度。如果系統(tǒng)不采用流水線設(shè)計(jì)技術(shù),那么處理一個有效數(shù)據(jù)就需耗費(fèi)4個時(shí)鐘周期,而采用流水線設(shè)計(jì)技術(shù)則能夠?qū)⑾到y(tǒng)處理速度提高近4倍[3]。
系統(tǒng)Laplace算法與流水線設(shè)計(jì)技術(shù)的結(jié)合可以通過像素緩存結(jié)構(gòu)來實(shí)現(xiàn),具體實(shí)現(xiàn)結(jié)構(gòu)有并行行緩存和串行行緩存兩種,如圖4所示,并行行緩存比串行行緩存緩存長度要長一點(diǎn),其優(yōu)點(diǎn)是行緩存的長度只與圖像寬度大小有關(guān),與匹配矩陣的大小無關(guān)。
圖4 Laplace算法流水線設(shè)計(jì)實(shí)現(xiàn)結(jié)構(gòu)
3.2并行技術(shù)設(shè)計(jì)
目前有效提高系統(tǒng)處理速度最重要和最有效的方法就是大量地并行,并行結(jié)構(gòu)包括并發(fā)性和同時(shí)性二重含義。并發(fā)性指的是兩個或多個事件在同一時(shí)間間隔內(nèi)發(fā)生,同時(shí)性指的是兩個或多個事件在同一時(shí)刻發(fā)生。為提高系統(tǒng)的并行性,可以通過各種各樣的技術(shù)途徑來達(dá)到,主要包括時(shí)間重疊、資源重復(fù)和資源共享等[4]。
傳統(tǒng)的圖像處理平臺大多數(shù)都是基于串行計(jì)算機(jī)結(jié)構(gòu),它的基本工作方式為,將操作級算法分解成一連串由ALU(Arithmetic Logic Unit)執(zhí)行的算術(shù)或邏輯電路操作來串行執(zhí)行所有的計(jì)算,算法被編譯成一連串的指令[5],每一個時(shí)鐘周期CPU處理一個輸入樣點(diǎn)并計(jì)算出一個輸出樣點(diǎn)。當(dāng)對其進(jìn)行J階展開變換后,就可以將原有的串行架構(gòu)展開成J個并行架構(gòu),此時(shí)每一個時(shí)鐘周期就可以處理J個輸入樣點(diǎn)并計(jì)算出J個輸出樣點(diǎn),這樣系統(tǒng)的處理周期就會縮短為原來的1/J倍(即處理速率提高到原來的J倍)。
并行處理技術(shù)思路可以用圖5來表達(dá),圖5(a)所示為一個流水結(jié)構(gòu)的FIR濾波器,假設(shè)其以600 M時(shí)鐘、8 bit位寬輸入數(shù)據(jù),但是FPGA工作時(shí)鐘無法達(dá)到600 MHz,因此,在現(xiàn)有FPGA開發(fā)板上無法實(shí)現(xiàn),對其按照并行算法原理進(jìn)行處理,以并行結(jié)構(gòu)實(shí)現(xiàn)該算法,圖5(b)所示為該流水結(jié)構(gòu)FIR濾波器的信號流圖,經(jīng)過流圖展開,可以得到其3階展開對應(yīng)的流圖5(c),圖5(d)為其對應(yīng)的3階展開并行結(jié)構(gòu)FIR濾波器實(shí)現(xiàn)結(jié)構(gòu)。
從圖5(d)可以看出,輸入數(shù)據(jù)被分為3路(x(3k),x(3k+1),x(3k+2)),由此,數(shù)據(jù)率變?yōu)樵瓉淼?/3,也即600 MHz/3 = 200 MHz,也就是說FPGA工作時(shí)鐘為200 MHz即可。
圖5 FIR濾波器的3階并行設(shè)計(jì)
Laplace算法在流水線設(shè)計(jì)的基礎(chǔ)上2階并行展開實(shí)現(xiàn)結(jié)構(gòu)如圖6所示。
圖6 Laplace算法2階并行展開實(shí)現(xiàn)結(jié)構(gòu)
通過圖6與圖4對比可知,Lapalce算法流水線二階并行展開結(jié)構(gòu)相對于單純流水線結(jié)構(gòu)需要更多的FPGA資源,如表1所示,但是通過并行技術(shù)處理,系統(tǒng)的數(shù)據(jù)吞吐率和數(shù)據(jù)處理能力得到有效提高,針對850 M的數(shù)據(jù)率,200 MHz的FPGA工作頻率完全足夠。
表1 資源消耗對照表
整個系統(tǒng)通過verilog編程描述,具體行緩存的實(shí)現(xiàn)可以通過RAM的存儲、FIFO的存儲以及移位寄存器來實(shí)現(xiàn),其中以移位寄存器最為簡便,直接調(diào)用Xilinx或Altera公司提供的移位寄存器IP核即可,相機(jī)輸入圖像為2352×1728,則共需移位1 728個像素點(diǎn)。
4系統(tǒng)驗(yàn)證實(shí)現(xiàn)
本文采用Xilinx公司的System Generator軟件進(jìn)行硬件協(xié)同仿真[6]。硬件協(xié)同仿真實(shí)際上就是PC機(jī)和開發(fā)板的協(xié)同仿真,將PC機(jī)上搭建的硬件模塊下載到開發(fā)板中進(jìn)行仿真,硬件模塊和PC共享存儲器交換數(shù)據(jù)[7],其中Subsystem里面封裝的是緩存器模塊,Subsystem6里面封裝的是圖像濾波與邊緣檢測模塊,Gateway In為數(shù)據(jù)讀入模塊,Gateway Out為數(shù)據(jù)輸出模塊,硬件協(xié)同仿真結(jié)果如圖7所示,圖7(a)為原始圖像,圖7(b)為系統(tǒng)硬件仿真結(jié)果。
圖7 系統(tǒng)硬件協(xié)同仿真結(jié)果
系統(tǒng)通過verilog語言編程描述后,通過ISE軟件在Xilinx的V6ML605開發(fā)板上實(shí)現(xiàn),在整個驗(yàn)證過程中,將Falcon 4M30工業(yè)相機(jī)設(shè)置為Mode 15模式,在該模式下,Camera Link接口工作在Medium模式下,接口時(shí)鐘為80 MHz,單個接口每秒輸入圖像數(shù)據(jù)為80 MHz×8 bit×4,傳輸圖像為2352×1728像素點(diǎn),60 幀/s,圖像經(jīng)Camera Link接口傳入FPGA進(jìn)行數(shù)據(jù)處理,然后經(jīng)DDR3緩存后,通過HDMI接口傳入顯示器顯示,由于相機(jī)所采圖像分辨率太高,系統(tǒng)對所得結(jié)果數(shù)據(jù)進(jìn)行了適當(dāng)?shù)纳釛壧幚?,?shí)現(xiàn)結(jié)果如圖8所示,圖8(a)、圖8(b)為簡單背景下的圖像邊緣檢測效果,圖8(c)、圖8(d)為復(fù)雜背景下的圖像邊緣檢測效果。從圖8可以看出,系統(tǒng)很好地完成了圖像邊緣的提取功能,達(dá)到設(shè)計(jì)要求,驗(yàn)證了本系統(tǒng)設(shè)計(jì)思路的正確性。
在高速情況下,普通PC機(jī)或ARM平臺根本無法完成相應(yīng)功能 ,本系統(tǒng)通過流水并行設(shè)計(jì)技術(shù),除高速I/O時(shí)鐘和Camera Link接口時(shí)鐘外,所有程
圖8 系統(tǒng)實(shí)現(xiàn)效果
序均由200 MHz系統(tǒng)時(shí)鐘驅(qū)動,完全足以處理Camera Link接口所傳輸?shù)母咚賵D像數(shù)據(jù),在邏輯資源和內(nèi)存帶寬足夠的情況下,還可以更多路的合理并行展開,從而獲得更高的圖像數(shù)據(jù)處理能力,相對于傳統(tǒng)圖像處理平臺,系統(tǒng)圖像數(shù)據(jù)處理能力可提高50~100倍,針對CoaXPress等高速接口,均可按照該系統(tǒng)的設(shè)計(jì)思路,實(shí)現(xiàn)圖像數(shù)據(jù)的實(shí)時(shí)處理。
參考文獻(xiàn)
[1]阮秋琦.數(shù)字圖像處理基礎(chǔ)[M].北京:清華大學(xué)出版社,2013.
[2]侯寶臨,付濤.基于FPGA的Laplace邊緣檢測算法設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),2015,39(9):44-47.
[3]吳厚航.深入淺出玩轉(zhuǎn)FPGA[M].北京:北京航空航天大學(xué)出版社,2013.
[4]侯寶臨.寬帶衛(wèi)星通信系統(tǒng)中的高速信號處理技術(shù)研究[D].四川綿陽:西南科技大學(xué)碩士學(xué)位論文,2013.
[5]BAILEY D G. 基于FPGA的嵌入式圖像處理系統(tǒng)設(shè)計(jì)[M].原魁,等譯.北京:電子工業(yè)出版社,2013.
[6]XILINX.System Generator for DSP Getting Started Guide[Z]. June,2008.
[7]陸佳華,江舟,馬岷.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南:基于Xilinx Zynq[M].北京:機(jī)械工業(yè)出版社,2013.
Design and Implementation of High-speed Edge Extraction System
FU Tao, YAO Yuan-cheng, QIN Ming-wei
(RobotTechnologyUsedforSpecialEnvironmentKeyLaboratory,SchoolofInformationEngineering,SouthwestUniversityofScienceandTechnology,Mianyang621010,Sichuan,China)
Abstract:For the camera link high-speed image interface, it introduces the parallel and pipelining operation technology and the implementation scheme on hardware. Compared with the PC or ARM platform, the image data processing power of system can be improved 50~100 times, it achieved the design requirements. It also has a high reference value for the design of high-speed image processing system with CoaXPress inference.
Key words:FPGA; High-speed; Parallel; Pipelining; Image Processing
中圖分類號:TN391
文獻(xiàn)標(biāo)志碼:A
文章編號:1671-8755(2016)01-0072-05
作者簡介:付濤(1989—),男,碩士,研究方向?yàn)檐浖o線電、高速圖像處理。E-mail:409572487@qq.com
基金項(xiàng)目:國防基礎(chǔ)科研計(jì)劃項(xiàng)目(B3120133002)。
收稿日期:2015-11-09