《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于多相位插值的視頻縮放系統(tǒng)FPGA實(shí)現(xiàn)
基于多相位插值的視頻縮放系統(tǒng)FPGA實(shí)現(xiàn)
2016年微型機(jī)與應(yīng)用第24期
王中博,周遠(yuǎn)遠(yuǎn),黃魯
中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,安徽 合肥 230026
摘要: 傳統(tǒng)的插值算法在視頻圖像縮放尤其是輸出高分辨率的視頻圖像時(shí),對細(xì)節(jié)方面的處理性能較差。采用多相位插值算法實(shí)現(xiàn)視頻圖像縮放,主要闡述算法的原理及算法實(shí)現(xiàn)的硬件結(jié)構(gòu)。其中硬件電路控制部分使用Xilinx公司的Spartan6系列FPGA芯片,系統(tǒng)可以實(shí)現(xiàn)將四路攝像頭采集的視頻信號從任意通道放大到1 920x1 080@60 Hz的分辨率顯示,結(jié)果表明輸出視頻圖像的實(shí)時(shí)性和細(xì)節(jié)保持良好。
Abstract:
Key words :

  王中博,周遠(yuǎn)遠(yuǎn),黃魯

  (中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,安徽 合肥 230026)

       摘要:傳統(tǒng)的插值算法在視頻圖像縮放尤其是輸出高分辨率的視頻圖像時(shí),對細(xì)節(jié)方面的處理性能較差。采用多相位插值算法實(shí)現(xiàn)視頻圖像縮放,主要闡述算法的原理及算法實(shí)現(xiàn)的硬件結(jié)構(gòu)。其中硬件電路控制部分使用Xilinx公司的Spartan6系列FPGA芯片,系統(tǒng)可以實(shí)現(xiàn)將四路攝像頭采集的視頻信號從任意通道放大到1 920x1 080@60 Hz的分辨率顯示,結(jié)果表明輸出視頻圖像的實(shí)時(shí)性和細(xì)節(jié)保持良好。

  關(guān)鍵詞視頻縮放;多相位;FPGA;實(shí)時(shí)性

  中圖分類號:TN911.73文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2016.24.014

  引用格式:王中博,周遠(yuǎn)遠(yuǎn),黃魯.基于多相位插值的視頻縮放系統(tǒng)FPGA實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2016,35(24):46-49.

0引言

  視頻圖像縮放又可以稱為視頻圖像分辨率的轉(zhuǎn)換、視頻圖像的重采樣、視頻圖像的尺度變換等,是數(shù)字視頻圖像處理技術(shù)中的關(guān)鍵技術(shù)之一,直接影響著視頻圖像輸出質(zhì)量效果和視覺體驗(yàn)。目前視頻圖像縮放技術(shù)廣泛應(yīng)用于醫(yī)學(xué)圖像、工程學(xué)、多媒體、視頻會議等領(lǐng)域[1]。

  傳統(tǒng)的視頻圖像縮放插值算法有最近鄰插值、雙線性插值、雙立方插值等,其他的插值算法還有邊緣插值、B樣條插值、自適應(yīng)插值等[23],其中基于線性模型的算法在應(yīng)用于圖像處理時(shí)高頻信號會疊加到低頻信號區(qū)域,導(dǎo)致輸出視頻圖像出現(xiàn)混疊情況,尤其是視頻圖像輸出分辨率要求較高時(shí)細(xì)節(jié)方面的處理會帶來較差的視覺體驗(yàn)效果。多相位插值算法也是一種常用的視頻圖像縮放方法,其相對于傳統(tǒng)的插值算法而言,在細(xì)節(jié)保持上具有較好的性能,也被廣泛用于工業(yè)界。

1算法原理

  視頻圖像縮放的基本原理是將分辨率為(M,N)的原圖像轉(zhuǎn)換成分辨率為(X,Y)的目標(biāo)圖像。用數(shù)學(xué)定義可以描述為:已知(M,N)個(gè)像素點(diǎn),Pixelin(i,j)(i=1,2,…,M;j=1,2,…,N),其中i,j為原圖像的像素點(diǎn)坐標(biāo),Pixelin(i,j)為原圖像像素值?,F(xiàn)在希望通過一個(gè)數(shù)學(xué)關(guān)系式的映射,利用已知像素點(diǎn)求得輸出像素點(diǎn),Pixelout(x,y)(x=1,2,…,X; y=1,2,…,Y),其中x,y為目標(biāo)圖像的像素點(diǎn)坐標(biāo),Pixelout(x,y)為目標(biāo)圖像像素值。那么輸入輸出圖像的像素值對應(yīng)函數(shù)關(guān)系可以表示為:Pixelout(x,y)=f(i,j, Pixelin(i,j)),多相位插值的本質(zhì)就是根據(jù)函數(shù)的映射關(guān)系求解目標(biāo)圖像的像素值。

  根據(jù)上述分析知,目標(biāo)圖像像素值并不能直接從原圖像獲取,而是需要通過原圖像相關(guān)的位置坐標(biāo)、像素值等信息計(jì)算得出。由于圖像內(nèi)容的局部相關(guān)性,輸出目標(biāo)圖像的像素值和相應(yīng)空間位置鄰近的輸入原圖像像素值相關(guān)性較大,與空間位置較遠(yuǎn)的像素值相關(guān)性較小。一般的視頻圖像縮放處理是典型的二維濾波的過程,可以用公式表示[4]如下:

  Pixelout(x,y)=

  ∑HTaps-1i=0∑VTaps-1j=0Pixelinx-HTaps2+i,y-VTaps2+j×

  Coef(i,j)(1)

  式中HTaps和VTaps為兩個(gè)二維濾波器在水平和垂直方向上的抽頭數(shù),Coef(i,j)為對應(yīng)濾波器的系數(shù),這個(gè)系數(shù)代表了參與運(yùn)算的輸入像素值對輸出像素值的權(quán)值大小。它的值確定了相應(yīng)位置輸入像素值對輸出像素值的影響并直接決定縮放的效果,系數(shù)的確定取決于濾波器低通和抗混疊等需求。

001.jpg

  圖1視頻縮放系統(tǒng)FPGA實(shí)現(xiàn)硬件結(jié)構(gòu)圖二維結(jié)構(gòu)在數(shù)據(jù)運(yùn)算時(shí)比較復(fù)雜,為了簡化運(yùn)算一般將二維濾波器進(jìn)行拆分,使用兩個(gè)一維濾波器級聯(lián)來實(shí)現(xiàn)二維特性,即水平濾波器和垂直濾波器。首先第一級進(jìn)行垂直濾波輸出中間值Pixeltemp(x,y),該過程用公式表示如下:

  _1LR${Q@$@$O~2A5CI9%)RV.png

  通過以上分析可知,簡化運(yùn)算前后需要的乘法器個(gè)數(shù)從(VTaps×HTaps)減少為(VTaps+HTaps)個(gè),運(yùn)算量大大降低,這種方式非常有利于實(shí)現(xiàn)實(shí)時(shí)性要求較高的硬件系統(tǒng)。同時(shí)這個(gè)思路也是各種視頻圖像縮放算法硬件實(shí)現(xiàn)的基本模型,即在水平方向和垂直方向分別進(jìn)行縮放處理,這樣問題就成了一維信號采樣率變化的分析處理過程。

2系統(tǒng)硬件結(jié)構(gòu)

  系統(tǒng)硬件結(jié)構(gòu)如圖1所示,使用Xilinx公司的Spartan6系列FPGA芯片對多相位插值縮放算法進(jìn)行驗(yàn)證。系統(tǒng)采用四路模擬攝像頭采集視頻信號作為輸入源,通過TW2867多路視頻解碼芯片將模擬視頻信號轉(zhuǎn)化成數(shù)字視頻信號送給FPGA芯片進(jìn)行數(shù)據(jù)處理,F(xiàn)PGA首先對輸入的數(shù)據(jù)信號進(jìn)行一定的預(yù)處理,由于采集的圖像與輸出顯示的圖像刷新率不一致,為了保證數(shù)據(jù)處理時(shí)讀寫速率的匹配,需要將圖像數(shù)據(jù)寫入DDR3然后讀取數(shù)據(jù)進(jìn)行縮放處理再輸出,輸出的信號需要符合HDMI標(biāo)準(zhǔn)時(shí)序,最后通過SIL9134視頻編碼芯片將輸出數(shù)據(jù)信號編碼成視頻流傳輸?shù)狡聊伙@示并查看輸出的效果。

  2.1相關(guān)芯片介紹

  2.1.1視頻解碼芯片

  TW2867是Techwell半導(dǎo)體公司生產(chǎn)的一款芯片,主要功能是將模擬的復(fù)合視頻信號轉(zhuǎn)換成數(shù)字視頻信號,便于進(jìn)行顯示、存儲和傳輸?shù)葦?shù)字化視頻信息處理。芯片包括視頻解碼器和音頻編碼器,其中視頻解碼器每個(gè)通道包含有數(shù)字化輸入模擬視頻信號的ADC(模數(shù)轉(zhuǎn)換器)。TW2867芯片I2C信號線引腳與STM32芯片I2C信號線引腳連接,TW2867芯片寄存器的參數(shù)通過STM32芯片進(jìn)行配置。

  2.1.2視頻編碼芯片

  SIL9134是SILicon Image半導(dǎo)體公司生產(chǎn)的一款芯片,支持HDMI1.3接口規(guī)范,可以將符合時(shí)序標(biāo)準(zhǔn)的數(shù)據(jù)信號編碼成HDMI視頻流。它還能傳輸高清晰度的音頻和視頻信號,最高支持1 080P@60 Hz分辨率的視頻輸出。SIL9134芯片I2C信號線引腳與STM32芯片I2C信號線引腳連接,SIL9134芯片寄存器的參數(shù)通過STM32芯片進(jìn)行配置。

  2.2主要模塊介紹

  根據(jù)上述系統(tǒng)硬件結(jié)構(gòu)的介紹,F(xiàn)PGA輸入部分是攝像頭采集的模擬視頻源,它是四路復(fù)用的BT656格式視頻信號,分辨率為720×576@25 Hz。輸出部分視頻分辨率為1 920×1 080@60 Hz,視頻信號的格式是HDMI。在處理過程中由于視頻數(shù)據(jù)的格式存在變化,首先要將復(fù)用的四路視頻信號進(jìn)行解調(diào),然后選擇任意一路視頻信號進(jìn)行解碼;解碼后的視頻信號寫入數(shù)據(jù)存儲模塊,然后讀取視頻信號進(jìn)行縮放處理,最后將處理完的數(shù)據(jù)與相應(yīng)分辨率的時(shí)序信號進(jìn)行整合輸出。

  2.2.1視頻數(shù)據(jù)存儲模塊

002.jpg

  視頻數(shù)據(jù)存儲模塊的實(shí)現(xiàn)思路如圖2所示。輸入數(shù)據(jù)位寬是16位,如果往DDR3寫入的數(shù)據(jù)也是16位,則效率太低,而DDR3的接口是最高支持128位的雙向端口,因此選擇最大位寬以提高數(shù)據(jù)處理速度,這里需要使用FIFO來進(jìn)行速率轉(zhuǎn)換。視頻數(shù)據(jù)的處理是以幀為單位的,每幀的處理又是以行為單位的,對每行數(shù)據(jù)處理時(shí)采用乒乓處理方式,當(dāng)FIFO的數(shù)據(jù)達(dá)到半行時(shí)就開始將輸入數(shù)據(jù)寫入DDR3同時(shí)繼續(xù)接收剩余半行的輸入數(shù)據(jù)。其中DDR3存儲地址也是按照上述思路來計(jì)算的。

  2.2.2縮放算法實(shí)現(xiàn)模塊

  縮放算法實(shí)現(xiàn)模塊的結(jié)構(gòu)圖如圖3所示。視頻數(shù)據(jù)按照自左向右、自上而下逐行逐像素的掃描順序進(jìn)行顯示,在縮放計(jì)算時(shí)也是依據(jù)此順序進(jìn)行。先將進(jìn)入到縮放模塊的數(shù)據(jù)進(jìn)行輸入緩存,經(jīng)過縮放處理后再對數(shù)據(jù)進(jìn)行輸出緩存,然后根據(jù)特定的時(shí)序從緩存區(qū)域讀取數(shù)據(jù)輸出。一般而言輸入和輸出的數(shù)據(jù)時(shí)鐘及縮放模塊的時(shí)鐘是不一致的,前者的時(shí)鐘由輸入輸出視頻的分辨率決定,后者采用單獨(dú)的時(shí)鐘以適應(yīng)不同采樣率變換的縮放要求。

 

003.jpg

  圖4縮放模塊實(shí)現(xiàn)結(jié)構(gòu)圖如圖3所示,數(shù)據(jù)緩存的實(shí)現(xiàn)是利用雙口RAM異步存儲機(jī)制,不同模塊之間的數(shù)據(jù)調(diào)用、參數(shù)計(jì)算、模式選擇和輸出格式等都是通過狀態(tài)機(jī)進(jìn)行控制的。其中縮放模塊的實(shí)現(xiàn)思路如圖4所示?;谇拔牡睦碚摲治觯瑢⒍S圖像的插值簡化成一維的水平插值和垂直插值方式處理。硬件實(shí)現(xiàn)時(shí)濾波器的抽頭數(shù)越多輸出圖像的性能越好,同時(shí)消耗的資源也越多。實(shí)際運(yùn)算時(shí)垂直方向需要預(yù)先緩存多行數(shù)據(jù),這樣帶來的運(yùn)算量必然會非常大,如果垂直方向?yàn)V波器抽頭數(shù)太多就會造成數(shù)據(jù)存儲的壓力而增加硬件實(shí)現(xiàn)的成本,因此設(shè)計(jì)時(shí)垂直方向使用更少的濾波器抽頭數(shù),減少系統(tǒng)的行緩存數(shù)量[5]。綜合對性能和資源的考慮,根據(jù)行緩存最少需求,采用固定垂直濾波器5Taps和水平濾波器7Taps電路結(jié)構(gòu)。

004.jpg

  2.2.3乘法器的流水線實(shí)現(xiàn)

  算法實(shí)現(xiàn)過程中運(yùn)算量和資源開銷主要集中在乘法器,因此為了提升電路性能就要對乘法器進(jìn)行轉(zhuǎn)化。通過對乘法運(yùn)算原理的分析,采用加法器和選擇器代替乘法器實(shí)現(xiàn)乘法運(yùn)算[6],并且使用流水線結(jié)構(gòu)提高數(shù)據(jù)處理速度。

  例如兩個(gè)K位數(shù)據(jù)A、B的乘法運(yùn)算轉(zhuǎn)化過程如式(4)~(6)所示,通過硬件語言描述時(shí)可用選擇器和加法器表示。

  CTJNUR~KF4[A2LQW]%4NOUQ.png

  為了使每位數(shù)據(jù)運(yùn)算時(shí)序?qū)R添加D觸發(fā)器實(shí)現(xiàn)流水線結(jié)構(gòu),這里的流水線級數(shù)不宜太多,否則功耗會加大。本文處理的數(shù)據(jù)是RGB格式,三通道數(shù)據(jù)分離同時(shí)運(yùn)算再合并,主要采用K=8的電路形式。

3實(shí)驗(yàn)結(jié)果

  系統(tǒng)在沒有進(jìn)行算法處理時(shí),直接將四個(gè)通道采集的視頻數(shù)據(jù)縮小同時(shí)輸出到同一顯示器屏幕,如圖5所示。系統(tǒng)進(jìn)行算法處理時(shí),可以將任意通道采集的視頻數(shù)據(jù)放大后輸出在顯示器屏幕,分辨率信息為1 920x1 080@60 Hz。如圖6所示,默認(rèn)放大顯示第一通道采集的視頻,通過按鍵實(shí)時(shí)切換任意通道采集的視頻。

  

005.jpg

006.jpg

4結(jié)論

  本文采用多相位插值算法實(shí)現(xiàn)視頻圖像的縮放,并且在FPGA硬件平臺驗(yàn)證,放大后的視頻圖像信息過渡平緩,細(xì)節(jié)保持良好,切換放大任意通道視頻圖像信號顯示迅速,采集的視頻圖像信息內(nèi)容變化顯示同步實(shí)時(shí)變化。多相位插值算法對放大后視頻圖像內(nèi)容信息保持較好,但對邊緣部分未能做較好的處理,雖然這沒有帶來什么影響,但為了進(jìn)一步提升放大后視頻圖像的性能,在今后的研究中可以考慮融合多種性能良好且互補(bǔ)的插值算法,比如融合多相位插值和邊緣插值兩種算法,這樣縮放后輸出的視頻圖像性能保持會更加優(yōu)異。

參考文獻(xiàn)

 ?。?] Wang Yangang, Peng Silong. A reconfigurable lowcost memoryefficient VLSI architecture for video scaling[J]. High Technology Letters, 2013(1).137 144.[2] 胡小龍,馮彬. 基于FPGA的高分辨實(shí)時(shí)監(jiān)控圖像縮放設(shè)計(jì)[J]. 液晶與顯示,2009,24(6):882 885.

  [3] Shi Zaifeng, Yao Suying, Zhao Yingchun. A novel video image scaling algorithm based on morphological edge interpolation[C]. 2008 International Conference on Neural Networks and Signal Proceesing, 2008:. 388 391.

 ?。?] Xilinx Company.LogiCORE IP Video Scaler v.7.00.a[EB/OL].(201207)[2016 07 24]http://www.xilinx.com/products/intellectualproperty/efdividscaler.html.

  [5] 郭若杉.并行多相位圖像插值裝置和方法[P].中國:104935831A,2015 09 23.

  [6] LIN M B. 超大規(guī)模集成電路系統(tǒng)導(dǎo)論:邏輯、電路與系統(tǒng)設(shè)計(jì)[M]. 劉艷艷,等,譯.北京:電子工業(yè)出版社,2015.


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