《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的四通道視頻縮放引擎的研究及設計
基于FPGA的四通道視頻縮放引擎的研究及設計
來源:電子技術應用2011年第8期
陳浩利1,2,鄭學仁1
1.華南理工大學 電信學院,廣東 廣州510640; 2.廣東威創(chuàng)視訊科技股份有限公司,廣東 廣州510663
摘要: 設計了一種可實現(xiàn)4路視頻信號縮放和幀率轉(zhuǎn)換的電路架構。視頻信號依次經(jīng)過縮小模塊、幀率轉(zhuǎn)換模塊以及放大模塊,有效地減少了幀率轉(zhuǎn)換對存儲器帶寬的需求。幀率變換模塊采用輸入和輸出自適應調(diào)整的算法,同時在縮小模塊采用加權均值算法,而放大模塊則采用四點雙三次插值算法。在滿足視頻放大質(zhì)量要求的基礎上,避免了采用過于復雜算法而消耗過多的FPGA資源,有效地解決了視頻放大算法實現(xiàn)視頻縮小時原始圖像信息量丟失導致圖像失真的問題。
中圖分類號: TP302.1
文獻標識碼: A
文章編號: 0258-7998(2011)08-0056-03
Research and design of four-channel video zooming engine based on FPGA
Chen Haoli1,2,Zheng Xueren1
1.School of Electronic and Information Engineering, South China University of Technology,Guangzhou 510640,China; 2.Guangdong Viron Technologies Co.,Ltd., Guangzhou 510663,China
Abstract: This paper presents an architecture to achieve four-channel video scaling and frame rate conversion. The video signal go through after zoom out module, the frame rate conversion module and the zoom in module in turn, reduce the demand for memory bandwidth effectively. An input and output frame rate adaptive algorithm is proposed, and the zoom out module uses a weighted average algorithm, the zoom in module uses a four-o'clock bi-cubic interpolation algorithm, avoiding excessive consumption of FPGA resources to meet the video quality, and solves the problem of image distortion caused by the loss of original image information when using the video zoom in algorithm to zoom out the video.
Key words : FPGA;weighted average interpolation;bi-cubic interpolation;frame rate conversion;DDR2


    數(shù)字視頻縮小和放大(簡稱縮放)是視頻處理的一個重要分支,是基于對數(shù)字視頻每幀圖像的處理來實現(xiàn)的。常見的縮放算法有最近鄰域法、雙線性插值法、拋物線插值法、雙三次插值法和牛頓插值法等基于多項式的插值算法[1],較容易在FPGA硬件上實現(xiàn);也有B樣條插值法、基于小波插值和有理插值等比較復雜的算法,難以在FPGA上實現(xiàn)。
    近年來隨著液晶平板顯示器件的廣泛應用,對于定標器的研究越來越多且研究成果也很豐富。但定標器的縮放比例有限,一般在0.5~4之間,在這個范圍內(nèi)采用2階或3階多點插值算法,圖像的邊緣和細節(jié)可以較好保存。但是采用定點插值法,當文字縮小比例較大時,會丟失較多的細節(jié),出現(xiàn)字體筆畫斷裂或者鋸齒現(xiàn)象。而采用低階算法(例如多點均值插值),參與運算的點較多,可以有效提高文字的顯示質(zhì)量。
1 系統(tǒng)架構
    系統(tǒng)架構如圖1所示,先對輸入視頻的分辨率進行檢測,將檢測值送至MCU,MCU用其確定縮放步長;然后對視頻進行縮小操作。如果要對信號進行放大,則繞過該模式;接著將視頻數(shù)據(jù)送至IFIFO緩存,由仲裁器和DDR2控制器實現(xiàn)4個通道數(shù)據(jù)的幀率變換后,視頻數(shù)據(jù)送至OFIFO模塊;接著數(shù)據(jù)被送至放大模塊,完成放大操作。如果要對視頻信號進行縮小,則繞過該模式;最后將完成處理的RGB視頻信號輸出。整個縮放過程所需要的縮放步長、通道選擇等配置信號全部由MCU通過本地總線配置FPGA。

    

其中,f(x,y)為縮小圖像某點的像素值,f(xi,yi)為圖像子塊中各點的像素值。
    實現(xiàn)結果如圖5所示,較好地保證了文字的正常顯示。

 

 

4 幀率變換
4.1 輸入緩存 IFIFO

    每一路IFIFO都需要在FIFO中數(shù)據(jù)量大于1/2 FIFO深度時向仲裁模塊發(fā)送占用DDR2總線的請求信號REQ,應答信號AGREE有效時,向DDR2控制器發(fā)送數(shù)據(jù)。當完成一定量的讀出數(shù)據(jù)時,往仲裁模塊發(fā)送一個發(fā)送結束信號END,仲裁模塊接收到END信號后將DDR2總線控制權收回,IFIFO等待下一次應答。
4.2 輸出緩存OFIFO
    其實現(xiàn)原理與IFIFO類似,只是該模塊的輸入端工作在DDR2工作時鐘域,輸出模塊工作在幀率變換后的視頻圖像的像素時鐘域。
4.3 仲裁
    共有4路輸入和4路輸出占用DDR2帶寬,需要劃分時間片來保證各個通道能夠順暢地顯示,優(yōu)先級依次為第1、2、3、4通道讀,第1、2、3、4通道寫。本模塊采用狀態(tài)機控制,狀態(tài)機在上述8個狀態(tài)中循環(huán)跳轉(zhuǎn),然后跳回IDEL狀態(tài),開始下一輪循環(huán)。
    仲裁模塊的另一個任務就是讀寫DDR2地址的生成。將DDR2的存儲空間劃分為4個部分,每個部分存儲一路視頻信號,每路視頻信號存儲3幀。同時讀DDR2時,命令設置為讀操作;寫DDR2時,命令設置為寫操作。
    現(xiàn)就一路視頻實現(xiàn)幀率變換討論如下:創(chuàng)建3個指針分別指向3幀數(shù)據(jù)的DDR2空間基地址,系統(tǒng)啟動時,讀指針rd_pointer、當前寫指針current_wr_pointer和之前寫指針pre_wr_pointer分別按照圖6所示的狀態(tài)圖在3個基地址之間跳轉(zhuǎn)。

    最近鄰域插值法存在很強的波瓣,頻率響應較差。當圖像中包含像素值有變化的細微結構時,最近鄰插值會在圖像中產(chǎn)生人為的痕跡,造成圖像模糊或產(chǎn)生人為噪聲點。
    線性插值法頻譜的旁瓣遠小于主瓣,帶阻特性較好。但通帶內(nèi)高頻成分衰減過快,會使得插值后的圖像變模糊。
    四點立方插值通帶內(nèi)高頻成分衰減明顯變慢,且旁瓣不超過1%,具有較好的高頻響應特性,縮放后的圖像能夠保持更多細節(jié)。
    六點立方插值算法的頻率響應特性更加優(yōu)越,通帶內(nèi)高頻成分衰減更慢且旁瓣更低。
    四點立方插值較好地保持了圖像的細節(jié),實現(xiàn)難度和占用邏輯資源適中。六點立方插值雖然實現(xiàn)效果更好,但是占用的邏輯資源較多。故本設計采用四點立方插值算法實現(xiàn)視頻的放大操作。
5.2 插值基函數(shù)
    圖像插值縮放具有二維可分解的特點,可以將二維圖像的插值分解為分別沿x和y方向的一維信號插值[3]。一維方向上,利用插值點的四個臨近像素點進行三次插值, Keys將sinc離散函數(shù)進行泰勒級數(shù)展開后,使三次分段多項式和原始信號的泰勒級數(shù)展開式盡可能多項吻合,以此推導出插值基函數(shù)表達式[4]。
  
5.3.1 抽頭系數(shù)的產(chǎn)生
    將插值的系數(shù)存在ROM中,這樣雖然使用三次方插值,但是不用在FPGA中實現(xiàn)三次方的運算,提高了運算速度。例如原圖像一行有3個像素,要求插值后的圖像一行有8個像素,則新圖像一行的第5個點在原圖像中映射的坐標為[(5-1)×2/7]+1=15/7=2+1/7≈
′b0010.1001,整數(shù)2為其原圖像中左邊臨近的像素點坐標為2,1/7表示其與坐標為2的原圖像像素的距離為1/7。此時將小數(shù)部分1001作為地址讀出存儲在該地址的抽頭系數(shù),將其送給卷積器。
5.3.2 插值參考點控制
    放大時,對縮放步長進行累加,當小數(shù)向個位數(shù)進位時,開始讀取一個新的數(shù)據(jù)。例如計算插值后圖像某個點時,采用原圖像的x4、x5、x6、x7作為插值參考點,則當步長累加器有進位時,讀取下一個像素值x8,同時將x5、x6、x7移到x4、x5、x6的寄存器位置,而x8則存入之前x7的位置,這樣就可以實現(xiàn)從原圖像向目標圖像的地址映射,避免從目標圖像到原圖像地址映射過程出現(xiàn)的乘法運算。
5.4 行緩存
    行緩沖存儲器的主體為若干個存儲容量相同的雙口隨機存儲器(DRAM),每個DRAM存儲一行的有效像素數(shù)據(jù)。
    為了確保行緩存不溢出,開辟6個行緩存器,存儲時按順序1-2-3-4-5-6-1循環(huán)存放,讀取時按循環(huán)次序讀取。
5.5 垂直方向放大
    垂直方向放大濾波器架構和水平方向一樣,只是插值參考點來自于不同的行緩存空間里相同地址的數(shù)據(jù)。
    本文采用Xilinx公司的Virtex-5系列XC5VLX50T-1FFG1136C型號的FPGA實現(xiàn),可用用戶IO管腳480個,滿足4路視頻信號輸入、4路視頻信號輸出和一路16 bit本地總線需求。內(nèi)部可用Slice 7 200個, Block RAM Blocks最大為2 160 KB,滿足4路視頻信號每路緩存6行數(shù)據(jù)需求。輸入DVI視頻信號用Silicon Image公司的SiI 1161解碼成并行RGB數(shù)據(jù)送至FPGA,輸出的并行RGB視頻信號用SiI 1160編碼成DVI視頻信號輸出顯示。實驗結果表明,在4個通道輸入均為352×288(CIF格式)分辨率、均放大為1 920×1 080輸出顯示時,無方塊效應,輸出穩(wěn)定順暢;在4個通道輸入均為1 920×1 080分辨率、均縮小為352×288輸出顯示時,畫面質(zhì)量良好,且文字筆畫圓潤,無筆畫斷裂或者模糊不清的現(xiàn)象。
參考文獻
[1] 林媛.圖像縮放算法研究及其FPGA實現(xiàn)[D].廈門:廈門大學,2006.
[2] 高健,茅時群,周宇玫,等.一種基于映射圖像子塊的圖像縮小加權平均算法[J].中國圖像圖形學報,2006,11(10):1460:1463.
[3] 張輝,胡廣書.基于二維卷積的圖像插值實時硬件實現(xiàn)[J].清華大學學報(自然科學版),2007,47(6):885:888.
[4] KEYS R G.Cubic convolution interpolation for digital image   processing[J].IEEE Transactions on Acoustics,Speech,and Signal Processing,1981,29(6):1153-1160.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。