陳文藝,田 科,周 娟
(西安郵電大學(xué)通信與信息工程學(xué)院,陜西西安 710061)
基于FPGA的實時視頻圖像幾何校正系統(tǒng)設(shè)計
陳文藝,田 科,周 娟
(西安郵電大學(xué)通信與信息工程學(xué)院,陜西西安 710061)
基于后向映射查找表結(jié)構(gòu)的幾何校正算法的研究,針對雙線性插值算法的特殊性,提出了四鄰域像素的圖像存儲和插值方法,實現(xiàn)了圖像插值時對靜態(tài)存儲器SRAM的快速隨機讀寫。根據(jù)該方法設(shè)計的基于FPGA的實時視頻圖像幾何校正系統(tǒng)的視頻延時小于一幀,只需要改變視頻圖像的后向映射查找表,就可實現(xiàn)不同映射的視頻圖像幾何校正。
FPGA;SRAM;幾何校正;圖像處理
【本文獻信息】陳文藝,田科,周娟.基于FPGA的實時視頻圖像幾何校正系統(tǒng)設(shè)計[J].電視技術(shù),2014,38(3).
在軍事偵察、大視場、航天和航空攝影、醫(yī)療視景等眾多領(lǐng)域中,經(jīng)常會對存在幾何畸變的視頻圖像進行必要的畸變校正,同時還需要對采集的視頻圖像進行實時的處理[1]。由于圖像幾何校正的算法復(fù)雜靈活,視頻圖像處理涉及的數(shù)據(jù)量龐大,因此在視頻圖像處理時對硬件設(shè)計系統(tǒng)在運行復(fù)雜算法、處理大量數(shù)據(jù)方面有很高的要求,以便滿足系統(tǒng)的實時性、高效性和穩(wěn)定性。隨著FPGA的制造工藝和集成技術(shù)的迅速發(fā)展,采用FPGA的數(shù)字硬件系統(tǒng)越來越體現(xiàn)出其在圖像處理中的優(yōu)越性[2]。本文提出的基于FPGA的實時視頻圖像幾何校正系統(tǒng),使用VGA視頻采集卡作為圖像采集設(shè)備,利用Altera的Stratix II系列FPGA芯片將輸入的視頻圖像進行存儲、幾何校正處理和顯示。從硬件系統(tǒng)設(shè)計的角度出發(fā),采用四鄰域存儲圖像技術(shù)結(jié)合后向映射查找表和雙線性插值方法,以FPGA+NIOS II處理器組成的結(jié)構(gòu)實現(xiàn)了對實時視頻圖像的輸入、幾何畸變校正處理和輸出。
系統(tǒng)的基本結(jié)構(gòu)如圖1所示,根據(jù)設(shè)計要求,將系統(tǒng)劃分為5個組成模塊:視頻圖像輸入模塊、圖像數(shù)據(jù)存儲模塊、預(yù)畸變系數(shù)存儲模塊、FPGA圖像處理模塊、視頻圖像輸出模塊。FPGA作為系統(tǒng)的核心控制芯片,SRAM A、SRAM B作為視頻圖像數(shù)據(jù)存儲器,SRAM C用于存儲后向映射查找表。
圖1 幾何校正系統(tǒng)的功能框圖
外部設(shè)備(如CMOS傳感器)以60 f/s(幀/秒)的速度輸入視頻圖像數(shù)據(jù),圖像輸入模塊將采集的視頻圖像轉(zhuǎn)換為Avalon-ST視頻流信號,通過FPGA的控制按照四鄰域的格式緩存至片外的SRAM A、SRAM B幀存儲器中。預(yù)畸變系數(shù)以后向映射坐標的方式存儲在片外SRAM C存儲器中,F(xiàn)PGA通過查表SRAM C獲取后向映射坐標,根據(jù)坐標計算出訪問SRAM A、SRAM B的讀地址,按乒乓方式輪流讀出SRAM A、SRAM B中視頻圖像的像素數(shù)據(jù)。FPGA圖像處理模塊根據(jù)圖像的像素數(shù)據(jù)值和插值權(quán)值完成雙線性插值運算,得到預(yù)畸變圖像的像素值。視頻圖像輸出模塊將插值結(jié)果后的圖像數(shù)據(jù)轉(zhuǎn)換數(shù)字視頻圖像,并同步產(chǎn)生VGA輸出顯示的控制時序。
在數(shù)字圖像處理中圖像的輸入是關(guān)鍵的一步,直接影響圖像處理的性能。本系統(tǒng)接收的數(shù)字視頻圖像格式為VGA(Video Graphic Array)格式。依據(jù)VGA視頻格式時序標準,800×600分辨率的視頻圖像顯示一行像素包含1 056點,其中800點為有效顯示區(qū),256點為消隱區(qū);同理顯示一幀圖像有628行,其中有效行顯示為600行,消隱行顯示為284行。行、場掃描時序圖如表1所示。
表1 行、場掃描時序
視頻圖像輸入模塊將接收的數(shù)字視頻圖像VGA格式轉(zhuǎn)換為滿足Avalon-ST視頻處理協(xié)議的視頻流,以方便后續(xù)以視頻流的形式存儲和傳輸數(shù)據(jù)。在系統(tǒng)設(shè)計時需要將外部50 MHz的時鐘經(jīng)過FPGA內(nèi)部鎖相環(huán)PLL得到所需要的40 MHz像素時鐘,并利用Avalon-ST接口進行視頻處理,輸出標準的串行數(shù)據(jù)流。采用Avalon-ST接口處理圖像和視頻數(shù)據(jù)極大地提高了系統(tǒng)的處理速度[3]。
2.2.1 預(yù)畸變系數(shù)存儲器SRAM
基于后向映射查找表的幾何校正方法區(qū)別于傳統(tǒng)的提取控制點得到函數(shù)關(guān)系式的校正方法,具體區(qū)別為:1)將標準圖像與畸變圖像空間坐標的映射關(guān)系以查找表的形式存儲;2)按照逐行逐像素的順序查找映射表獲取理想圖像在畸變圖像空間中的幾何位置[4-6];3)通過MATLAB軟件完成算法功能,仿真得到預(yù)畸變圖像系數(shù)(具體算法實現(xiàn)見文獻[6]。
如表2所示,預(yù)畸變圖像系數(shù)由x,dx,y,dy四部分組成,其中x,y分別代表該像素的列坐標和行坐標,dx,dy代表的是量化后的雙線性插值的權(quán)值。坐標(x+dx,y+dy)表示當前輸出的目標圖像像素點映射回原圖像空間中的像素坐標[7],如圖2 所示。
表2 后向映射坐標的存儲結(jié)構(gòu)
2.2.2 圖像存儲器SRAM
視頻圖像數(shù)據(jù)的存儲方式是該系統(tǒng)最重要的設(shè)計思想之一,由于視頻圖像數(shù)據(jù)量大,實時性要求高,需要大量的存儲空間及較高的運算速度。SRAM控制簡單,只要給出讀寫地址就可以進行數(shù)據(jù)的讀寫操作,適合隨機數(shù)據(jù)的讀寫,因此,為了加快外部存儲器的訪問速度、減少幀緩存的延遲時間,最終選用SRAM作為外部存儲器[8-9]來緩存視頻圖像數(shù)據(jù),同時提出了以存儲空間換取存儲時間的設(shè)計思想。
圖2 4鄰域像素的位置示意圖
圖像像素的排列格式如表3、表4所示,由于雙線性插值運算是利用周圍4個相鄰點的灰度值,在2個方向上作線性內(nèi)插以得到采樣點的灰度值,因此,圖像存儲器SRAM將輸入圖像雙線性插值運算所需的4個像素數(shù)據(jù)存儲在同一個地址單元,每一次讀取插值的4個像素僅需要一個時鐘周期信號。四鄰域像素存儲格式就是以4倍的存儲空間使像素的尋址效率提升了4倍,最大限度地提高了FPGA的運算速度,降低幀存儲的延遲時間,降低系統(tǒng)總體功耗。
表3 圖像像素的原始排列格式
表4 圖像像素的4鄰域存儲格式
1)SRAM存儲器按照圖像像素的原始排列格式,如表3。如果要計算P1、P2、P801、P802四個像素點的雙線性插值運算,這4個像素點分布在相鄰的兩行和兩列,因此要給出2個不同的行地址和列地址,即地址(1,1)、(1,2)、(2,1)、(2,2),才能得到需要插值的 4 個像素點值。這樣每次FPGA需要向SRAM發(fā)出4次地址信號才能得到一組雙線性插值所需的數(shù)據(jù),這將增加系統(tǒng)的訪問開銷,降低系統(tǒng)的性能。
2)SRAM存儲器采用四鄰域存儲格式,如表4。將每次圖像插值所需的4個像素數(shù)據(jù)存儲在相同的地址單元,只要給出相應(yīng)的地址便可一次讀取出4個像素數(shù)據(jù),完成相應(yīng)位置的雙線性插值操作。計算P1、P2、P801、P802四個像素點的雙線性插值運算,F(xiàn)PGA只需要向SRAM發(fā)出一次地址(0),可以忽略圖像的行列而一次從SRAM中讀取P1、P2、P801、P802四個像素點數(shù)據(jù)進行雙線性插值運算。因此,圖像存儲器采用四鄰域的存儲方案,極大地提高了像素數(shù)據(jù)的讀取效率,保證系統(tǒng)的實時性要求。
實時視頻圖像幾何校正系統(tǒng)既需要運行復(fù)雜靈活的算法又需要大量的預(yù)處理操作,因此采用NIOS II處理器加FPGA控制及處理單元的架構(gòu),如圖3所示。輸入的視頻圖像信號源是單色數(shù)字視頻圖像,通過VGA接口直接送入FPGA。視頻圖像的輸出采用ADV7125作為D/A轉(zhuǎn)換器,并控制圖像經(jīng)VGA接口輸出至圖像顯示設(shè)備。
圖3 幾何校正系統(tǒng)的FPGA實現(xiàn)框圖
FPGA硬件系統(tǒng)分為兩部分,一部分是利用SOPC技術(shù)配置的NIOS II系統(tǒng),另一部分是幾何預(yù)畸變電路。其中NIOS II系統(tǒng)主要負責系統(tǒng)的調(diào)度以及讀入和寫入后向映射表數(shù)據(jù)的工作。幾何預(yù)畸變電路則是整個視頻圖像幾何校正系統(tǒng)的核心處理單元,主要完成單色數(shù)字視頻圖像的接收和緩存,插值運算以及VGA輸出顯示控制[3-4]等工作。工作原理如下:
1)NIOS II處理器通過JTAG-UART接口將后向映射表數(shù)據(jù)讀入系統(tǒng),然后系統(tǒng)再將其寫入到Flash中;
2)系統(tǒng)再次上電后將Flash中的后向映射表讀至SRAM C中存儲;
3)切換SRAM C到處理電路,NIOS II系統(tǒng)通過PIO端口啟動幾何預(yù)畸變處理電路,對輸入視頻圖像進行實時的幾何預(yù)畸變處理,并將處理結(jié)果送入ADV7125進行數(shù)模轉(zhuǎn)換;
4)將數(shù)模轉(zhuǎn)換完成后的數(shù)字視頻圖像和行、場同步信號一起輸出至VGA接口顯示。
本設(shè)計是基于Quartus II 9.1和ModelSim6.5進行仿真驗證的,采用的芯片是 StratixII系列 EP2S30F484I4[10]。為了確保設(shè)計的正確性和可行性,對整個系統(tǒng)的Verilog HDL設(shè)計進行綜合仿真調(diào)試[11],仿真結(jié)果如下文所示。
Avanlon-ST接口在Modelsim仿真器中的仿真結(jié)果,如圖4所示。輸入VGA視頻信號有:vid_data視頻數(shù)據(jù)、vid_valid視頻數(shù)據(jù)有效信號、vid_hsync行同步信號、vid_vsync幀同步信號;輸出為Avalon-ST視頻流信號,video_data數(shù)據(jù)信號,video_start、video_end和 video_valid分別是幀開始、幀結(jié)束和幀有效3個控制信號。
圖4 Avalon-ST接口仿真結(jié)果(截圖)
如圖5所示,預(yù)畸變電路的整體仿真結(jié)果中可以看出視頻圖像數(shù)據(jù)被按幀分別緩存至A、B兩組SRAM幀存儲器,再通過查表操作獲取后向映射坐標以完成圖像插值運算,最后將灰度結(jié)果以VGA信號輸出。
圖5 預(yù)畸變電路仿真結(jié)果(截圖)
800×600分辨率的視頻圖像通過VGA接口輸入到FPGA,進行實際測試。通過顯示器觀察,輸出結(jié)果與預(yù)期結(jié)果基本吻合,其可靠性和正確性得到驗證。圖6為幾何校正系統(tǒng)輸出的預(yù)畸變圖像,上圖為標準的800×600分辨率圖像,下圖為系統(tǒng)輸出的預(yù)畸變圖像。
圖6 幾何校正系統(tǒng)輸出的預(yù)畸變圖像
通過數(shù)字投影儀,將幾何校正系統(tǒng)輸出的幾何預(yù)畸變圖像投影至對應(yīng)形狀的非平面屏幕,即可將其顯示為無畸變的投影圖像,從而最終實現(xiàn)了對投影至非平面屏幕的數(shù)字視頻圖像的實時幾何校正。
目前,該系統(tǒng)已經(jīng)實現(xiàn)了對數(shù)字視頻圖像的實時幾何校正且已投入到實際的工程應(yīng)用中,工作時鐘頻率為40 MHz,處理800×600分辨率、幀速率為60 f/s(幀/秒)的單色數(shù)字視頻圖像。
與傳統(tǒng)的基于PC機平臺的視頻圖像處理系統(tǒng)相比,本系統(tǒng)具有以下特點:
1)實時性強。由于傳統(tǒng)的PC機平臺采用的算法是串行的,每個運算過程需要等待當前運算完成后才可以開始;而FPGA內(nèi)部的處理均是并行的,可以在算法設(shè)計的過程中加入流水線或采用乒乓操作等給算法加速,在操作互不依賴的時候可同時進行運算。
2)設(shè)計靈活、實用性強。本系統(tǒng)的設(shè)計集成度高,運行算法時間短,處理圖像延時小于一幀,只需要改變視頻圖像的后向映射查找表,就可實現(xiàn)不同映射的視頻圖像幾何校正。
3)結(jié)構(gòu)簡單、可靈活定制。FPGA內(nèi)部資源豐富,可進行諸如防抖動、濾波等圖像的前期處理,此外FPGA具有豐富的IP核可供使用,可在此設(shè)計基礎(chǔ)上完成更高分辨率的幾何校正算法實現(xiàn)。
:
[1]王德勝,康令州.基于FPGA的實時圖像采集與預(yù)處理[J].電視技術(shù),2011,35(3):32-35.
[2]張杰.基于FPGA的數(shù)字圖象處理[D].武漢:武漢科技大學(xué),2009.
[3]宋海吒,唐立軍,謝新輝.基于FPGA和OV7620的圖像采集及VGA顯示[J].電視技術(shù),2011,35(5):45-47.
[4]周秉鋒.一個基于線性變換的數(shù)字圖像自由拉伸算法[J].北京大學(xué)學(xué)報:自然科學(xué)版,1997,33(6):770-775.
[5]張森.數(shù)字圖像幾何畸變自動校正算法的研究與實現(xiàn)[D].上海:上海交通大學(xué),2007.
[6]王健,陳文藝,王波,等.投影圖像畸變的一種校正方法[J].西安郵電學(xué)院學(xué)報,2011,16(1):65-69.
[7]EADIE D,SHEVLIN F,NISBET A.Correction of geometric image distortion using FPGAs[EB/OL].[2013-05-06].http://wenku.baidu.com/link?url=xfFzJetNn5RVFBUyd562wyWFbSE23AtPUttQI-04vPsiTX2eYFa8u-NhRKGQ4e2vn5XBsMWL-LhuTrs1znUMlkrYAh04gVam3dPFMBM-nLW.
[8]CY7C1061AV33 Datasheet[EB/OL].[2013-04-30].http://www.alldatasheet.com/view.jsp?Searchword=CY7C1061AV33-10ZXI.
[9]向厚振,張志杰,王鵬.基于FPGA視頻和圖像處理系統(tǒng)的FIFO緩存技術(shù)[J].電視技術(shù),2012,36(9):41-43.
[10]Stratix II Device Handbook[EB/OL].[2013-04-28].http://wenku.baidu.com/linkurl=14RVBCI0BiYCNV_z9eBVn6yeKKjeDjqltr7tQ7C4v-6LIuH9pLd603eJlsNbJFcnhYElGL94gCxETfnIm9uILlUvYgaTVvv1L80 a8Qrgrxa.
[11]夏雨聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京:北京航空航天大學(xué)出版社,2003.
Real-time Video Images Geometric Correction System Based on FPGA
CHEN Wenyi,TIAN Ke,ZHOU Juan
(Department of Communication and Information Engineering,Xi'an University of Posts and Telecommunications,Xi'an 710061,China)
Based on research of backward mapping lookup table architecture for geometric correction and the particularity of bilinear interpolation,the image storage and interpolation method of four neighborhood pixels is put forward.And it realizes how to make use of the frame buffer technology of four neighborhood images to achieve fast random access to SRAM.According to this method,the video delay of real-time image geometric correction system based on FPGA is one frame less than before.Only modification on video image backward mapping lookup table architecture is required to realize different video image projections geometric correction.
FPGA;SRAM;geometric correction;image processing
TN492
B
陳文藝(1964— ),教授,主要從事通信集成電路設(shè)計、視頻圖像實時處理及傳輸?shù)难芯?
田 科(1984— ),碩士生,主研物聯(lián)網(wǎng)技術(shù)與應(yīng)用;
周 娟(1989— ),女,碩士生,主研物聯(lián)網(wǎng)技術(shù)與應(yīng)用。
責任編輯:魏雨博
2013-06-01