王中博,周遠遠,黃魯
?。ㄖ袊茖W技術大學 信息科學技術學院,安徽 合肥 230026)
摘要:傳統(tǒng)的插值算法在視頻圖像縮放尤其是輸出高分辨率的視頻圖像時,對細節(jié)方面的處理性能較差。采用多相位插值算法實現(xiàn)視頻圖像縮放,主要闡述算法的原理及算法實現(xiàn)的硬件結構。其中硬件電路控制部分使用Xilinx公司的Spartan6系列FPGA芯片,系統(tǒng)可以實現(xiàn)將四路攝像頭采集的視頻信號從任意通道放大到1 920x1 080@60 Hz的分辨率顯示,結果表明輸出視頻圖像的實時性和細節(jié)保持良好。
關鍵詞:視頻縮放;多相位;FPGA;實時性
中圖分類號:TN911.73文獻標識碼:ADOI: 10.19358/j.issn.1674-7720.2016.24.014
引用格式:王中博,周遠遠,黃魯.基于多相位插值的視頻縮放系統(tǒng)FPGA實現(xiàn)[J].微型機與應用,2016,35(24):46-49.
0引言
視頻圖像縮放又可以稱為視頻圖像分辨率的轉換、視頻圖像的重采樣、視頻圖像的尺度變換等,是數(shù)字視頻圖像處理技術中的關鍵技術之一,直接影響著視頻圖像輸出質量效果和視覺體驗。目前視頻圖像縮放技術廣泛應用于醫(yī)學圖像、工程學、多媒體、視頻會議等領域[1]。
傳統(tǒng)的視頻圖像縮放插值算法有最近鄰插值、雙線性插值、雙立方插值等,其他的插值算法還有邊緣插值、B樣條插值、自適應插值等[23],其中基于線性模型的算法在應用于圖像處理時高頻信號會疊加到低頻信號區(qū)域,導致輸出視頻圖像出現(xiàn)混疊情況,尤其是視頻圖像輸出分辨率要求較高時細節(jié)方面的處理會帶來較差的視覺體驗效果。多相位插值算法也是一種常用的視頻圖像縮放方法,其相對于傳統(tǒng)的插值算法而言,在細節(jié)保持上具有較好的性能,也被廣泛用于工業(yè)界。
1算法原理
視頻圖像縮放的基本原理是將分辨率為(M,N)的原圖像轉換成分辨率為(X,Y)的目標圖像。用數(shù)學定義可以描述為:已知(M,N)個像素點,Pixelin(i,j)(i=1,2,…,M;j=1,2,…,N),其中i,j為原圖像的像素點坐標,Pixelin(i,j)為原圖像像素值。現(xiàn)在希望通過一個數(shù)學關系式的映射,利用已知像素點求得輸出像素點,Pixelout(x,y)(x=1,2,…,X; y=1,2,…,Y),其中x,y為目標圖像的像素點坐標,Pixelout(x,y)為目標圖像像素值。那么輸入輸出圖像的像素值對應函數(shù)關系可以表示為:Pixelout(x,y)=f(i,j, Pixelin(i,j)),多相位插值的本質就是根據(jù)函數(shù)的映射關系求解目標圖像的像素值。
根據(jù)上述分析知,目標圖像像素值并不能直接從原圖像獲取,而是需要通過原圖像相關的位置坐標、像素值等信息計算得出。由于圖像內(nèi)容的局部相關性,輸出目標圖像的像素值和相應空間位置鄰近的輸入原圖像像素值相關性較大,與空間位置較遠的像素值相關性較小。一般的視頻圖像縮放處理是典型的二維濾波的過程,可以用公式表示[4]如下:
Pixelout(x,y)=
∑HTaps-1i=0∑VTaps-1j=0Pixelinx-HTaps2+i,y-VTaps2+j×
Coef(i,j)(1)
式中HTaps和VTaps為兩個二維濾波器在水平和垂直方向上的抽頭數(shù),Coef(i,j)為對應濾波器的系數(shù),這個系數(shù)代表了參與運算的輸入像素值對輸出像素值的權值大小。它的值確定了相應位置輸入像素值對輸出像素值的影響并直接決定縮放的效果,系數(shù)的確定取決于濾波器低通和抗混疊等需求。
圖1視頻縮放系統(tǒng)FPGA實現(xiàn)硬件結構圖二維結構在數(shù)據(jù)運算時比較復雜,為了簡化運算一般將二維濾波器進行拆分,使用兩個一維濾波器級聯(lián)來實現(xiàn)二維特性,即水平濾波器和垂直濾波器。首先第一級進行垂直濾波輸出中間值Pixeltemp(x,y),該過程用公式表示如下:
通過以上分析可知,簡化運算前后需要的乘法器個數(shù)從(VTaps×HTaps)減少為(VTaps+HTaps)個,運算量大大降低,這種方式非常有利于實現(xiàn)實時性要求較高的硬件系統(tǒng)。同時這個思路也是各種視頻圖像縮放算法硬件實現(xiàn)的基本模型,即在水平方向和垂直方向分別進行縮放處理,這樣問題就成了一維信號采樣率變化的分析處理過程。
2系統(tǒng)硬件結構
系統(tǒng)硬件結構如圖1所示,使用Xilinx公司的Spartan6系列FPGA芯片對多相位插值縮放算法進行驗證。系統(tǒng)采用四路模擬攝像頭采集視頻信號作為輸入源,通過TW2867多路視頻解碼芯片將模擬視頻信號轉化成數(shù)字視頻信號送給FPGA芯片進行數(shù)據(jù)處理,F(xiàn)PGA首先對輸入的數(shù)據(jù)信號進行一定的預處理,由于采集的圖像與輸出顯示的圖像刷新率不一致,為了保證數(shù)據(jù)處理時讀寫速率的匹配,需要將圖像數(shù)據(jù)寫入DDR3然后讀取數(shù)據(jù)進行縮放處理再輸出,輸出的信號需要符合HDMI標準時序,最后通過SIL9134視頻編碼芯片將輸出數(shù)據(jù)信號編碼成視頻流傳輸?shù)狡聊伙@示并查看輸出的效果。
2.1相關芯片介紹
2.1.1視頻解碼芯片
TW2867是Techwell半導體公司生產(chǎn)的一款芯片,主要功能是將模擬的復合視頻信號轉換成數(shù)字視頻信號,便于進行顯示、存儲和傳輸?shù)葦?shù)字化視頻信息處理。芯片包括視頻解碼器和音頻編碼器,其中視頻解碼器每個通道包含有數(shù)字化輸入模擬視頻信號的ADC(模數(shù)轉換器)。TW2867芯片I2C信號線引腳與STM32芯片I2C信號線引腳連接,TW2867芯片寄存器的參數(shù)通過STM32芯片進行配置。
2.1.2視頻編碼芯片
SIL9134是SILicon Image半導體公司生產(chǎn)的一款芯片,支持HDMI1.3接口規(guī)范,可以將符合時序標準的數(shù)據(jù)信號編碼成HDMI視頻流。它還能傳輸高清晰度的音頻和視頻信號,最高支持1 080P@60 Hz分辨率的視頻輸出。SIL9134芯片I2C信號線引腳與STM32芯片I2C信號線引腳連接,SIL9134芯片寄存器的參數(shù)通過STM32芯片進行配置。
2.2主要模塊介紹
根據(jù)上述系統(tǒng)硬件結構的介紹,F(xiàn)PGA輸入部分是攝像頭采集的模擬視頻源,它是四路復用的BT656格式視頻信號,分辨率為720×576@25 Hz。輸出部分視頻分辨率為1 920×1 080@60 Hz,視頻信號的格式是HDMI。在處理過程中由于視頻數(shù)據(jù)的格式存在變化,首先要將復用的四路視頻信號進行解調,然后選擇任意一路視頻信號進行解碼;解碼后的視頻信號寫入數(shù)據(jù)存儲模塊,然后讀取視頻信號進行縮放處理,最后將處理完的數(shù)據(jù)與相應分辨率的時序信號進行整合輸出。
2.2.1視頻數(shù)據(jù)存儲模塊
視頻數(shù)據(jù)存儲模塊的實現(xiàn)思路如圖2所示。輸入數(shù)據(jù)位寬是16位,如果往DDR3寫入的數(shù)據(jù)也是16位,則效率太低,而DDR3的接口是最高支持128位的雙向端口,因此選擇最大位寬以提高數(shù)據(jù)處理速度,這里需要使用FIFO來進行速率轉換。視頻數(shù)據(jù)的處理是以幀為單位的,每幀的處理又是以行為單位的,對每行數(shù)據(jù)處理時采用乒乓處理方式,當FIFO的數(shù)據(jù)達到半行時就開始將輸入數(shù)據(jù)寫入DDR3同時繼續(xù)接收剩余半行的輸入數(shù)據(jù)。其中DDR3存儲地址也是按照上述思路來計算的。
2.2.2縮放算法實現(xiàn)模塊
縮放算法實現(xiàn)模塊的結構圖如圖3所示。視頻數(shù)據(jù)按照自左向右、自上而下逐行逐像素的掃描順序進行顯示,在縮放計算時也是依據(jù)此順序進行。先將進入到縮放模塊的數(shù)據(jù)進行輸入緩存,經(jīng)過縮放處理后再對數(shù)據(jù)進行輸出緩存,然后根據(jù)特定的時序從緩存區(qū)域讀取數(shù)據(jù)輸出。一般而言輸入和輸出的數(shù)據(jù)時鐘及縮放模塊的時鐘是不一致的,前者的時鐘由輸入輸出視頻的分辨率決定,后者采用單獨的時鐘以適應不同采樣率變換的縮放要求。
圖4縮放模塊實現(xiàn)結構圖如圖3所示,數(shù)據(jù)緩存的實現(xiàn)是利用雙口RAM異步存儲機制,不同模塊之間的數(shù)據(jù)調用、參數(shù)計算、模式選擇和輸出格式等都是通過狀態(tài)機進行控制的。其中縮放模塊的實現(xiàn)思路如圖4所示?;谇拔牡睦碚摲治?,將二維圖像的插值簡化成一維的水平插值和垂直插值方式處理。硬件實現(xiàn)時濾波器的抽頭數(shù)越多輸出圖像的性能越好,同時消耗的資源也越多。實際運算時垂直方向需要預先緩存多行數(shù)據(jù),這樣帶來的運算量必然會非常大,如果垂直方向濾波器抽頭數(shù)太多就會造成數(shù)據(jù)存儲的壓力而增加硬件實現(xiàn)的成本,因此設計時垂直方向使用更少的濾波器抽頭數(shù),減少系統(tǒng)的行緩存數(shù)量[5]。綜合對性能和資源的考慮,根據(jù)行緩存最少需求,采用固定垂直濾波器5Taps和水平濾波器7Taps電路結構。
2.2.3乘法器的流水線實現(xiàn)
算法實現(xiàn)過程中運算量和資源開銷主要集中在乘法器,因此為了提升電路性能就要對乘法器進行轉化。通過對乘法運算原理的分析,采用加法器和選擇器代替乘法器實現(xiàn)乘法運算[6],并且使用流水線結構提高數(shù)據(jù)處理速度。
例如兩個K位數(shù)據(jù)A、B的乘法運算轉化過程如式(4)~(6)所示,通過硬件語言描述時可用選擇器和加法器表示。
為了使每位數(shù)據(jù)運算時序對齊添加D觸發(fā)器實現(xiàn)流水線結構,這里的流水線級數(shù)不宜太多,否則功耗會加大。本文處理的數(shù)據(jù)是RGB格式,三通道數(shù)據(jù)分離同時運算再合并,主要采用K=8的電路形式。
3實驗結果
系統(tǒng)在沒有進行算法處理時,直接將四個通道采集的視頻數(shù)據(jù)縮小同時輸出到同一顯示器屏幕,如圖5所示。系統(tǒng)進行算法處理時,可以將任意通道采集的視頻數(shù)據(jù)放大后輸出在顯示器屏幕,分辨率信息為1 920x1 080@60 Hz。如圖6所示,默認放大顯示第一通道采集的視頻,通過按鍵實時切換任意通道采集的視頻。
4結論
本文采用多相位插值算法實現(xiàn)視頻圖像的縮放,并且在FPGA硬件平臺驗證,放大后的視頻圖像信息過渡平緩,細節(jié)保持良好,切換放大任意通道視頻圖像信號顯示迅速,采集的視頻圖像信息內(nèi)容變化顯示同步實時變化。多相位插值算法對放大后視頻圖像內(nèi)容信息保持較好,但對邊緣部分未能做較好的處理,雖然這沒有帶來什么影響,但為了進一步提升放大后視頻圖像的性能,在今后的研究中可以考慮融合多種性能良好且互補的插值算法,比如融合多相位插值和邊緣插值兩種算法,這樣縮放后輸出的視頻圖像性能保持會更加優(yōu)異。
參考文獻
?。?] Wang Yangang, Peng Silong. A reconfigurable lowcost memoryefficient VLSI architecture for video scaling[J]. High Technology Letters, 2013(1).137 144.[2] 胡小龍,馮彬. 基于FPGA的高分辨實時監(jiān)控圖像縮放設計[J]. 液晶與顯示,2009,24(6):882 885.
?。?] 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].(201207)[2016 07 24]http://www.xilinx.com/products/intellectualproperty/efdividscaler.html.
?。?] 郭若杉.并行多相位圖像插值裝置和方法[P].中國:104935831A,2015 09 23.
?。?] LIN M B. 超大規(guī)模集成電路系統(tǒng)導論:邏輯、電路與系統(tǒng)設計[M]. 劉艷艷,等,譯.北京:電子工業(yè)出版社,2015.