張?zhí)?,朱建?guó),宋玉貴,王 永
(1.西安工業(yè)大學(xué) 光電工程學(xué)院,西安 710021;2.中國(guó)人民解放軍63850部隊(duì),吉林 白城 137000)
在彈箭研制、生產(chǎn)與訓(xùn)練過(guò)程中,通常需要對(duì)彈箭的飛行參數(shù)如位置、姿態(tài)等進(jìn)行跟蹤測(cè)試。隨著現(xiàn)代高超音速?gòu)椉夹g(shù)的飛速發(fā)展,使得相關(guān)的測(cè)試手段也愈發(fā)面臨挑戰(zhàn)。高速攝影技術(shù)[1]是目前用于跟蹤測(cè)量高速?gòu)椉某S檬侄?,為了捕獲更高速的目標(biāo),高速攝影的速度也不斷提高,相應(yīng)的圖像數(shù)據(jù)采集速度也需要急劇提升,而且需要配備額外的精確觸發(fā)設(shè)備以減少無(wú)效圖像數(shù)據(jù)帶來(lái)的存儲(chǔ)、傳輸?shù)瘸杀鹃_(kāi)銷(xiāo)。這樣就會(huì)使測(cè)試系統(tǒng)變得龐大,可移動(dòng)性變差,如果圖像采集系統(tǒng)能夠配備實(shí)時(shí)完善的動(dòng)態(tài)圖像識(shí)別功能將會(huì)大大簡(jiǎn)化此類(lèi)高速圖像測(cè)試測(cè)量系統(tǒng)的架構(gòu),提高系統(tǒng)的易部署性能。
運(yùn)動(dòng)目標(biāo)檢測(cè)技術(shù)是利用計(jì)算機(jī)視覺(jué)技術(shù)去除視頻中時(shí)間和空間中的冗余信息以提取空間位置變化的過(guò)程,是計(jì)算機(jī)視覺(jué)領(lǐng)域的重要分支[2],也是目標(biāo)跟蹤、運(yùn)動(dòng)圖像編碼、安全監(jiān)控等視頻分析及處理應(yīng)用的關(guān)鍵步驟[3]。
目前主流的移動(dòng)目標(biāo)檢測(cè)算法主要分為3類(lèi)[4]:背景差分法[5-7]、光流法[8-9]和幀間差分法[10-12]。文獻(xiàn)[13]對(duì)常見(jiàn)的視頻序列中的運(yùn)動(dòng)目標(biāo)檢測(cè)方法進(jìn)行研究和分析, 并對(duì)這些方法的優(yōu)越性和不足進(jìn)行了比較,背景差分法檢測(cè)效果較好,可以滿足實(shí)時(shí)處理的要求,但是最終檢測(cè)的好壞取決于背景圖像的構(gòu)造,如果構(gòu)造不好再則不能及時(shí)地適應(yīng)環(huán)境的變化[14];光流法可以有效地識(shí)別出運(yùn)動(dòng)目標(biāo)但是需要專(zhuān)業(yè)的硬件支持,而且對(duì)FPGA內(nèi)部資源要求很高; 幀間差分算法是最常用的目標(biāo)圖像檢測(cè)算法,但是由于是利用相鄰兩幀的圖像進(jìn)行處理容易發(fā)生“空洞”以及針對(duì)速度快的目標(biāo)容易出現(xiàn) “雙影”現(xiàn)象[15]。
本文在傳統(tǒng)背景差分算法的基礎(chǔ)上進(jìn)行優(yōu)化,利用FPGA特殊的結(jié)構(gòu),通過(guò)乒乓操作實(shí)現(xiàn)背景的實(shí)時(shí)更新,再通過(guò)流水線操作完成背景差處理,檢測(cè)到動(dòng)態(tài)目標(biāo),相對(duì)傳統(tǒng)算法,新算法對(duì)FPGA操作平臺(tái)更加容易實(shí)現(xiàn)同時(shí)對(duì)環(huán)境的適應(yīng)性更強(qiáng),并且在對(duì)圖像進(jìn)行二值化處理后再進(jìn)行低通濾波處理,可以有效地降低噪聲污染,對(duì)動(dòng)態(tài)圖像的捕獲率可以達(dá)到99%。
背景差分算法主要需要通過(guò)以下操作完成:背景建模、前景檢測(cè)以及模型更新。該算法的基本思想將此刻獲取的每一幀圖像與事先存儲(chǔ)的背景圖像進(jìn)行做差處理,對(duì)差值圖像數(shù)據(jù)進(jìn)行二值化處理,超出閾值的動(dòng)態(tài)區(qū)域則是目標(biāo)圖像。該算法設(shè)計(jì)簡(jiǎn)單,通過(guò)做差可以直接得出運(yùn)動(dòng)目標(biāo)的位置、形狀以及大小等信息,能夠獲取完整的價(jià)目標(biāo)區(qū)域。背景差分圖像算法中背景圖像反映的是當(dāng)前的圖像背景,包括當(dāng)前背景中靜止的以及運(yùn)動(dòng)的背景圖像信息,當(dāng)前幀包含了感興趣的運(yùn)動(dòng)目標(biāo)信息和環(huán)境背景信息[16]。通過(guò)對(duì)當(dāng)前圖像與背景圖像做差,即做差所得到的信息就是當(dāng)前感興趣的運(yùn)動(dòng)目標(biāo)。該算法的原理如圖1所示。
圖1 傳統(tǒng)背景差分法原理圖
傳統(tǒng)的背景差分算法,在最初的時(shí)候,捕獲一張圖片進(jìn)行數(shù)據(jù)分析,然后將這張圖片作為背景圖像存儲(chǔ)到存儲(chǔ)器,將采集到的實(shí)時(shí)圖像作為當(dāng)前圖像,然后將二者進(jìn)行做差處理,直到獲取到目標(biāo)圖像前,背景都是不變的,但實(shí)際上,不同時(shí)刻環(huán)境變化很大,所以外部干擾很大,因此傳統(tǒng)的背景差分算法不能應(yīng)對(duì)復(fù)雜環(huán)境下的背景變化,只適合單一背景。
改進(jìn)的背景差分算法相針對(duì)背景建模進(jìn)行了優(yōu)化,該算法是通過(guò)將每次采集到的圖像都先進(jìn)行緩存,然后將下一幀采集到的圖像與上一刻采集到的圖像進(jìn)行做差,做差得到的就是目標(biāo)圖像。由于本系統(tǒng)兩幀圖像之間時(shí)間間隔只有7.4 μs,所以可以相當(dāng)于上一幀的圖像就是當(dāng)前幀的圖像背景,這樣就可以保證背景是實(shí)時(shí)變化的。做差處理后,再進(jìn)行二值化處理,并且對(duì)二值化化后的數(shù)據(jù)進(jìn)行了低通濾波處理,即判斷是否有相鄰的幾個(gè)像素點(diǎn)均為1,這樣可以有效排除一些微小信號(hào),降低外部蚊蟲(chóng)以及一些微小信號(hào)的干擾,從而達(dá)到高效的捕獲率。改進(jìn)的算法原理如圖2所示。
圖2 改進(jìn)的背景差分原理圖
1)選取第一行圖像F0作為初始背景圖像B0;
2)求當(dāng)前圖像Pt與背景圖像Bt的差分圖像;
Dt=Pt-Bt
(1)
3)對(duì)差分后的圖像用閾值T進(jìn)行二值化處理:
(2)
4)對(duì)二值化后的數(shù)據(jù)進(jìn)行低通濾波處理:
(3)
5)當(dāng)對(duì)兩行圖像數(shù)據(jù)做過(guò)差分處理后,就將第k行數(shù)據(jù)作為背景圖像,第k+1行數(shù)據(jù)寫(xiě)入新的圖像數(shù)據(jù),作為當(dāng)前圖像,對(duì)其做差即可得到目標(biāo)圖像;下一次將第k+1行圖像作為背景,寫(xiě)入第k行的圖像作為當(dāng)前圖像,做差即可,依次反復(fù)做差即可得到完整的動(dòng)態(tài)目標(biāo)。
該系統(tǒng)采用自頂向下模塊化的設(shè)計(jì)思想將系統(tǒng)分為圖像數(shù)據(jù)接收模塊、目標(biāo)提取模塊、DDR3讀寫(xiě)控制模塊和USB傳輸模塊4個(gè)模塊,系統(tǒng)框圖如圖3所示。
圖3 系統(tǒng)框圖
Camera Link是一種基于視頻應(yīng)用發(fā)展而來(lái)的接口技術(shù),是美國(guó)國(guó)家半導(dǎo)體實(shí)驗(yàn)室于2000年推出的一種通信協(xié)議,主要是針對(duì)視頻輸出與采集卡之間數(shù)據(jù)傳輸速度不匹配的問(wèn)題[17]。CameraLink通信協(xié)議是基于Channel Link技術(shù)發(fā)展的,Channel Link標(biāo)準(zhǔn)規(guī)定了圖像數(shù)據(jù)在傳輸過(guò)程中采用LVDS信號(hào)進(jìn)行數(shù)據(jù)傳輸,4對(duì)LVDS信號(hào)在驅(qū)動(dòng)器端并行傳輸,每路LVDS信號(hào)按照7∶1的比例串行序列化,每路LVDS信號(hào)在一個(gè)時(shí)鐘周期內(nèi)傳輸7 bit數(shù)據(jù),4路LVDS總共28 bit數(shù)據(jù),24位有效數(shù)據(jù),4位信號(hào)位。然后還有1路LVDS信號(hào)傳輸時(shí)鐘信號(hào)。
Camera Link標(biāo)準(zhǔn)定義了從A到H共8個(gè)端口,它們都是邏輯8位的字,低位用bit0,高位用bit7表示。Camera Link接口共有3種配置,分別為初級(jí)(Base)、中級(jí)(Medium)和高級(jí)( Full),在Full模式下的傳輸速率最高可以達(dá)到5.44 Gbps。在 Base配置模式下,只需一塊 Channel Link接口芯片;而在 Medium配置模式下,則需要兩塊Channel Link接口芯片;在 Full配置模式下就需要3塊Channel Link接口芯片[18]。3者需要的連接器、解碼芯片以及端口分配情況如表1所示。
表1 端口分配以及連接器數(shù)量
本系統(tǒng)采用的是外部芯片實(shí)現(xiàn)對(duì)Camera Link協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行編碼、解碼。數(shù)據(jù)輸入端通過(guò)芯片DS90CR287實(shí)現(xiàn)將28 bit并行數(shù)據(jù)轉(zhuǎn)為4對(duì)LVDS信號(hào)進(jìn)行傳輸,數(shù)據(jù)接收端通過(guò)外部芯片DS90CR288芯片將4對(duì)LVDS信號(hào)按照Camera Link協(xié)議轉(zhuǎn)為28 bit并行數(shù)據(jù)傳輸給FPGA的IO部分。
圖4為相機(jī)Base模式下輸出的時(shí)序圖,Clk是像素的同步時(shí)鐘,F(xiàn)val為幀有效信號(hào),Lval為行有效信號(hào),Data為數(shù)據(jù)信號(hào),只有當(dāng)行有效信號(hào)為高電平時(shí),此時(shí)在像素時(shí)鐘上升沿采集到的數(shù)據(jù)才為有效數(shù)據(jù)[19]。Medium模式可以理解為等同兩個(gè)Base模式在同時(shí)進(jìn)行傳輸數(shù)據(jù),一個(gè)通過(guò)A~C端口傳輸,另一個(gè)則通過(guò)D~F端口進(jìn)行傳輸數(shù)據(jù);Full模式則可以理解為同時(shí)3個(gè)Base模式在進(jìn)行數(shù)據(jù)傳輸,但是第3個(gè)Base模式不是傳輸24位數(shù)據(jù)而是傳輸16位數(shù)據(jù),前兩個(gè)與Medium相同,第3個(gè)則傳輸G~H兩個(gè)端口數(shù)據(jù)。
圖4 輸出時(shí)序圖
由于本設(shè)計(jì)采用的線陣相機(jī),行頻為140 kHz,一幀圖像有4 096個(gè)像素點(diǎn),每個(gè)像素點(diǎn)8位,因此由公式(4)算出每秒采集的數(shù)據(jù)量為546.875 MB,由于本設(shè)計(jì)采用的時(shí)鐘是80 MHz時(shí)鐘,因此base或者medium模式均不能滿足數(shù)據(jù)的實(shí)時(shí)傳輸,因此本設(shè)計(jì)采用Camera Link Full模式進(jìn)行數(shù)據(jù)采集。
140000×4096×8÷8÷1024÷1024=546.875 MB
(4)
為了接收高速線陣相機(jī)傳輸過(guò)來(lái)的數(shù)據(jù),考慮到FPGA特殊的結(jié)構(gòu),該模塊采用并行設(shè)計(jì),利用3個(gè)fifo同時(shí)接收相機(jī)傳輸來(lái)的8組數(shù)據(jù),將A-C寫(xiě)入一個(gè)fifo,D-F寫(xiě)入第二個(gè)fifo,G-H寫(xiě)入第三個(gè)fifo,只有當(dāng)三個(gè)fifo均寫(xiě)滿數(shù)據(jù)后,表示此時(shí)成功接收到圖像數(shù)據(jù)。圖像接收模塊的仿真如圖5所示,圖中fval_r3表示幀有效,fifo_wr_en為高電平表示此時(shí)數(shù)據(jù)有效,準(zhǔn)備寫(xiě)入fifo1;同理fifo_wr_en_1為高電平表示此時(shí)可以把數(shù)據(jù)寫(xiě)入fifo2,fifo_wr_en_2為高表示此時(shí)可以把數(shù)據(jù)寫(xiě)入fifo3。當(dāng)檢測(cè)到3個(gè)fifo里均有數(shù)據(jù)時(shí),且寫(xiě)滿時(shí),再開(kāi)始進(jìn)入下一個(gè)模塊處理。
圖5 圖像接收模塊的仿真圖
為了滿足動(dòng)態(tài)目標(biāo)圖像的識(shí)別以及將檢測(cè)到的有效的目標(biāo)圖像信息傳輸?shù)缴衔粰C(jī),在FPGA設(shè)計(jì)中采用并行流水線模塊設(shè)計(jì),并行設(shè)計(jì)如圖6所示。將該系統(tǒng)分為兩個(gè)子模塊進(jìn)行設(shè)計(jì):動(dòng)態(tài)目標(biāo)識(shí)別模塊以及DDR3數(shù)據(jù)緩存模塊,由于FPGA并行操作的特點(diǎn),兩個(gè)模塊同時(shí)進(jìn)行操作。在動(dòng)態(tài)目標(biāo)識(shí)別算法中,通過(guò)流水線設(shè)計(jì)完成對(duì)圖像的動(dòng)態(tài)識(shí)別,由于通過(guò)調(diào)用fifo以及ram等FPGA內(nèi)部資源,由于fifo以及ram的特性會(huì)造成幾個(gè)時(shí)鐘延時(shí),因此相對(duì)原始數(shù)據(jù)采集輸入的時(shí)刻有5個(gè)時(shí)鐘周期的延時(shí),一個(gè)時(shí)鐘周期只有10 ns,所以延時(shí)50 ns,可以忽略不計(jì),從而保證動(dòng)態(tài)目標(biāo)圖像識(shí)別的實(shí)時(shí)性。在DDR3緩存模塊中,考慮到存在連續(xù)運(yùn)動(dòng)的高速目標(biāo)會(huì)被檢測(cè)到,因此將DDR3分為32個(gè)區(qū)域,用來(lái)放置不同的動(dòng)態(tài)目標(biāo),然后通過(guò)對(duì)DDR3的讀寫(xiě)將連續(xù)運(yùn)動(dòng)的目標(biāo)圖像上傳到上位機(jī)。
用動(dòng)態(tài)目標(biāo)識(shí)別模塊輸出的Flag信號(hào)來(lái)控制每一頁(yè)的讀寫(xiě),可以保證每一個(gè)目標(biāo)在每一頁(yè)被采集。
上述兩個(gè)模塊同時(shí)進(jìn)行處理,當(dāng)動(dòng)態(tài)識(shí)別模塊未檢測(cè)出目標(biāo)圖像時(shí),DDR3的數(shù)據(jù)只會(huì)在當(dāng)前頁(yè)進(jìn)行重復(fù)寫(xiě),當(dāng)檢測(cè)到目標(biāo)圖像后,此時(shí)對(duì)DDR3下一頁(yè)進(jìn)行讀寫(xiě),當(dāng)再次檢測(cè)到目標(biāo)圖像的時(shí)i,繼續(xù)寫(xiě)入下一頁(yè)。由于并行處理,大大提高了算法執(zhí)行的速度,同時(shí)通過(guò)DDR3的分頁(yè)控制可以有高效的識(shí)別出連續(xù)檢測(cè)。
圖6 并行設(shè)計(jì)框圖
2.3.1 動(dòng)態(tài)目標(biāo)識(shí)別
動(dòng)態(tài)目標(biāo)識(shí)別算法主要是在背景差分算法的基礎(chǔ)上優(yōu)化的,動(dòng)態(tài)目標(biāo)算法如圖7所示。首先將第k行、第k+1行圖像數(shù)據(jù)分別寫(xiě)入到FPGA內(nèi)部的兩個(gè)簡(jiǎn)單雙口RAM中,然后在寫(xiě)下一行圖像開(kāi)始傳輸?shù)降趉行數(shù)據(jù)存儲(chǔ)的RAM時(shí),此時(shí)將兩個(gè)RAM中數(shù)據(jù)同時(shí)讀出來(lái),對(duì)讀出的數(shù)據(jù)進(jìn)行絕對(duì)值做差處理,接著對(duì)做差之后的圖像數(shù)據(jù)進(jìn)行二值化處理,通過(guò)二值處理就可以識(shí)別出動(dòng)態(tài)目標(biāo)圖像,但是考慮到在室外會(huì)存在蚊蟲(chóng)等外部環(huán)境干擾,因此在二值化處理以后,還增加了一個(gè)低通濾波處理,即當(dāng)檢測(cè)到有連續(xù)的幾個(gè)大于閾值的像素點(diǎn)時(shí),才表明此時(shí)采集到的圖像數(shù)據(jù)為目標(biāo)圖像數(shù)據(jù)。由于采集的動(dòng)態(tài)目標(biāo)圖像只有幾厘米,最大的也就幾十厘米,因此一幅圖像所占有的像素行數(shù)非常少,通過(guò)對(duì)目標(biāo)圖像進(jìn)行500行圖像數(shù)據(jù)的延時(shí),保證采集到的圖像顯示在外接屏幕中間,當(dāng)延時(shí)結(jié)束輸出一個(gè)標(biāo)志位輸出到DDR3模塊,當(dāng)DDR3接收到該信號(hào)時(shí),開(kāi)始對(duì)原始圖像數(shù)據(jù)進(jìn)行傳輸。
圖7 動(dòng)態(tài)目標(biāo)算法框圖
圖8展示的是動(dòng)態(tài)目標(biāo)算法仿真圖,該圖通過(guò)modelsim10.7軟件仿真得出的圖,閾值(thresholdvalue)給的是14,閾值可以通過(guò)上位機(jī)經(jīng)過(guò)USB發(fā)送到FPGA端進(jìn)行閾值更改。當(dāng)進(jìn)行閾值處理后,通過(guò)判斷連續(xù)為1的值是否滿足設(shè)定的要求,設(shè)定的連續(xù)個(gè)數(shù)為6,通過(guò)判斷flag_trigNum信號(hào),此時(shí)為FFFF,滿足低通濾波要求,此時(shí)表示檢測(cè)到目標(biāo)信號(hào),輸出flag_trig_r信號(hào)給DDR3模塊,表示此時(shí)可以將數(shù)據(jù)寫(xiě)入到DDR3模塊,圖中的減數(shù)(jianshu)表示當(dāng)前圖像數(shù)據(jù),被減數(shù)(beijianshu)表示的是背景圖像。
圖8 動(dòng)態(tài)目標(biāo)算法仿真圖
2.3.2 DDR3控制模塊
DDR3(double date rate SDRAM)的中文名稱(chēng)為雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器,雙倍速率是指在工作時(shí)鐘的上下沿都會(huì)對(duì)數(shù)據(jù)進(jìn)行采樣[20]。通過(guò)上下沿采用的訪問(wèn)方式可以讓該存儲(chǔ)器相對(duì)普通存儲(chǔ)器來(lái)說(shuō),采樣頻率會(huì)提高一倍,這種采樣方式造成存儲(chǔ)速率也得到提升。DDR3由8個(gè)bank組成,每個(gè)bank都是按照行、列形式排列,并且每個(gè)bank都對(duì)應(yīng)一個(gè)片選信號(hào)(CS)。DDR3通過(guò)對(duì)bank地址以及行列地址的訪問(wèn)來(lái)進(jìn)行數(shù)據(jù)讀寫(xiě)。并且為了保證所偶數(shù)據(jù)不丟失,DDR3需要進(jìn)行定時(shí)刷新。
DDR3控制模塊是通過(guò)外掛兩片DDR3實(shí)現(xiàn)的,主要實(shí)現(xiàn)對(duì)圖像數(shù)據(jù)的實(shí)時(shí)緩存。利用XILINX提供的MIG IP核完成對(duì)DDR3的控制,首先DDR3進(jìn)入空閑狀態(tài),當(dāng)檢測(cè)到寫(xiě)狀態(tài)請(qǐng)求時(shí),此時(shí)進(jìn)入到寫(xiě)狀態(tài),當(dāng)寫(xiě)地址計(jì)數(shù)等于寫(xiě)突發(fā)地址計(jì)數(shù)的時(shí)候,此時(shí)進(jìn)入到狀態(tài)結(jié)束狀態(tài),如果不等于寫(xiě)突發(fā)地址計(jì)數(shù)的時(shí)候則繼續(xù)進(jìn)入寫(xiě)狀態(tài);同樣,對(duì)于讀數(shù)據(jù),當(dāng)檢測(cè)到都狀態(tài)請(qǐng)求時(shí),此時(shí)開(kāi)始對(duì)DDR3的數(shù)據(jù)進(jìn)行讀取,當(dāng)讀地址滿足讀突發(fā)地址計(jì)數(shù)時(shí),此時(shí)進(jìn)入狀態(tài)結(jié)束狀態(tài),反之繼續(xù)對(duì)數(shù)據(jù)進(jìn)行讀取,DDR3的讀寫(xiě)控制如圖9所示。
圖9 DDR3讀寫(xiě)控制圖
通過(guò)對(duì)DDR3地址進(jìn)行控制,實(shí)現(xiàn)將一片128 M的DDR3劃分為32個(gè)區(qū)域,同時(shí)第二片DDR3也進(jìn)行同樣的處理,就得到32個(gè)圖像緩存區(qū)域,這樣是為了實(shí)現(xiàn)可以對(duì)高速動(dòng)態(tài)圖像進(jìn)行連續(xù)采集,采集原理就是:首先將采集到的圖像數(shù)據(jù)存儲(chǔ)在第一個(gè)存儲(chǔ)空間,當(dāng)動(dòng)態(tài)目標(biāo)識(shí)別模塊檢測(cè)到動(dòng)態(tài)目標(biāo)之后,就會(huì)給DDR3一個(gè)信號(hào),此時(shí)DDR3會(huì)將圖像采集模塊輸入的數(shù)據(jù)寫(xiě)入到第二個(gè)存儲(chǔ)空間,同時(shí)將前一個(gè)存儲(chǔ)空間的數(shù)據(jù)讀出,并且往復(fù)循環(huán)讀寫(xiě),最終可以實(shí)現(xiàn)對(duì)高速連續(xù)的動(dòng)態(tài)目標(biāo)進(jìn)行實(shí)時(shí)識(shí)別。
寫(xiě)數(shù)據(jù)仲裁模塊,寫(xiě)數(shù)據(jù)兩片DDR3是獨(dú)立實(shí)現(xiàn)的,但是是同步的,當(dāng)數(shù)據(jù)流進(jìn)入仲裁模塊后,此時(shí)檢測(cè)是否有寫(xiě)命令以及寫(xiě)地址,如果二者都有,此時(shí)將數(shù)據(jù)寫(xiě)入到DDR3存儲(chǔ)空間,當(dāng)沒(méi)有檢測(cè)到目標(biāo)檢測(cè)模塊給出的有效信號(hào)時(shí),DDR3一直在同一個(gè)區(qū)域進(jìn)行寫(xiě)數(shù)據(jù),當(dāng)寫(xiě)到空間最后一個(gè)地址時(shí),覆蓋最初的地址數(shù)據(jù),繼續(xù)寫(xiě)入數(shù)據(jù)。當(dāng)檢測(cè)到目標(biāo)模塊的有效信號(hào)時(shí),此時(shí)開(kāi)始將當(dāng)前區(qū)域數(shù)據(jù)讀出,執(zhí)行讀仲裁模塊,同時(shí),對(duì)接下來(lái)傳輸?shù)臄?shù)據(jù)寫(xiě)入到下一個(gè)區(qū)域。
千兆網(wǎng)、PCIE、光纖、SATA等傳輸方式是目前主流的傳輸方式,但是這些傳輸方式要么邏輯代碼復(fù)雜,占用資源多,要么布線復(fù)雜,會(huì)導(dǎo)致開(kāi)發(fā)難度增大[21]。但是USB傳輸不同,隨著USB芯片內(nèi)部架構(gòu)的發(fā)展,在芯片內(nèi)部集成緩存以及DMA等傳輸接口,USB3.0的傳輸速率最高可以達(dá)到5 Gbit/s,可以滿足該系統(tǒng)實(shí)時(shí)傳輸?shù)囊?,并且USB支持熱插拔,使用方便,而且與計(jì)算機(jī)兼容性更好。
USB3.0采用FT601芯片作為該模塊的接口芯片,該芯片的測(cè)試速率可以達(dá)到350 MB/s,并且改芯片采用QFN封裝,后期方便調(diào)試。該芯片內(nèi)部自帶100 MHz的外部晶振,該時(shí)鐘在位自己提供工作時(shí)鐘的同時(shí)也可以為外部提供100 MHz時(shí)鐘[20]。該芯片主要是通過(guò)控制內(nèi)部fifo的空滿標(biāo)志位來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)寫(xiě)入以及讀出,實(shí)現(xiàn)對(duì)數(shù)據(jù)的實(shí)時(shí)傳輸。
對(duì)于USB傳輸模塊,主要是通過(guò)狀態(tài)機(jī)實(shí)現(xiàn)的,狀態(tài)機(jī)轉(zhuǎn)換如圖10所示,Ref_n為可讀標(biāo)志位,低電平有效,Txe_n為可寫(xiě)標(biāo)志位,也是低電平有效,當(dāng)檢測(cè)到Rxe_f為低電平以及fifo為空時(shí),此時(shí)開(kāi)始從DDR3讀出數(shù)據(jù);當(dāng)檢測(cè)到Txe_n為低電平且fifo為非空狀態(tài),此時(shí)把fifo的數(shù)據(jù)讀出,傳給上位機(jī)。
圖10 USB傳輸模塊狀態(tài)機(jī)轉(zhuǎn)換示意圖
驗(yàn)證本設(shè)計(jì)代碼的可行性,系統(tǒng)采用的硬件平臺(tái)是Xilinx公司的xc7a200tfbv676-2芯片,整個(gè)系統(tǒng)通過(guò)Vivado2018.2進(jìn)行代碼編寫(xiě),圖像采集模塊用的是Basler4096-140 KM的高速線陣相機(jī),獲取黑白圖像,通過(guò)Camera Link接口協(xié)議將采集到的圖像信息傳輸給FPGA,通過(guò)FPGA完成對(duì)采集到的圖像數(shù)據(jù)進(jìn)行分析,識(shí)別出動(dòng)態(tài)目標(biāo)圖像,并且利用流水線操作將采集到的圖像數(shù)據(jù)通過(guò)FPGA寫(xiě)入到兩片DDR3 SDRAM,最終將目標(biāo)圖像數(shù)據(jù)通過(guò)USB3.0傳輸?shù)缴衔粰C(jī)。圖11是整個(gè)系統(tǒng)的RTL圖,圖11中的1、2、3、4、5、6分別在下面做出解釋。圖12為整個(gè)系統(tǒng)消耗的資源以及該芯片所擁有的資源,LUT消耗15.15%,F(xiàn)F消耗8.8%,BRAM消耗53.84%,由此可知該芯片完全滿足設(shè)計(jì)。
圖11 系統(tǒng)整體RTL圖
圖12 系統(tǒng)資源消耗圖
序列號(hào)1代表的是時(shí)鐘分頻模塊,將外部晶振產(chǎn)生的80 MHz系統(tǒng)時(shí)鐘,通過(guò)FPGA內(nèi)部的PLL IP核對(duì)其進(jìn)行分頻、倍頻,輸出分別為100 MHz、160 MHz以及200 MHz的時(shí)鐘。100 MHz作為外部DDR3的輸入時(shí)鐘,160 MHz作為目標(biāo)識(shí)別算法模塊所需要的時(shí)鐘,200 MHz作為USB控制模塊的時(shí)鐘,通過(guò)PLL分頻得時(shí)鐘依舊是同源時(shí)鐘,進(jìn)行時(shí)序分析的時(shí)候容易進(jìn)行處理。
序列號(hào)2代表的圖像采集模塊,將高速線陣相機(jī)傳輸過(guò)來(lái)的數(shù)據(jù)進(jìn)行采集然后利用外部芯片對(duì)采集到的數(shù)據(jù)按照Camera Link協(xié)議對(duì)數(shù)據(jù)進(jìn)行解析,然后輸出對(duì)應(yīng)Camera Link Full模式下的數(shù)據(jù)格式,Camera Link Full 模式下的數(shù)據(jù)輸出有8個(gè)端口,data_dout代表的是A、B、C三個(gè)端口數(shù)據(jù),data_dout_1代表的是D、E、F三個(gè)端口的數(shù)據(jù),data_dout_2則代表的是G、H端口的數(shù)據(jù),然后將該模塊輸出的數(shù)據(jù)輸出到下一個(gè)模塊,作為下一個(gè)模塊的輸入。
序列號(hào)3代表的模塊是動(dòng)態(tài)目標(biāo)識(shí)別算法模塊,該模塊通過(guò)將圖像采集模塊輸出的A、B、C、D、E、F、G、H端口輸出的數(shù)據(jù)進(jìn)行目標(biāo)識(shí)別算法處理,當(dāng)檢測(cè)到目標(biāo)圖像后輸出error信號(hào),并且將有效數(shù)據(jù)拼接成128位輸出到DDR模塊。
序列號(hào)6代表的是DDR3控制模塊,該模塊通過(guò)利用DDR3的地址實(shí)現(xiàn)對(duì)DDR3存儲(chǔ)器的分頁(yè)處理,對(duì)DDR3的區(qū)域進(jìn)行循環(huán)讀寫(xiě)。當(dāng)檢測(cè)到External_trig信號(hào)為高電平時(shí)此時(shí)表示動(dòng)態(tài)目標(biāo)算法模塊檢測(cè)到目標(biāo)圖像,此時(shí)開(kāi)始將有效數(shù)據(jù)寫(xiě)入DDR3。
序列4代表的模塊是緩存模塊,將DDR3的有效數(shù)據(jù)讀出,然后拆分成64位數(shù)據(jù)通過(guò)fifo實(shí)現(xiàn)數(shù)據(jù)緩存,當(dāng)USB模塊給出命令時(shí),將緩存數(shù)據(jù)寫(xiě)入到USB模塊。
序列5表示的是USB控制模塊,該模塊通過(guò)USB芯片端反饋的信號(hào),對(duì)DDR3芯片內(nèi)部的數(shù)據(jù)進(jìn)行讀出,將有效數(shù)據(jù)傳輸給上位機(jī),同時(shí)接收上位機(jī)發(fā)出的指令,對(duì)整體系統(tǒng)進(jìn)行啟動(dòng)與停止。
本次實(shí)驗(yàn)設(shè)備主要有5部分組成,分別是圖像采集系統(tǒng)完成對(duì)圖像的采集與傳輸,圖像處理系統(tǒng)完成對(duì)有效目標(biāo)圖像后期的處理,光纖和數(shù)據(jù)同步系統(tǒng)是由于有兩個(gè)同樣的采集系統(tǒng)在對(duì)數(shù)據(jù)進(jìn)行采集是為了保持?jǐn)?shù)據(jù)同步,外接一個(gè)顯示屏主要是對(duì)采集到的圖像進(jìn)行顯示。
最終采集到的目標(biāo)圖像在顯示屏中顯示,采集到的有效圖像數(shù)據(jù)如圖13(a)、(b)所示,最終實(shí)驗(yàn)表明可以有效的識(shí)別動(dòng)態(tài)圖像,由于使用是背景差分算法,所以只有檢測(cè)到的目標(biāo)圖像是黑點(diǎn),其余均是白色背景,即圖片中被黑色圓圈圈中的黑點(diǎn)即是檢測(cè)到的目標(biāo)圖像。
圖13 檢測(cè)到的目標(biāo)圖像
本實(shí)驗(yàn)針對(duì)高速運(yùn)動(dòng)物體的實(shí)時(shí)目標(biāo)檢測(cè),提出了一種針對(duì)基于改進(jìn)背景差分算法的目標(biāo)檢測(cè)算法,并設(shè)計(jì)了一套基于FPGA的圖像采集系統(tǒng),通過(guò)對(duì)6 mm的BB彈進(jìn)行測(cè)試,驗(yàn)證了該算法可以實(shí)時(shí)檢測(cè)出高速運(yùn)動(dòng)的目標(biāo)圖像,并且通過(guò)對(duì)DDR3的分頁(yè)控制可以實(shí)現(xiàn)對(duì)連續(xù)射擊的槍彈圖像進(jìn)行緩存,利用USB將采集到的數(shù)據(jù)實(shí)時(shí)傳輸?shù)缴衔粰C(jī)。該設(shè)計(jì)后續(xù)還可以應(yīng)用到車(chē)輛檢測(cè)、軍用監(jiān)控以及半導(dǎo)體材料定位等方面。