蔡耀儀
(中南大學(xué)信息科學(xué)與工程學(xué)院,湖南長(zhǎng)沙 410083)
基于 FPG A的嵌入式穩(wěn)像系統(tǒng)設(shè)計(jì)
蔡耀儀
(中南大學(xué)信息科學(xué)與工程學(xué)院,湖南長(zhǎng)沙 410083)
針對(duì)傳統(tǒng)電子穩(wěn)像平臺(tái)的缺陷,設(shè)計(jì)基于 FPGA的實(shí)時(shí)穩(wěn)像系統(tǒng),運(yùn)用基于圖像分塊投影匹配的穩(wěn)像算法,此系統(tǒng)能夠適應(yīng)存在平移運(yùn)動(dòng)同時(shí)帶有旋轉(zhuǎn)與縮放的運(yùn)動(dòng)畫面,提高算法的精度與適應(yīng)性。對(duì)此算法與傳統(tǒng)算法所消耗時(shí)間進(jìn)行對(duì)比研究,結(jié)果證明,此系統(tǒng)基本能消除隨機(jī)抖動(dòng)。
實(shí)時(shí)穩(wěn)像系統(tǒng);現(xiàn)場(chǎng)可編程門陣列;全局運(yùn)動(dòng)估算
在成像過程中,攝像機(jī)載體的運(yùn)動(dòng)和載體機(jī)座的運(yùn)動(dòng)導(dǎo)致圖像的晃動(dòng),從而造成拍攝的圖像出現(xiàn)抖動(dòng)現(xiàn)象[1],電子穩(wěn)像系統(tǒng)的目的是去除這種不必要的抖動(dòng)而獲得清晰的圖像。電子穩(wěn)像的過程包括運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償兩部分:運(yùn)動(dòng)估計(jì)是得到幀間全局運(yùn)動(dòng)矢量,而運(yùn)動(dòng)補(bǔ)償是完成抖動(dòng)分量的校正。運(yùn)動(dòng)估計(jì)模塊處理簡(jiǎn)單平移運(yùn)動(dòng)常用算法有塊匹配法[2]、位平面匹配法[3]、灰度投影法[4],處理旋轉(zhuǎn)及縮放常用方法有特征法[5]等,這些方法都比較容易受局部運(yùn)動(dòng)和噪聲的干擾。運(yùn)動(dòng)補(bǔ)償模塊主要分為兩種:順向補(bǔ)償和反向補(bǔ)償。
傳統(tǒng)基于“攝像機(jī)—圖像采集卡—計(jì)算機(jī)”模式的穩(wěn)像系統(tǒng)中,圖像檢測(cè)和匹配算法全部由計(jì)算機(jī)完成,然而計(jì)算機(jī)屬于單指令周期的串行處理數(shù)據(jù)方式難以適應(yīng)目前基于多傳感器視頻處理系統(tǒng)的穩(wěn)像任務(wù),其次系統(tǒng)占用體積較大,難以滿足某些特殊場(chǎng)合對(duì)處理系統(tǒng)的體積要求,所以采用新型的 FPGA器件,研制專用的穩(wěn)像處理系統(tǒng)成為既有意義又有實(shí)際需求的工作。
本文以 Xilinx公司的 VirtexⅡPro系列為目標(biāo)器件,建立了包含高速視頻采集模塊、圖像預(yù)處理模塊、數(shù)據(jù)存儲(chǔ)模塊和圖像輸出模塊等部分的高速電子穩(wěn)像系統(tǒng)[6]并重點(diǎn)提出了一種基于圖像分塊投影的運(yùn)動(dòng)估計(jì)算法。實(shí)驗(yàn)證明:研制的電子穩(wěn)像系統(tǒng)既能高速采集數(shù)據(jù),又能較好地實(shí)現(xiàn)穩(wěn)像功能,既有實(shí)際意義又有工程價(jià)值。
視頻序列圖像產(chǎn)生抖動(dòng)的原因來自于攝像機(jī)的運(yùn)動(dòng),這種運(yùn)動(dòng)主要包括平移和旋轉(zhuǎn)。要對(duì)視頻幀序列進(jìn)行穩(wěn)像,首先必須分析攝像機(jī)參數(shù)模型。
攝像機(jī)坐標(biāo)系中,假設(shè)在三維物體上一點(diǎn)從時(shí)刻 tk的坐標(biāo) (X,Y,Z)運(yùn)動(dòng)到時(shí)刻 tk+1的坐標(biāo) (X′,Y′,Z′),可以用帶有矩陣 R描述的旋轉(zhuǎn)和矢量 T描述的平移來合成,如式:
由于圖像視頻序列是三維物體在二維平面的投影,此運(yùn)動(dòng)從時(shí)刻 tk的坐標(biāo) (X,Y)運(yùn)動(dòng)到時(shí)刻 tk+1的坐標(biāo) (X′,Y′),本文選用 6參數(shù)仿射模型從相鄰幀圖像中估計(jì)相應(yīng)坐標(biāo)點(diǎn)的變換關(guān)系。
6參數(shù)估計(jì)模型如圖 1所示。
圖1 六參數(shù)估計(jì)模型示意圖
由圖 1所示,假設(shè)所有從三維實(shí)體觸發(fā)到圖像平面的光線互相平行,二維成像平面上目標(biāo)點(diǎn) (x,y)和目標(biāo)三維實(shí)體對(duì)應(yīng)點(diǎn) (X,Y,Z)的關(guān)系如式 2所示:
由公式 1、公式 2可以聯(lián)立推導(dǎo)如下計(jì)算式:
即可以表示為:
抖動(dòng)視頻幀序列中若存在旋轉(zhuǎn)和縮放運(yùn)動(dòng),由于畫面中個(gè)像素的運(yùn)動(dòng)矢量并不一致,不能單靠圖像中某塊區(qū)域的運(yùn)動(dòng)矢量來估算全局運(yùn)動(dòng)矢量,投影法及代表點(diǎn)匹配法無法對(duì)復(fù)雜運(yùn)動(dòng)進(jìn)行估計(jì),而分塊匹配法和直線變換法雖能估計(jì)復(fù)雜運(yùn)動(dòng)但計(jì)算量大,無法滿足系統(tǒng)實(shí)時(shí)處理要求,本文采用基于分塊投影匹配的運(yùn)動(dòng)估計(jì)算法,其流程如下:
圖2 分塊投影匹配法框圖
算法中圖像分塊的大小需適中,劃分過大會(huì)使得區(qū)域內(nèi)旋轉(zhuǎn)或運(yùn)動(dòng)矢量不能被忽略,而劃分過小則使得區(qū)域內(nèi)包含信息太小。算法的核心部分在于子區(qū)域運(yùn)動(dòng)矢量計(jì)算和全局運(yùn)動(dòng)矢量計(jì)算。子區(qū)域向水平和垂直方向投影,公式如下:
公式 (5)中,Grayk(i,j)是第 K幀圖像上坐標(biāo)為 (i,j)處的灰度值,Colk(j)、Rowk(i)分別表示第 k幀圖像第 j列、第 i行的灰度值,其值分別為此幀圖像上該列、行的所有像素點(diǎn)的灰度和。
在得到子區(qū)域的投影曲線后,可以將當(dāng)前幀的子區(qū)域的行、列投影曲線和參考幀的行、列投影曲線進(jìn)行相關(guān)計(jì)算,以水平相關(guān) (列投影)為例說明相關(guān)計(jì)算公式如下:
其中 Rowt(j)、Rowt+i(j)分別表示當(dāng)前幀和參考幀第j列投影,m值設(shè)定為所預(yù)估的運(yùn)動(dòng)矢量的最大偏移值。當(dāng)C(i)最小時(shí),i的取值為 Imin,則當(dāng)前幀子區(qū)域相對(duì)于參考幀的水平方向的位移為:
得到圖像中等大小的 n小塊在上一幀的位移,即:
其中 i為圖像塊的編號(hào),Δxi、Δyi分別為對(duì)應(yīng)塊圖像在 x軸和 y軸上的運(yùn)動(dòng)矢量。定義函數(shù)ρx,ρy如下:
根據(jù)最小二乘法,當(dāng)ρx,ρy取得最小值時(shí),即:
對(duì)比公式 4的矩陣形式,可以得到幀間旋轉(zhuǎn)角度為:
當(dāng)場(chǎng)景中出現(xiàn)運(yùn)動(dòng)的前景目標(biāo)時(shí),前景目標(biāo)所在子區(qū)域的運(yùn)動(dòng)矢量與全局運(yùn)動(dòng)矢量不符,會(huì)使得估計(jì)出來的全局運(yùn)動(dòng)矢量不精確,例如,車載拍攝一段視頻時(shí),當(dāng)汽車刮雨器刮過時(shí),會(huì)造成穩(wěn)像結(jié)果發(fā)生偏差。本文采用迭代的最小二乘估計(jì),每次將誤差值較大的運(yùn)動(dòng)矢量進(jìn)行剔除,算法如下:
1)將各子區(qū)域通過灰度投影法求取的運(yùn)動(dòng)矢量歸入初始數(shù)據(jù)集合中。
3)由數(shù)據(jù)集合中所有運(yùn)動(dòng)矢量和全局運(yùn)動(dòng)參數(shù)所求得的運(yùn)動(dòng)矢量的平均誤差 E:
式中,Δxi、Δyi為第 i小塊經(jīng)過塊匹配計(jì)算出的運(yùn)動(dòng)矢量為用運(yùn)動(dòng)參數(shù)恢復(fù)出的運(yùn)動(dòng)矢量
4)將計(jì)算得到的運(yùn)動(dòng)矢量集合誤差大于 E的數(shù)據(jù)剔除,根據(jù)剩余數(shù)據(jù)重新計(jì)算全局運(yùn)動(dòng)矢量,若新數(shù)據(jù)和上次迭代得到的數(shù)據(jù)集合一致則停止迭代,否則繼續(xù)迭代。
FPGA是現(xiàn)場(chǎng)可編程門陣列的英文縮寫,作為專用集成電路中的一種半定制電路,既解決了定制電路的不足,又克服了原有可編程邏輯器件門電路數(shù)有限的缺點(diǎn)。系統(tǒng)使用 Xilinx公司的新一代 VirtexⅡpro X2VP30系列可編程邏輯器件并借助 ISE和 EDK開發(fā)工具設(shè)計(jì)實(shí)時(shí)穩(wěn)像系統(tǒng)。
系統(tǒng)整體設(shè)計(jì)的框圖如圖 4所示,穩(wěn)像算法實(shí)現(xiàn)模塊是整個(gè)系統(tǒng)的核心模塊,預(yù)處理和主要算法的實(shí)現(xiàn)全部在穩(wěn)像算法實(shí)現(xiàn)模塊中完成。當(dāng)完成穩(wěn)像處理后,系統(tǒng)將數(shù)據(jù)儲(chǔ)存到內(nèi)部存儲(chǔ)器中并可由系統(tǒng)上的 PLB總線訪問數(shù)據(jù),從而能夠隨時(shí)將實(shí)時(shí)處理后的數(shù)據(jù)傳輸給后續(xù)處理系統(tǒng)。
圖3 FPGA穩(wěn)像系統(tǒng)框圖
系統(tǒng)采集的實(shí)時(shí)圖像需要進(jìn)行一定的預(yù)處理才能進(jìn)行投影計(jì)算。預(yù)處理能一定程度上減少噪聲干擾,提高系統(tǒng)的準(zhǔn)確性?;陬I(lǐng)域的處理算法復(fù)雜度較大,計(jì)算次數(shù)為圖像尺寸與領(lǐng)域模板尺寸的乘積,采用基于通用串行處理方式的計(jì)算機(jī)系統(tǒng)無法滿足實(shí)時(shí)性要求,而純硬件實(shí)現(xiàn)的領(lǐng)域提取電路基于并行處理結(jié)構(gòu)并屬于純硬件實(shí)現(xiàn),具有極高的實(shí)時(shí)性,其實(shí)現(xiàn)結(jié)構(gòu)如圖 4所示。
對(duì)視頻圖像數(shù)據(jù)的存儲(chǔ)是觸發(fā)器和行延時(shí)存儲(chǔ)器存儲(chǔ),由于采用數(shù)據(jù)流方式,對(duì)寄存器資源的需求只與模板尺寸有關(guān)。每個(gè)像素時(shí)鐘周期內(nèi),系統(tǒng)采集輸入一個(gè)新的像素點(diǎn)的值,相應(yīng)的緩存器模塊中的數(shù)據(jù)值都從左到右移動(dòng)一位。
圖4 領(lǐng)域提取電路
系統(tǒng)最關(guān)鍵的步驟是對(duì)采集的每幀圖像進(jìn)行分塊并在此基礎(chǔ)上獲得行、列投影值,基于硬件加速的分塊投影電路實(shí)際為圖像特定行、列上灰度值累加電路。
由于對(duì)每塊圖像行、列投影計(jì)算方法相同,系統(tǒng)設(shè)計(jì)了兩套獨(dú)立的分別對(duì)圖像行、列進(jìn)行投影計(jì)算的電路,電路結(jié)構(gòu)如圖 5所示。電路由一個(gè)寬度為 19 bit深度為 128的雙口 RAM,一個(gè)加法器,一個(gè)讀寫時(shí)序模塊和一個(gè)數(shù)據(jù)選擇模塊組成。雙口 RAM的特點(diǎn)是 A口可供硬件讀寫的同時(shí),B口能供總線訪問,19bit保證的是數(shù)據(jù)不會(huì)溢出,而深度為 128是系統(tǒng)默認(rèn)將每幀圖像按照?qǐng)D像大小 64×64進(jìn)行分塊,并進(jìn)行雙倍 RAM空間下的乒乓操作,從而保證在統(tǒng)計(jì)過程中與總線訪問互不沖突,這種乒乓操作的空間切換由高位地址決定。雙口 RAM的 A口存在兩種操作:清空和統(tǒng)計(jì)。在圖像有效數(shù)據(jù)傳輸?shù)拈g隙,數(shù)據(jù)選擇模塊MUX選擇清空時(shí)序,對(duì)雙口 RAM內(nèi)數(shù)據(jù)進(jìn)行清空,在有效數(shù)據(jù)到來時(shí)選擇統(tǒng)計(jì)時(shí)序。這種設(shè)計(jì)避免了統(tǒng)計(jì)中的漏統(tǒng)現(xiàn)象,并能將結(jié)果輸出給后續(xù)模塊計(jì)算。
圖5 高速分塊投影電路
系統(tǒng)采用的是線陣 CCD攝像頭,攝像頭為 PAL制式,經(jīng)過 FPGA處理后的視頻數(shù)據(jù)送到顯示控制器中進(jìn)而在液晶觸摸顯示屏上顯示。系統(tǒng)裝置在小車上,針對(duì)一段公路場(chǎng)景進(jìn)行實(shí)時(shí)穩(wěn)像后得到的視頻幀序列圖像如圖 6所示:
圖7給出了某段車載視頻拍攝圖像穩(wěn)定前后兩幀視頻的差圖像,可以看出穩(wěn)像前視頻幀序列前后兩幀差異很大,經(jīng)過穩(wěn)像后前后兩幀之間像素值差異明顯變小,兩幀重合度變大,視覺效果明顯改善,穩(wěn)像后兩幀差圖像會(huì)出現(xiàn)白色邊框的原因是運(yùn)動(dòng)補(bǔ)償后圖像的邊界在不斷改變。
圖7 穩(wěn)像前后兩幀圖像差
算法在主頻為 1.4GHZ的 CORE雙核處理器,內(nèi)存為1024MB的筆記本電腦上,使用 V ISUAL C++,穩(wěn)定 640×480的圖像序列的平均時(shí)間為 30.3ms,與傳統(tǒng)分塊匹配法和特征點(diǎn)匹配法進(jìn)行比較,如表1所示:
表1 算法時(shí)間比較
可以看出,在同樣能解決旋轉(zhuǎn)和變形能復(fù)雜抖動(dòng)情況下,采用分塊投影匹配法所耗費(fèi)的時(shí)間明顯低于其他兩種傳統(tǒng)穩(wěn)像算法。
表2 系統(tǒng)硬件資源消耗
由 FPGA系統(tǒng)內(nèi)部的時(shí)鐘管理單元可以得到,其對(duì)PAL制式彩色攝像頭拍攝的實(shí)時(shí)視頻數(shù)據(jù)進(jìn)行穩(wěn)像所耗費(fèi)的時(shí)間為 306μs,而 PAL制每秒為 25幀,即每 40ms采集一幀圖像,即采用 FPGA實(shí)現(xiàn)穩(wěn)像系統(tǒng)能夠?qū)崟r(shí)對(duì)采集視頻幀序列進(jìn)行穩(wěn)像。
本文對(duì)現(xiàn)有穩(wěn)像算法進(jìn)行了改進(jìn),提出了一種分塊投影匹配的算法,使其能夠滿足算法處理速度及穩(wěn)像精度雙重要求,并基于 FPGA設(shè)計(jì)了實(shí)時(shí)穩(wěn)像系統(tǒng),實(shí)驗(yàn)表明,穩(wěn)像系統(tǒng)效果較好,能夠達(dá)到高速實(shí)現(xiàn)穩(wěn)像的要求。由于本文對(duì)運(yùn)動(dòng)補(bǔ)償部分并沒有太多研究,因此對(duì)于得到運(yùn)動(dòng)估計(jì)結(jié)果后的運(yùn)動(dòng)補(bǔ)償部分還需進(jìn)一步改進(jìn)。
[1]賀順.運(yùn)動(dòng)估計(jì)與運(yùn)動(dòng)補(bǔ)償在電子穩(wěn)像中的應(yīng)用[J].計(jì)算機(jī)工程,2007,33(15):224-226.
[2]TAO Tangfei,KOO J C,CHO IH R.A fast block matching algorthim for stereo correspondence[C]. Cybernetics and Intelligent Systems,2008 IEEE Conference on 21-24 Sept.2008 Page(s):38-41.
[3]CEIEB IA,AKBULUTO,URHAN O.Truncated graycoded bitplane matching based motion estimation and its hardware architecture[J].IEEE Trans.on Consumer Electronics,2009,55(3):1530-1536.
[4]陳躍庭,李奇,許東暉,等.投影算法與塊匹配法結(jié)合的實(shí)時(shí)數(shù)字穩(wěn)像方法 [J].浙江大學(xué)學(xué)報(bào):工學(xué)版,2007,41(9):1537-1540.
[5]宋永江,夏正良,楊世周.基于多直線特征的電子圖像穩(wěn)定算法[J].東南大學(xué)學(xué)報(bào),2002,32(2):211~217.
[6]時(shí)永剛,周渝斌,趙躍進(jìn).實(shí)時(shí)電子數(shù)字穩(wěn)像系統(tǒng)并行處理的快速實(shí)現(xiàn)[J].電子與信息學(xué)報(bào),2006,28(7):114-117.
(責(zé)任編校:光明)
Design about Embedded Stabilization Image System Based on FPGA
CAI Yao-yi
(School of Infor mation Science and Engineering,Central South University,Changsha,410083,China)
In accordance with the shortcomings of traditional electronic stabilization image platform,real-time stabilization image system based on FPGA is designed.Stabilization image based on image block-matching algorithm is applied.Time-consuming algorithms are compared with the traditional algorithm.The results show that this system can basically eliminate random jitter.
real-time stabilization image system;FPGA;globalmotion estimation
TP391
A
1673-0712(2010)02-0017-04
2010-02-05.
蔡耀儀 (1984-),男,湖南長(zhǎng)沙人,中南大學(xué)信息科學(xué)與工程學(xué)院碩士研究生,研究方向:圖像處理。