王中博,周遠(yuǎn)遠(yuǎn),黃 魯
(中國(guó)科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,安徽 合肥 230026)
基于多相位插值的視頻縮放系統(tǒng)FPGA實(shí)現(xiàn)
王中博,周遠(yuǎn)遠(yuǎn),黃 魯
(中國(guó)科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,安徽 合肥 230026)
傳統(tǒng)的插值算法在視頻圖像縮放尤其是輸出高分辨率的視頻圖像時(shí),對(duì)細(xì)節(jié)方面的處理性能較差。采用多相位插值算法實(shí)現(xiàn)視頻圖像縮放,主要闡述算法的原理及算法實(shí)現(xiàn)的硬件結(jié)構(gòu)。其中硬件電路控制部分使用Xilinx公司的Spartan6系列FPGA芯片,系統(tǒng)可以實(shí)現(xiàn)將四路攝像頭采集的視頻信號(hào)從任意通道放大到1 920x1 080@60 Hz的分辨率顯示,結(jié)果表明輸出視頻圖像的實(shí)時(shí)性和細(xì)節(jié)保持良好。
視頻縮放;多相位;FPGA;實(shí)時(shí)性
視頻圖像縮放又可以稱為視頻圖像分辨率的轉(zhuǎn)換、視頻圖像的重采樣、視頻圖像的尺度變換等,是數(shù)字視頻圖像處理技術(shù)中的關(guān)鍵技術(shù)之一,直接影響著視頻圖像輸出質(zhì)量效果和視覺體驗(yàn)。目前視頻圖像縮放技術(shù)廣泛應(yīng)用于醫(yī)學(xué)圖像、工程學(xué)、多媒體、視頻會(huì)議等領(lǐng)域[1]。
傳統(tǒng)的視頻圖像縮放插值算法有最近鄰插值、雙線性插值、雙立方插值等,其他的插值算法還有邊緣插值、B樣條插值、自適應(yīng)插值等[2-3],其中基于線性模型的算法在應(yīng)用于圖像處理時(shí)高頻信號(hào)會(huì)疊加到低頻信號(hào)區(qū)域,導(dǎo)致輸出視頻圖像出現(xiàn)混疊情況,尤其是視頻圖像輸出分辨率要求較高時(shí)細(xì)節(jié)方面的處理會(huì)帶來(lái)較差的視覺體驗(yàn)效果。多相位插值算法也是一種常用的視頻圖像縮放方法,其相對(duì)于傳統(tǒng)的插值算法而言,在細(xì)節(jié)保持上具有較好的性能,也被廣泛用于工業(yè)界。
視頻圖像縮放的基本原理是將分辨率為(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)在希望通過(guò)一個(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)圖像像素值。那么輸入輸出圖像的像素值對(duì)應(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ò)原圖像相關(guān)的位置坐標(biāo)、像素值等信息計(jì)算得出。由于圖像內(nèi)容的局部相關(guān)性,輸出目標(biāo)圖像的像素值和相應(yīng)空間位置鄰近的輸入原圖像像素值相關(guān)性較大,與空間位置較遠(yuǎn)的像素值相關(guān)性較小。一般的視頻圖像縮放處理是典型的二維濾波的過(guò)程,可以用公式表示[4]如下:
Pixelout(x,y)=
Coef(i,j)
(1)
式中HTaps和VTaps為兩個(gè)二維濾波器在水平和垂直方向上的抽頭數(shù),Coef(i,j)為對(duì)應(yīng)濾波器的系數(shù),這個(gè)系數(shù)代表了參與運(yùn)算的輸入像素值對(duì)輸出像素值的權(quán)值大小。它的值確定了相應(yīng)位置輸入像素值對(duì)輸出像素值的影響并直接決定縮放的效果,系數(shù)的確定取決于濾波器低通和抗混疊等需求。
圖1 視頻縮放系統(tǒng)FPGA實(shí)現(xiàn)硬件結(jié)構(gòu)圖
二維結(jié)構(gòu)在數(shù)據(jù)運(yùn)算時(shí)比較復(fù)雜,為了簡(jiǎn)化運(yùn)算一般將二維濾波器進(jìn)行拆分,使用兩個(gè)一維濾波器級(jí)聯(lián)來(lái)實(shí)現(xiàn)二維特性,即水平濾波器和垂直濾波器。首先第一級(jí)進(jìn)行垂直濾波輸出中間值Pixeltemp(x,y),該過(guò)程用公式表示如下:
(2)
然后將中間值Pixeltemp(x,y)作為第二級(jí)的輸入再進(jìn)行水平濾波,該過(guò)程用公式表示如下;
(3)
通過(guò)以上分析可知,簡(jiǎn)化運(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)行縮放處理,這樣問(wèn)題就成了一維信號(hào)采樣率變化的分析處理過(guò)程。
系統(tǒng)硬件結(jié)構(gòu)如圖1所示,使用Xilinx公司的Spartan6系列FPGA芯片對(duì)多相位插值縮放算法進(jìn)行驗(yàn)證。系統(tǒng)采用四路模擬攝像頭采集視頻信號(hào)作為輸入源,通過(guò)TW2867多路視頻解碼芯片將模擬視頻信號(hào)轉(zhuǎn)化成數(shù)字視頻信號(hào)送給FPGA芯片進(jìn)行數(shù)據(jù)處理,F(xiàn)PGA首先對(duì)輸入的數(shù)據(jù)信號(hào)進(jìn)行一定的預(yù)處理,由于采集的圖像與輸出顯示的圖像刷新率不一致,為了保證數(shù)據(jù)處理時(shí)讀寫速率的匹配,需要將圖像數(shù)據(jù)寫入DDR3然后讀取數(shù)據(jù)進(jìn)行縮放處理再輸出,輸出的信號(hào)需要符合HDMI標(biāo)準(zhǔn)時(shí)序,最后通過(guò)SIL9134視頻編碼芯片將輸出數(shù)據(jù)信號(hào)編碼成視頻流傳輸?shù)狡聊伙@示并查看輸出的效果。
2.1 相關(guān)芯片介紹
2.1.1 視頻解碼芯片
TW2867是Techwell半導(dǎo)體公司生產(chǎn)的一款芯片,主要功能是將模擬的復(fù)合視頻信號(hào)轉(zhuǎn)換成數(shù)字視頻信號(hào),便于進(jìn)行顯示、存儲(chǔ)和傳輸?shù)葦?shù)字化視頻信息處理。芯片包括視頻解碼器和音頻編碼器,其中視頻解碼器每個(gè)通道包含有數(shù)字化輸入模擬視頻信號(hào)的ADC(模數(shù)轉(zhuǎn)換器)。TW2867芯片I2C信號(hào)線引腳與STM32芯片I2C信號(hào)線引腳連接,TW2867芯片寄存器的參數(shù)通過(guò)STM32芯片進(jìn)行配置。
2.1.2 視頻編碼芯片
SIL9134是SILicon Image半導(dǎo)體公司生產(chǎn)的一款芯片,支持HDMI1.3接口規(guī)范,可以將符合時(shí)序標(biāo)準(zhǔn)的數(shù)據(jù)信號(hào)編碼成HDMI視頻流。它還能傳輸高清晰度的音頻和視頻信號(hào),最高支持1 080P@60 Hz分辨率的視頻輸出。SIL9134芯片I2C信號(hào)線引腳與STM32芯片I2C信號(hào)線引腳連接,SIL9134芯片寄存器的參數(shù)通過(guò)STM32芯片進(jìn)行配置。
2.2 主要模塊介紹
根據(jù)上述系統(tǒng)硬件結(jié)構(gòu)的介紹,F(xiàn)PGA輸入部分是攝像頭采集的模擬視頻源,它是四路復(fù)用的BT656格式視頻信號(hào),分辨率為720×576@25 Hz。輸出部分視頻分辨率為1 920×1 080@60 Hz,視頻信號(hào)的格式是HDMI。在處理過(guò)程中由于視頻數(shù)據(jù)的格式存在變化,首先要將復(fù)用的四路視頻信號(hào)進(jìn)行解調(diào),然后選擇任意一路視頻信號(hào)進(jìn)行解碼;解碼后的視頻信號(hào)寫入數(shù)據(jù)存儲(chǔ)模塊,然后讀取視頻信號(hào)進(jìn)行縮放處理,最后將處理完的數(shù)據(jù)與相應(yīng)分辨率的時(shí)序信號(hào)進(jìn)行整合輸出。
2.2.1 視頻數(shù)據(jù)存儲(chǔ)模塊
視頻數(shù)據(jù)存儲(chǔ)模塊的實(shí)現(xiàn)思路如圖2所示。輸入數(shù)據(jù)位寬是16位,如果往DDR3寫入的數(shù)據(jù)也是16位,則效率太低,而DDR3的接口是最高支持128位的雙向端口,因此選擇最大位寬以提高數(shù)據(jù)處理速度,這里需要使用FIFO來(lái)進(jìn)行速率轉(zhuǎn)換。視頻數(shù)據(jù)的處理是以幀為單位的,每幀的處理又是以行為單位的,對(duì)每行數(shù)據(jù)處理時(shí)采用乒乓處理方式,當(dāng)FIFO的數(shù)據(jù)達(dá)到半行時(shí)就開始將輸入數(shù)據(jù)寫入DDR3同時(shí)繼續(xù)接收剩余半行的輸入數(shù)據(jù)。其中DDR3存儲(chǔ)地址也是按照上述思路來(lái)計(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)過(guò)縮放處理后再對(duì)數(shù)據(jù)進(jìn)行輸出緩存,然后根據(jù)特定的時(shí)序從緩存區(qū)域讀取數(shù)據(jù)輸出。一般而言輸入和輸出的數(shù)據(jù)時(shí)鐘及縮放模塊的時(shí)鐘是不一致的,前者的時(shí)鐘由輸入輸出視頻的分辨率決定,后者采用單獨(dú)的時(shí)鐘以適應(yīng)不同采樣率變換的縮放要求。
圖3 縮放算法實(shí)現(xiàn)模塊結(jié)構(gòu)圖
圖4 縮放模塊實(shí)現(xiàn)結(jié)構(gòu)圖
如圖3所示,數(shù)據(jù)緩存的實(shí)現(xiàn)是利用雙口RAM異步存儲(chǔ)機(jī)制,不同模塊之間的數(shù)據(jù)調(diào)用、參數(shù)計(jì)算、模式選擇和輸出格式等都是通過(guò)狀態(tài)機(jī)進(jìn)行控制的。其中縮放模塊的實(shí)現(xiàn)思路如圖4所示。基于前文的理論分析,將二維圖像的插值簡(jiǎn)化成一維的水平插值和垂直插值方式處理。硬件實(shí)現(xiàn)時(shí)濾波器的抽頭數(shù)越多輸出圖像的性能越好,同時(shí)消耗的資源也越多。實(shí)際運(yùn)算時(shí)垂直方向需要預(yù)先緩存多行數(shù)據(jù),這樣帶來(lái)的運(yùn)算量必然會(huì)非常大,如果垂直方向?yàn)V波器抽頭數(shù)太多就會(huì)造成數(shù)據(jù)存儲(chǔ)的壓力而增加硬件實(shí)現(xiàn)的成本,因此設(shè)計(jì)時(shí)垂直方向使用更少的濾波器抽頭數(shù),減少系統(tǒng)的行緩存數(shù)量[5]。綜合對(duì)性能和資源的考慮,根據(jù)行緩存最少需求,采用固定垂直濾波器5Taps和水平濾波器7Taps電路結(jié)構(gòu)。
2.2.3 乘法器的流水線實(shí)現(xiàn)
算法實(shí)現(xiàn)過(guò)程中運(yùn)算量和資源開銷主要集中在乘法器,因此為了提升電路性能就要對(duì)乘法器進(jìn)行轉(zhuǎn)化。通過(guò)對(duì)乘法運(yùn)算原理的分析,采用加法器和選擇器代替乘法器實(shí)現(xiàn)乘法運(yùn)算[6],并且使用流水線結(jié)構(gòu)提高數(shù)據(jù)處理速度。
例如兩個(gè)K位數(shù)據(jù)A、B的乘法運(yùn)算轉(zhuǎn)化過(guò)程如式(4)~(6)所示,通過(guò)硬件語(yǔ)言描述時(shí)可用選擇器和加法器表示。
(4)
(5)
(6)
為了使每位數(shù)據(jù)運(yùn)算時(shí)序?qū)R添加D觸發(fā)器實(shí)現(xiàn)流水線結(jié)構(gòu),這里的流水線級(jí)數(shù)不宜太多,否則功耗會(huì)加大。本文處理的數(shù)據(jù)是RGB格式,三通道數(shù)據(jù)分離同時(shí)運(yùn)算再合并,主要采用K=8的電路形式。
系統(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)放大顯示第一通道采集的視頻,通過(guò)按鍵實(shí)時(shí)切換任意通道采集的視頻。
圖5 未進(jìn)行算法處理時(shí)的顯示結(jié)果
圖6 算法處理時(shí)各通道顯示結(jié)果
本文采用多相位插值算法實(shí)現(xiàn)視頻圖像的縮放,并且在FPGA硬件平臺(tái)驗(yàn)證,放大后的視頻圖像信息過(guò)渡平緩,細(xì)節(jié)保持良好,切換放大任意通道視頻圖像信號(hào)顯示迅速,采集的視頻圖像信息內(nèi)容變化顯示同步實(shí)時(shí)變化。多相位插值算法對(duì)放大后視頻圖像內(nèi)容信息保持較好,但對(duì)邊緣部分未能做較好的處理,雖然這沒有帶來(lái)什么影響,但為了進(jìn)一步提升放大后視頻圖像的性能,在今后的研究中可以考慮融合多種性能良好且互補(bǔ)的插值算法,比如融合多相位插值和邊緣插值兩種算法,這樣縮放后輸出的視頻圖像性能保持會(huì)更加優(yōu)異。
[1] 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.
[4] 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-di-vid-scaler.html.
[5] 郭若杉.并行多相位圖像插值裝置和方法[P].中國(guó):104935831A,2015-09-23.
[6] LIN M B. 超大規(guī)模集成電路系統(tǒng)導(dǎo)論:邏輯、電路與系統(tǒng)設(shè)計(jì)[M]. 劉艷艷,等,譯.北京:電子工業(yè)出版社,2015.
Implementation of video scaling system using FPGA based on poly-phase interpolation algorithm
Wang Zhongbo,Zhou Yuanyuan,Huang Lu
(School of Information Science and Technology, University of Science and Technology of China, Hefei 230026, China)
Traditional interpolation algorithm has a lower quality on processing video image scaling details, especially when outputing higher spatial resolution video image. This paper mainly describes the algorithm principle and the hardware architecture of video image scaling using the poly-phase interpolation algorithm. Its hardware is implemented by using Xilinx’s Spartan6 series FPGA chip. The system can enlarge a video signal captured by four cameras to 1 920x1 080@60 Hz resolution on any channel.The results show that hardware system can output video images in real time and keep good details.
video scaling; poly-phase; FPGA; real-time
TN911.73
A
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.
2016-07-24)
王中博(1990-),男,碩士研究生,主要研究方向:模擬、數(shù)字集成電路設(shè)計(jì)。
周遠(yuǎn)遠(yuǎn)(1978-),男,講師,主要研究方向:集成電路設(shè)計(jì)、智能機(jī)器人。