摘要:提出了一種基于FPGA的實(shí)時(shí)、多分辨率圖像采集系統(tǒng)的控制邏輯設(shè)計(jì)方案;并對(duì)其中的圖像數(shù)據(jù)預(yù)處理和幀存乒乓刷新機(jī)制這兩個(gè)關(guān)鍵技術(shù)進(jìn)行了闡述;為了驗(yàn)證圖像采集系統(tǒng)在整個(gè)圖像處理系統(tǒng)中所起的作用,還對(duì)圖像壓縮系統(tǒng)的幀率進(jìn)行了比較實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,設(shè)計(jì)并實(shí)現(xiàn)的圖像采集系統(tǒng)不僅運(yùn)行穩(wěn)定,而且顯著提高了圖像處理系統(tǒng)的整體性能。
關(guān)鍵詞:FPGA 圖像采集 圖像壓縮
隨著數(shù)字多媒體技術(shù)的不斷發(fā)展,數(shù)字圖像處理技術(shù)被廣泛應(yīng)用于可視電話、電視會(huì)議、監(jiān)控系統(tǒng)等各種民用、商用及工業(yè)生產(chǎn)領(lǐng)域中。但在這些數(shù)字圖像處理系統(tǒng)中,一個(gè)突出的問(wèn)題就是數(shù)據(jù)量龐大,特別是在圖像幀率及分辨率要求比較高的場(chǎng)合下,僅用專用的視頻壓縮芯片(Video ASIC)、專用的視頻信號(hào)處理器(Video DSP)或通用的高性能數(shù)字信號(hào)處理芯片(DSP),均無(wú)法獲得令人滿意的效果。為此,人們提出了多種解決方案,其中比較有代表性的方案有以下兩種:
一是在中央控制器的調(diào)度下,兩片或多片圖像處理主芯片并行對(duì)圖像進(jìn)行處理。
二是整個(gè)圖像處理系統(tǒng)由圖像采集系統(tǒng)和圖像壓縮系統(tǒng)組成,其中圖像采集系統(tǒng)負(fù)責(zé)接收原始的圖像數(shù)據(jù)并對(duì)其進(jìn)行一定的預(yù)處理;圖像壓縮系統(tǒng)負(fù)責(zé)接收?qǐng)D像采集系統(tǒng)預(yù)處理后的數(shù)據(jù)并進(jìn)行壓縮。
本文將基于第二種方案,分析其中圖像采集系統(tǒng)的控制邏輯設(shè)計(jì)思想;并結(jié)合圖像壓縮算法的需求,著重介紹圖像數(shù)據(jù)預(yù)處理的控制流程及實(shí)現(xiàn)方法;最后通過(guò)實(shí)驗(yàn),對(duì)預(yù)處理前后圖像處理系統(tǒng)的效率進(jìn)行比較分析。
1 圖像采集系統(tǒng)的結(jié)構(gòu)及工作原理
本文以高性能、高集成度、低功耗系列FPGA作為核心部件,利用FPGA的在系統(tǒng)可編程以及控制邏輯實(shí)現(xiàn)方式靈活等特點(diǎn),設(shè)計(jì)出圖像采集系統(tǒng)。該系統(tǒng)能夠滿足多分辨率灰度和彩色圖像的實(shí)時(shí)壓縮處理要求,其硬件結(jié)構(gòu)如圖1所示,主要包括A/D轉(zhuǎn)換部分、幀存部分和核心控制部分。下面分別對(duì)這三個(gè)部分進(jìn)行介紹。
1.1 A/D轉(zhuǎn)換部分
A/D轉(zhuǎn)換部分即圖1中的視頻解碼器,用來(lái)完成模擬視頻信號(hào)到數(shù)字信號(hào)的轉(zhuǎn)換,產(chǎn)生復(fù)合的YUV數(shù)據(jù)流,并送入采集系統(tǒng)的FPGA中。
A/D轉(zhuǎn)換部分所選用的視頻解碼器是Philips公司的視頻A/D芯片SAA7111A_4,它不僅具有自動(dòng)場(chǎng)頻檢測(cè)牧場(chǎng) 生而且其場(chǎng)同步參考信號(hào)VREF、行同步參考信號(hào)HREF、奇偶場(chǎng)標(biāo)志信號(hào)RTS0、像素時(shí)鐘信號(hào)LLC2幸免可從芯片的輸出管腳直接得到,從而簡(jiǎn)化了時(shí)鐘鎖相與同步功能模塊的設(shè)計(jì),使整個(gè)系統(tǒng)的性能和穩(wěn)定性均有所提高,同時(shí)減少了整個(gè)系統(tǒng)的功耗[2]。
1.2 幀存部分
幀存部分采用雙幀存結(jié)構(gòu),包括圖1中的幀存A與幀存B,每個(gè)幀存由兩片IDT71V424 SRAM構(gòu)成,能夠存放720X576分辨率的一幀YUV圖像數(shù)據(jù)。由于采用了乒乓機(jī)制,這種結(jié)構(gòu)能夠使圖像數(shù)據(jù)的采集與壓縮并行,從而提高圖像的壓縮幀率。
?
1.3 核心控制部分
采集系統(tǒng)的核心控制部分即圖1中的FPGA。首先對(duì)A/D轉(zhuǎn)換部分的輸出數(shù)據(jù)流進(jìn)行一定的預(yù)處理;其次將預(yù)處理后的數(shù)據(jù)在幀存乒乓、刷新機(jī)帛的控制下寫入適當(dāng)幀存中;最后完成與圖像壓縮系統(tǒng)的接口控制,即適時(shí)幀存的控制權(quán)轉(zhuǎn)交給圖像壓縮系統(tǒng),由圖像壓縮系統(tǒng)將幀存中的數(shù)據(jù)讀出后釋放幀存的控制權(quán)。另外本部分還負(fù)責(zé)接收用戶輸入的圖像分辨率、色彩以及相應(yīng)壓縮碼流傳輸信道的帶寬等控制信息,并在這些信息發(fā)生變化時(shí)用中斷的方式通知圖像壓縮系統(tǒng)。
核心控制部分所選用的FPGA為Xilinx公司的Virtex-100E繁列,它具有10萬(wàn)等效系統(tǒng)門,系統(tǒng)時(shí)鐘頻率可達(dá)240MHz,用戶可用的I/O管腳有196個(gè),核電壓為1.8V,峰值功耗較低[3]。
1.3.1 圖像采集系統(tǒng)控制邏輯功能框圖
圖像采集系統(tǒng)控制邏輯框圖如圖2所示。①作為采集系統(tǒng)核心控制邏輯的主控模塊,用來(lái)調(diào)用②~⑥各子功能模塊。子功能模塊②是整個(gè)控制邏輯執(zhí)行的起點(diǎn),它根據(jù)I2C協(xié)議來(lái)配置視頻解碼器,并且只有I2C配置過(guò)程結(jié)束后,才能啟動(dòng)其它子功能模塊的運(yùn)行。子功能模塊③用于完成圖像采集系統(tǒng)與圖像壓縮系統(tǒng)的交互。子功能模塊④~⑥用于完成圖像采集、預(yù)處理、存儲(chǔ)控制等功能。下邊介紹介紹各子模塊的設(shè)計(jì)思想。
1.3.2 基于I2C配置視頻解碼器
視頻解碼器的初始化配置是由FPGA通過(guò)I2C總線完成的,主要包括對(duì)視頻解碼器的工作模式、輸出行場(chǎng)同步參考信號(hào)的時(shí)序關(guān)系以及輸出數(shù)字信號(hào)的格式等進(jìn)行的設(shè)置。
1.3.3 與圖像壓縮系統(tǒng)握手
為了確保圖像壓縮系統(tǒng)與圖像采集系統(tǒng)的同步、需要在FPGA中實(shí)現(xiàn)兩者之間的握手機(jī)制,主要是接收?qǐng)D像壓縮系統(tǒng)請(qǐng)示幀存控制權(quán)和釋放幀存控制權(quán)的信號(hào),并根據(jù)FPGA內(nèi)部邏輯的當(dāng)前運(yùn)行狀態(tài)進(jìn)行響應(yīng)。
1.3.4 原始圖像數(shù)據(jù)采集
在一幀圖像數(shù)據(jù)的采集過(guò)程中,最重要的就是對(duì)一幀圖像數(shù)據(jù)開(kāi)始和結(jié)束時(shí)刻的判斷。在仔細(xì)研究了SAA7111A_4所提供的同步信號(hào)(奇偶場(chǎng)標(biāo)識(shí)信號(hào)RTS0、場(chǎng)同步參考信號(hào)VREF、行同步參考信號(hào)HREF)的時(shí)序關(guān)系的基礎(chǔ)上,用狀態(tài)機(jī)實(shí)現(xiàn)了對(duì)采集過(guò)程起止點(diǎn)的精確控制。圖3所示為一幀圖像采集期間三個(gè)同步信號(hào)的時(shí)序示意圖。
RTS0信號(hào)的上升沿標(biāo)識(shí)一幀新圖像的起點(diǎn),VREF信號(hào)為高電平對(duì)應(yīng)圖像場(chǎng)正程掃描時(shí)的有效像素行期間,在有效像素行期間,HREF信號(hào)為高電平對(duì)應(yīng)像素有效采樣時(shí)間?;谶@三個(gè)信號(hào)確定一幀圖像采集過(guò)程起止點(diǎn)的流程如下:
①若檢測(cè)到RTS0信號(hào)的電平為低,轉(zhuǎn)到②;②若檢測(cè)到RTS0信號(hào)的電平為高,轉(zhuǎn)到③,同時(shí)開(kāi)始一幀新圖像的采集;
③若檢測(cè)到VREF信號(hào)的電平為高,轉(zhuǎn)到④;
④若檢測(cè)到VREF信號(hào)的電平為低,則表明352X288分辨率模式下的一幀圖像采集過(guò)程結(jié)束或720X576分辨率模式下的第一場(chǎng)圖像采集過(guò)程結(jié)束,轉(zhuǎn)到⑤,否則在HREF信號(hào)的電平為高期間進(jìn)行有效的圖像數(shù)據(jù)采集;
⑤若檢測(cè)到VREF信號(hào)的電平為高,轉(zhuǎn)到⑥;
⑥若檢測(cè)到VREF信號(hào)的電平為低,則表明720X576分辨率模式下第二場(chǎng)圖像采集過(guò)程結(jié)束,轉(zhuǎn)到①,否則在HREF信號(hào)的電平為高期間進(jìn)行有效的圖像數(shù)據(jù)采集。
1.3.5 采集圖像數(shù)據(jù)的預(yù)處理及存儲(chǔ)
圖像壓縮系統(tǒng)所需要的輸入圖像數(shù)據(jù)流是按照宏場(chǎng)-SLICE-圖像的分層結(jié)構(gòu)組織的,如圖4所示(以720X576分辨率為例)。而圖像采集系統(tǒng)中,A/D轉(zhuǎn)換后的輸出數(shù)據(jù)流結(jié)構(gòu)如圖5所示。因此,必須對(duì)圖5所示的數(shù)據(jù)流進(jìn)行相應(yīng)的預(yù)處理,圖像壓縮系統(tǒng)才能夠直接從圖像采集系統(tǒng)中得到需要的數(shù)據(jù)格式,從而提高整個(gè)圖像處理系統(tǒng)的性能。
按照?qǐng)D4所示的分層結(jié)構(gòu),圖像數(shù)據(jù)在幀存中以SLICE為單位順序存儲(chǔ),其中SLICE的尺寸既要考慮圖像壓縮系統(tǒng)中圖像壓縮算法的要求,又要考慮與圖像分辨率有著密切的關(guān)系。圖6所示為圖像數(shù)據(jù)在幀存中的存儲(chǔ)結(jié)構(gòu)。下面主要以720X576分辨率下的圖像為例討論數(shù)據(jù)存儲(chǔ)地址的計(jì)算。
由A/D轉(zhuǎn)換輸出數(shù)據(jù)格式與圖像壓縮系統(tǒng)輸入數(shù)據(jù)格式間的對(duì)應(yīng)關(guān)系可知中,一幀圖像中的任意像素可以用分層尋址方式準(zhǔn)確定位,并據(jù)此產(chǎn)生此像素所對(duì)應(yīng)的三個(gè)分量的幀存存儲(chǔ)地址值。首先,從一幀圖像的一第一行開(kāi)始,每連續(xù)的16行作為一個(gè)像素塊,稱為行塊,一幀720X576分辨率的圖像可劃分為36個(gè)行塊;其次,每一個(gè)行塊又在水平方向上平均分為3段,每段稱為一個(gè)列組,每個(gè)列組的寬度為水平方向上連續(xù)的240個(gè)像素,高度為垂直方向上連續(xù)的16行。720X576圖像像素分層尋址示意圖如圖7所示。Y、U、V三個(gè)分量在幀存中的存儲(chǔ)地址產(chǎn)生過(guò)程如下:首先確定含像素所屬行塊在一幀圖像中的偏移量及像素所屬列組在行塊中的像移量,即確定行塊序號(hào)和列組序號(hào);然后確定像素在所屬列組中水平方向上和垂直方向上的偏移量;最后根據(jù)上述4個(gè)偏移量計(jì)數(shù)器的值即可產(chǎn)生此像素所對(duì)應(yīng)的三個(gè)分量的幀存存儲(chǔ)地址值。
在720X576分辨率下,一幀圖像中任一像素的Y、N、V分量對(duì)應(yīng)的幀存地址計(jì)算公式如下:
y_addr=(C-1)×8640+(E+1)×2880+(D-1)×120+(F-2)/2
u_addr=(C-1)×8640+(E-1)×2880+(D-1)/2)×60+(F-3)/4+1920
v_addr=(C-1)×8640+(E-1)×2880+(D-1)/2)×60+(F-4)/4+2400
式中,y_addr、u_addr、v_addr分別對(duì)應(yīng)Y、U、V三個(gè)分量的幀存存儲(chǔ)地址;C表示行塊序號(hào),取值范圍為1~36;D表示在列組垂直方向上的偏移量,取值范圍為1~16;E表示列組序號(hào),取值范圍為1~3;F表示在列組中水平方向上的偏移量,取值范圍為1~240。
上述地址計(jì)算公式在FPGA中實(shí)現(xiàn)時(shí),考慮到各乘積項(xiàng)常系數(shù)(8640、2880等)所對(duì)應(yīng)的二進(jìn)制數(shù)中"1"較少,可將各乘積運(yùn)算轉(zhuǎn)化為移位與加法運(yùn)算的組合,并將加法操作用分組超前進(jìn)位[4]方式實(shí)現(xiàn)。
1.3.6 幀存乒乓刷新控制機(jī)制
兩組幀存的讀寫過(guò)乒乓機(jī)制來(lái)管理。為確保在任何時(shí)刻,最多只有一個(gè)幀存處于圖像壓縮系統(tǒng)的控制下,設(shè)置了一個(gè)讀互斥鎖;同樣,最多有一個(gè)幀存可接收預(yù)處理后的數(shù)據(jù),因此又設(shè)置了一個(gè)寫互斥鎖。
因?yàn)閳D像壓縮系統(tǒng)的壓縮幀率在720×576分辨率下小于25幀/秒,為了保證圖像壓縮系統(tǒng)每次從采集系統(tǒng)所到的一幀圖像數(shù)據(jù)是最近由FPGA預(yù)處理過(guò)的,使得圖像延時(shí)較小,設(shè)計(jì)了雙幀存刷新機(jī)制[5]。
在系統(tǒng)初始狀態(tài),幀存A處于等待寫狀態(tài),幀存B處于讀結(jié)束狀態(tài)。采集過(guò)程開(kāi)始,兩個(gè)幀存的狀態(tài)轉(zhuǎn)換控制流程完全相同。下邊以幀存A為例介紹基于讀寫互斥鎖的幀存控制機(jī)制。幀存乒乓刷新控制機(jī)制如圖8所示,其設(shè)計(jì)思想如下:
①采集過(guò)程未開(kāi)始,幀存A處于等待寫狀態(tài),并獲得寫互斥鎖;
②收到一幀新圖像的開(kāi)始信號(hào),采集過(guò)程開(kāi)始,幀存A進(jìn)入可寫狀態(tài),接收?qǐng)D像數(shù)據(jù);
③一幀圖像的采集過(guò)程結(jié)束后,幀存A進(jìn)入寫結(jié)束狀態(tài),并釋放寫互斥鎖;
④在寫結(jié)束狀態(tài)下,若此時(shí)幀存B擁有讀互斥鎖,由幀存A保持寫結(jié)束狀態(tài),否則幀存A獲得讀互斥鎖,進(jìn)入讀等待狀態(tài),并在下一個(gè)控制周期切換到再次讀等待狀態(tài);
⑤幀存A在再次讀等待狀態(tài)下,如果幀存B處于寫結(jié)束狀態(tài),則幀存A釋放讀互斥鎖,進(jìn)入讀結(jié)束狀態(tài),否則若圖像壓縮系統(tǒng)請(qǐng)求幀存的控制權(quán),則幀存A進(jìn)入可讀狀態(tài),并處于圖像壓縮系統(tǒng)的控制下,若以上兩個(gè)條件均不滿足,則幀存A保持再次讀等待狀態(tài)。
⑥在可讀狀態(tài)下,若圖像壓縮系統(tǒng)請(qǐng)求FPGA回收幀存控制權(quán),則幀存A進(jìn)入讀結(jié)束狀態(tài),并釋放讀互斥鎖;
⑦在讀結(jié)束狀態(tài)下,若幀存B擁有寫互斥鎖,由幀存A保持讀結(jié)束狀態(tài),否則幀存A進(jìn)入等待寫狀態(tài),并獲得寫互斥鎖。
?
2 FPGA邏輯設(shè)計(jì)中的常見(jiàn)問(wèn)題討論
在FPGA內(nèi)部,由于LLC2時(shí)鐘驅(qū)動(dòng)的邏輯非常多,布線尋徑優(yōu)化的選擇余地小,從而導(dǎo)致它到達(dá)每個(gè)邏輯模塊驅(qū)動(dòng)端的時(shí)間有一定的差異。在極端情況下這一差異(Skew)會(huì)非常大,并導(dǎo)致邏輯執(zhí)行時(shí)的時(shí)序錯(cuò)誤。因此在基于FPGA進(jìn)行邏輯設(shè)計(jì)時(shí),盡管各邏輯模塊及模塊間的通信信號(hào)基本上都是由LLC2驅(qū)動(dòng)的,但模塊間的通信信號(hào)與通信的接收方模塊應(yīng)視為異步,并按異步邏輯的思路實(shí)現(xiàn)模塊間的通信機(jī)制[6~7]。
另外本設(shè)計(jì)中LLC2的時(shí)鐘頻率達(dá)13.5MHz,且FPGA內(nèi)部邏輯資源的使用率已經(jīng)超過(guò)了70%。為了確??刂七壿嬙贔PGA中的穩(wěn)定運(yùn)行,需要對(duì)設(shè)計(jì)進(jìn)行精心的時(shí)序仿真,提高仿真程序的測(cè)試覆蓋率,并對(duì)實(shí)現(xiàn)(Implementation)過(guò)程中生成的靜態(tài)時(shí)序分析報(bào)告仔細(xì)研究,確定設(shè)計(jì)中的時(shí)序關(guān)鍵路徑,采用先修改設(shè)計(jì)、分割關(guān)鍵路徑,后加限制條件的方式,盡量減少關(guān)鍵路徑的個(gè)數(shù)、降低關(guān)鍵路徑的延時(shí)。 在對(duì)設(shè)計(jì)進(jìn)行仿真驗(yàn)證的過(guò)程中,要盡量將所發(fā)現(xiàn)毛刺的發(fā)生條件找出,并用修改源設(shè)計(jì)的方法將其去除。
3 實(shí)驗(yàn)結(jié)果
為了驗(yàn)證圖像采集系統(tǒng)的作用,進(jìn)行了對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表1所示。
在兩種分辨率下,經(jīng)過(guò)圖像采集系統(tǒng)的預(yù)處理,圖像壓縮系統(tǒng)的幀率有不同程度的提高,尤其是在720×576分辨率下,幀率的提高超過(guò)了60%。這主要是由于圖像采集系統(tǒng)預(yù)處理機(jī)制的采用,使得圖像壓縮系統(tǒng)能夠與圖像采集系統(tǒng)并行工作,在很大程度上減少了圖像壓縮系統(tǒng)的等待執(zhí)行時(shí)間,從而提高了圖像壓縮系統(tǒng)的壓縮幀率。從表1中可以看到,在352×288分辨率下,整個(gè)系統(tǒng)的性能提高不大(甚至沒(méi)有變化)。這是因?yàn)樵诖朔直媛氏拢瑘D像數(shù)據(jù)量較小,僅靠圖像壓縮系統(tǒng)的處理能力即可達(dá)到實(shí)時(shí)效果,所以圖像采集系統(tǒng)預(yù)處理機(jī)制的采用無(wú)法進(jìn)一步提高整個(gè)系統(tǒng)的性能。
表1 圖像采集系統(tǒng)對(duì)圖像處理系統(tǒng)的性能影響
圖像分辨率 | 720×576 | 352×288 | ||||
采集系統(tǒng)預(yù)處理 | 有 | 無(wú) | 提高百分比 | 有 | 無(wú) | 提高百比 |
灰度圖像壓縮幀率(幀/秒) | 13 | 8 | 62.5% | 25 | 25 | 0% |
彩色圖像壓縮幀率(幀/秒) | 10 | 6 | 66.7% | 25 | 22 | 12% |
當(dāng)然,本采集系統(tǒng)還存在改進(jìn)的余地[8],具體來(lái)說(shuō)有以下兩點(diǎn):
①基于FPGA實(shí)現(xiàn)的圖像預(yù)處理操作若具有圖像增強(qiáng)、去噪等功能,并對(duì)圖像的場(chǎng)景變換進(jìn)行一定的處理,會(huì)使圖像采集系統(tǒng)的輸出圖像質(zhì)量得到很大的提高。
②幀存乒乓刷新機(jī)制在實(shí)用中還有一定的局限性,圖像的主以遲效果不是很理想,而且有時(shí)會(huì)使圖像壓縮系統(tǒng)的讀數(shù)據(jù)請(qǐng)求不能立即得到響應(yīng)??紤]到系統(tǒng)的性價(jià)比,如果用一片高密度的SDRAM作為存儲(chǔ)器,并且將它在物理上分為三個(gè)幀存,通過(guò)這三個(gè)幀存之間的乒乓機(jī)制,相信采集系統(tǒng)所輸出的圖像在主觀效果上會(huì)于本文所采用的雙幀存結(jié)構(gòu)。
評(píng)論
查看更多