楊光宇,朱 丹,佟新鑫,王玉良,栗霄峰
(1.中國科學(xué)院沈陽自動化研究所,遼寧 沈陽 110016;2.中國科學(xué)院光電信息處理重點實驗室,遼寧 沈陽 110016;3.遼寧省圖像理解與視覺計算重點實驗室,遼寧 沈陽 110016)
責(zé)任編輯:孫 卓
電子穩(wěn)像技術(shù)是綜合電子、計算機、數(shù)字信號處理等技術(shù),利用數(shù)字圖像處理方法直接確定圖像序列的偏移并進行補償?shù)募夹g(shù)[1]。利用電子穩(wěn)像技術(shù)對不穩(wěn)定的視頻序列進行穩(wěn)定處理,可提高監(jiān)視質(zhì)量,便于后續(xù)應(yīng)用處理。電子穩(wěn)像技術(shù)廣泛用于機器導(dǎo)航、目標(biāo)識別與跟蹤、安全監(jiān)控等視頻分析和處理領(lǐng)域。實際應(yīng)用中對電子穩(wěn)像系統(tǒng)的處理時間、體積、重量、功耗等要求不斷提高,基于嵌入式的實時電子穩(wěn)像系統(tǒng)具有更高的實際應(yīng)用價值。
鑒于電子穩(wěn)像技術(shù)在軍事和民用領(lǐng)域中的重要作用,美國、加拿大、以色列等國家較早地進行了研究和開發(fā),并取得了一定成果。我國在2000年之后開始進行穩(wěn)像技術(shù)研究。中國科學(xué)院長春光機所鐘平針對具體應(yīng)用環(huán)境特點,采用基于特征跟蹤的電子穩(wěn)像方法用于機載電子穩(wěn)像,取得了良好的結(jié)果[2]。哈爾濱工業(yè)大學(xué)張博等將基于幀矢量疊加和自適應(yīng)中止技術(shù)的快速運動估計方法用于電子穩(wěn)像,運算量顯著減?。?]。國防科大羅詩途等采用了一種由粗到精、由局部到全局配準(zhǔn)的高效匹配策略實現(xiàn)了車載圖像匹配,滿足了車載圖像跟蹤系統(tǒng)對電子穩(wěn)像技術(shù)的實時性及精度要求[4]。這些電子穩(wěn)像系統(tǒng)大多基于VC編程在PC機上實現(xiàn)。北京理工大學(xué)趙躍進采用XC95144XL CPLD+DSP6711為處理平臺實現(xiàn)了256×256像素圖像的實時穩(wěn)定[5]。中國科學(xué)院長春光機所孫輝采用灰度投影法檢測序列圖像當(dāng)前幀和參考幀之間的運動矢量實現(xiàn)亞像元檢測,并基于DSP6416圖像處理平臺應(yīng)用在船載電視監(jiān)視系統(tǒng)中,但沒有講述硬件實現(xiàn)過程[6]。本文重點研究了基于EP2S30 FPGA+DSP6416架構(gòu)的電子穩(wěn)像平臺硬件開發(fā)流程。采用灰度投影算法,本平臺能實時完成25 f/s的標(biāo)準(zhǔn)PAL制視頻的穩(wěn)定。
電子穩(wěn)像的原理是對不穩(wěn)定的視頻序列圖像進行局部運動估計和全局運動估計,并對運動參數(shù)進行綜合評價得到運動補償參數(shù),進而對圖像進行運動校正得到穩(wěn)定的輸出圖像序列。依據(jù)上述原理,電子穩(wěn)像過程分為運動估計、運動濾波、運動補償3個部分,而關(guān)鍵技術(shù)就在于估計視頻序列圖像相鄰兩幀之間的全局運動參數(shù)。
灰度投影算法的原理是基于行列灰度曲線的變化規(guī)律進行運動估計,其方法是將灰度圖像的二維圖像信息映射成2個獨立的一維波形,即獲取圖像的行列灰度投影曲線,然后進行相關(guān)運算,找到相關(guān)值曲線中的單峰值即為當(dāng)前圖像相對于參考圖像的位移值。灰度投影算法作為一種二維平移模型的算法具有獨到的優(yōu)勢,例如計算速度快,易于VLSI實現(xiàn)等。
電子穩(wěn)像平臺硬件結(jié)構(gòu)框圖如圖1所示。平臺完成灰度投影法電子穩(wěn)像的流程為:視頻解碼器接收模擬視頻并將其轉(zhuǎn)換為數(shù)字視頻數(shù)據(jù)流送入FPGA內(nèi)部的圖像采集控制模塊。圖像采集控制模塊進行圖像處理區(qū)域的剪裁和圖像數(shù)據(jù)的YCbCr分解,分解之后的灰度數(shù)據(jù)分成兩路,一路通過視頻采集FIFO存入SDRAM進行幀存儲;另一路先進行圖像預(yù)處理,然后進行行列方向的灰度投影數(shù)據(jù)累加。DSP通過EMIF總線讀取這個累加結(jié)果,完成運動估計和運動濾波的計算得到運動矢量數(shù)據(jù)。Nios II處理器通過EMIF總線讀取這個運動矢量,在下一幀圖像掃描開始時將SDRAM幀存儲中的圖像數(shù)據(jù)讀入到視頻顯示FIFO中,經(jīng)運動補償模塊后得到穩(wěn)定的數(shù)字視頻數(shù)據(jù)流,最后通過圖像顯示控制模塊送到視頻編碼器輸出穩(wěn)定的模擬視頻。
圖1 電子穩(wěn)像平臺硬件架構(gòu)圖
電子穩(wěn)像平臺的軟件設(shè)計分為兩部分,分別在DSP6416和Nios II處理器中完成,其中DSP6416完成穩(wěn)像算法的運動估計、運動濾波功能,Nios II處理器完成圖像幀存儲設(shè)計、視頻編碼器、視頻解碼器配置等功能。軟件框架分為3個層次:
1)頂層管理。利用C6416芯片支持庫以及DSP/BIOS完成系統(tǒng)配置及實時多任務(wù)調(diào)度[6];
2)設(shè)備驅(qū)動。利用Nios II處理器的HAL完成編碼器、解碼器及SDRAM等外設(shè)的配置[7];
3)算法應(yīng)用。利用C6000的FastRTS函數(shù)庫完成穩(wěn)像算法中的浮點運算部分。
圖2是通過FPGA內(nèi)部的邏輯分析儀采集到的穩(wěn)像平臺硬件設(shè)計時序圖。
圖2 硬件設(shè)計時序圖(截圖)
系統(tǒng)上電后FPGA通過內(nèi)部Nios II處理器完成視頻編碼器、視頻解碼器的配置,之后通知DSP配置過程結(jié)束,DSP接收到配置結(jié)束信號后產(chǎn)生穩(wěn)像開始信號(圖2中信號4)送給FPGA。對于FPGA,接收到這個信號的時間是隨機的,而本文的穩(wěn)像算法是基于幀處理的,所以FPGA必須從穩(wěn)像開始信號有效之后最新到來的一幀圖像開始進行穩(wěn)像處理。穩(wěn)像平臺的整體時序設(shè)計如下:
1)幀起始信號(圖2中信號5)代表著穩(wěn)像開始信號有效后每一幀新圖像的到來,本文用這個信號觸發(fā)Nios II處理器的外部中斷來讀取DSP計算出來的全局運動矢量。
2)處理區(qū)域奇場、偶場行有效信號(圖2中信號6和信號7),這2個信號的下降沿分別代表穩(wěn)像開始后每幀圖像中奇場及偶場處理區(qū)域的結(jié)束,通知DSP通過EDMA通道讀取圖像灰度投影累加數(shù)據(jù)。為了完成實時穩(wěn)像,DSP必須在信號7的下降沿和信號6的上升沿之間完成全局運動矢量的解算。
電子穩(wěn)像算法中,根據(jù)全局運動估計算法復(fù)雜程度的不同,需要存儲圖像的幀數(shù)就不同,圖像延時的時間也就不同?;诨叶韧队胺ǖ碾娮臃€(wěn)像平臺需要進行一幀的圖像存儲,穩(wěn)定之后的圖像有一幀的延時。
在FPGA中利用SOPC_Builder生成SDRAM控制器通過DMA方式將圖像存儲在外部SDRAM中。同時在FPGA中還分別設(shè)計了采集FIFO和顯示FIFO對圖像采集和顯示作行緩存。需要注意的是對于顯示FIFO,本文必須提前寫入一行數(shù)據(jù)以防止圖像處理區(qū)域掃描信號到來時顯示FIFO的讀空。
圖3是邏輯分析儀采集的幀存儲時序波形,為了便于顯示省略了中間的部分。分析如下:
圖3 圖像幀存儲時序設(shè)計圖(截圖)
1)利用處理區(qū)域列有效信號(圖3中信號3)作為采集FIFO的寫使能信號,信號的下降沿代表著一行有效數(shù)據(jù)采集完畢同時中斷通知Nios II處理器通過DMA方式將數(shù)據(jù)寫入SDRAM的采集存儲區(qū)。采集FIFO的讀使能、數(shù)據(jù)入、數(shù)據(jù)出分別對應(yīng)于上圖中的信號4,5,6。
2)利用提前一行的列有效信號(圖3中信號8)上升沿去觸發(fā)Nios II處理器的外部中斷,通過DMA方式從SDRAM顯示存儲區(qū)中讀出一行有效數(shù)據(jù)寫入顯示FIFO,而顯示FIFO的讀使能信號仍然使用信號3,這樣便能防止顯示FIFO的讀空,同時保證顯示FIFO中處理區(qū)域最后一行的有效數(shù)據(jù)被讀出。顯示FIFO的寫使能、數(shù)據(jù)入、數(shù)據(jù)出分別對應(yīng)于上圖中的信號9,10,11。
由圖3可見,上述設(shè)計中SDRAM讀寫操作時序不會出現(xiàn)重疊,完全滿足時序要求。進行運動補償時,上述設(shè)計的采集FIFO時序不發(fā)生變化,而顯示FIFO的輸出數(shù)據(jù)及相應(yīng)的使能信號會發(fā)生變化。具體設(shè)計見圖像運動補償時序設(shè)計部分。
灰度投影數(shù)據(jù)累加包括行方向和列方向的數(shù)據(jù)累加,累加結(jié)果存儲在FPGA片上的雙端口RAM中。由于視頻數(shù)據(jù)流的輸入是隨著行方向的掃描而來的,因此行方向上只要隨著像素時鐘對行方向投影數(shù)據(jù)作累加就可以了。
列方向投影數(shù)據(jù)累加采用2個雙端口RAM,第1個雙端口RAM存儲圖像處理區(qū)域內(nèi)除最后1行圖像外的列向投影數(shù)據(jù)累加結(jié)果,當(dāng)圖像掃描到處理區(qū)域最后一行時,從第1個雙端口RAM讀出之前的累加數(shù)據(jù)、加上圖像最后1行當(dāng)前列的數(shù)據(jù)、寫入到第2個雙端口RAM對應(yīng)于列地址的存儲單元中,同時將第1個雙端口RAM對應(yīng)列地址的存儲單元清零。為了在1個像素時鐘內(nèi)完成數(shù)據(jù)讀出、累加、寫回的操作,本文用像素時鐘的4倍頻時鐘驅(qū)動一個具有4個狀態(tài)的狀態(tài)機來完成上述的操作。圖4為雙端口RAM完成列方向投影數(shù)據(jù)累加過程示意圖。
圖4 列方向灰度投影數(shù)據(jù)累加(截圖)
圖像運動補償模塊的功能就是根據(jù)全局運動矢量計算出經(jīng)過運動補償之后的圖像在SDRAM幀存中的位置并將圖像取出來作顯示。對于運動補償之后產(chǎn)生的空白區(qū)域,本文作補零處理。
圖像運動補償功能由FPGA邏輯和Nios II處理器共同完成。Nios II處理器接收來自DSP的水平向和垂直向的全局運動矢量d x,d y,計算出運動補償圖像區(qū)域的首地址作為DMA的起始源地址。由于本文定義的DMA總線位寬為32位,為了地址對齊,定義每次DMA的數(shù)據(jù)長度為圖像處理區(qū)域的長度img_h,為4的整數(shù)倍。這樣對于每幀圖像的運動補償,實際上啟動了(img_v-d y)次DMA傳輸,而每次DMA傳輸?shù)臄?shù)據(jù)中包含了d x個無效數(shù)據(jù),其中img_h和img_v分別為圖像處理區(qū)域的長度和寬度。
在FPGA的邏輯設(shè)計中,本文產(chǎn)生運動補償所需的各使能信號控制顯示FIFO接收DMA數(shù)據(jù),在圖像顯示控制模塊中去除每行的d x個無效數(shù)據(jù),并最終將運動補償圖像區(qū)域的圖像作顯示。各使能信號的定義如圖5所示。
圖5 運動補償使能信號
在圖5中,Clip_H為處理區(qū)域列有效信號;Clip_V為處理區(qū)域行有效信號;Trans_H為圖像補償區(qū)域列有效信號;Trans_V為圖像補償區(qū)域行有效信號;Trans_H_Fake為提前一行的圖像補償區(qū)域列有效信號;Trans_V_Fake為提前一行的圖像補償區(qū)域行有效信號。圖5在空間位置上定義的圖像補償區(qū)域與2.4節(jié)中從時序上定義的圖像處理區(qū)域是一致的,只不過2.4節(jié)中是在圖像不發(fā)生抖動時將全部圖像處理區(qū)域作顯示,而在圖像發(fā)生抖動時,本文只將運動補償之后的有效圖像區(qū)域作顯示,無效部分作補零處理。
為驗證穩(wěn)像平臺的穩(wěn)像效果,本文做了如下實驗。通過人為隨機設(shè)定的水平和垂直偏移量,截取攝像機輸出100幀序列圖像的512×512區(qū)域大小來模擬抖動的視頻序列,圖像所加偏移量的大小在[-30,+30]個像素之間。在DSP6416程序中記錄算法解算出的抖動圖像序列的幀間運動矢量。將當(dāng)前幀前面的所有幀間運動矢量作累加即可得到當(dāng)前幀圖像相對于基準(zhǔn)幀圖像的運動軌跡。將實際運動軌跡和濾波后的運動軌跡數(shù)據(jù)通過Matlab軟件繪圖如圖6所示。
圖6 x,y方向運動軌跡
由圖6可見穩(wěn)像算法能正確計算幀間運動矢量,并通過運動濾波去除視頻中的無意抖動將攝像機的有意運動提取出來。同時將抖動的圖像視頻和穩(wěn)像之后的視頻分別在監(jiān)視器上輸出,穩(wěn)像之后的視頻達到了穩(wěn)定效果。
本文詳細介紹了基于EP2S30 FPGA+DSP6416架構(gòu)的電子穩(wěn)像平臺的硬件開發(fā)流程。采用灰度投影算法,平臺能實時對水平向和垂直向抖動的范圍為[-30,+30]個像素之間的標(biāo)準(zhǔn)PAL制視頻進行穩(wěn)定,穩(wěn)像精度為1個像素。表1顯示了FPGA中硬件資源的使用情況。
表1 FPGA硬件資源使用結(jié)果
本文沒有對穩(wěn)像算法本身作深入地研究,而將重點放在了穩(wěn)像平臺的硬件架構(gòu)設(shè)計和時序設(shè)計上。由表1可見FPGA內(nèi)部硬件資源的裕量很大,同時在FPGA的外部也擴展了足夠的存儲器,加之DSP6416的使用,本穩(wěn)像平臺完全有能力完成更復(fù)雜的算法。
[1]趙紅穎,金宏,熊經(jīng)武.電子穩(wěn)像技術(shù)概述[J].光學(xué)精密工程,2001,9(4):353-359.
[2]鐘平,于前洋,金光.基于特征點匹配技術(shù)的運動估計及補償方法[J].光電子.激光,2004,15(1):73-77.
[3]張博,吳芝路,張欣宇,等.基于矢量疊加和自適應(yīng)中止的快速運動估計[J].電視技術(shù),2006,30(4):7-10.
[4]羅詩途,王艷玲,張圮,等.車載圖像跟蹤系統(tǒng)中電子穩(wěn)像算法的研究[J].光學(xué)精密工程,2005,13(1):95-103.
[5]周渝斌,趙躍進,劉明,等.基于C6711 DSP的實時數(shù)字穩(wěn)像系統(tǒng)[J].北京理工大學(xué)學(xué)報,2004,24(5):435-438.
[6]孫輝,熊經(jīng)武,趙紅穎.電子穩(wěn)像技術(shù)在船載電視監(jiān)視系統(tǒng)中的應(yīng)用[J].光電工程,2008,35(2):103-108.