文獻標識碼: A
文章編號: 0258-7998(2011)08-0056-03
數(shù)字視頻縮小和放大(簡稱縮放)是視頻處理的一個重要分支,,是基于對數(shù)字視頻每幀圖像的處理來實現(xiàn)的,。常見的縮放算法有最近鄰域法,、雙線性插值法、拋物線插值法,、雙三次插值法和牛頓插值法等基于多項式的插值算法[1],,較容易在FPGA硬件上實現(xiàn);也有B樣條插值法,、基于小波插值和有理插值等比較復(fù)雜的算法,,難以在FPGA上實現(xiàn)。
近年來隨著液晶平板顯示器件的廣泛應(yīng)用,,對于定標器的研究越來越多且研究成果也很豐富,。但定標器的縮放比例有限,一般在0.5~4之間,,在這個范圍內(nèi)采用2階或3階多點插值算法,,圖像的邊緣和細節(jié)可以較好保存。但是采用定點插值法,,當文字縮小比例較大時,,會丟失較多的細節(jié),出現(xiàn)字體筆畫斷裂或者鋸齒現(xiàn)象,。而采用低階算法(例如多點均值插值),,參與運算的點較多,可以有效提高文字的顯示質(zhì)量,。
1 系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)如圖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)結(jié)果如圖5所示,,較好地保證了文字的正常顯示。
4 幀率變換
4.1 輸入緩存 IFIFO
每一路IFIFO都需要在FIFO中數(shù)據(jù)量大于1/2 FIFO深度時向仲裁模塊發(fā)送占用DDR2總線的請求信號REQ,,應(yīng)答信號AGREE有效時,,向DDR2控制器發(fā)送數(shù)據(jù)。當完成一定量的讀出數(shù)據(jù)時,,往仲裁模塊發(fā)送一個發(fā)送結(jié)束信號END,,仲裁模塊接收到END信號后將DDR2總線控制權(quán)收回,IFIFO等待下一次應(yīng)答,。
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)。
仲裁模塊的另一個任務(wù)就是讀寫DDR2地址的生成,。將DDR2的存儲空間劃分為4個部分,,每個部分存儲一路視頻信號,每路視頻信號存儲3幀,。同時讀DDR2時,,命令設(shè)置為讀操作,;寫DDR2時,,命令設(shè)置為寫操作。
現(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)。
最近鄰域插值法存在很強的波瓣,,頻率響應(yīng)較差,。當圖像中包含像素值有變化的細微結(jié)構(gòu)時,最近鄰插值會在圖像中產(chǎn)生人為的痕跡,,造成圖像模糊或產(chǎn)生人為噪聲點,。
線性插值法頻譜的旁瓣遠小于主瓣,帶阻特性較好,。但通帶內(nèi)高頻成分衰減過快,,會使得插值后的圖像變模糊。
四點立方插值通帶內(nèi)高頻成分衰減明顯變慢,,且旁瓣不超過1%,,具有較好的高頻響應(yīng)特性,縮放后的圖像能夠保持更多細節(jié),。
六點立方插值算法的頻率響應(yīng)特性更加優(yōu)越,,通帶內(nèi)高頻成分衰減更慢且旁瓣更低。
四點立方插值較好地保持了圖像的細節(jié),,實現(xiàn)難度和占用邏輯資源適中,。六點立方插值雖然實現(xiàn)效果更好,但是占用的邏輯資源較多,。故本設(shè)計采用四點立方插值算法實現(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 垂直方向放大
垂直方向放大濾波器架構(gòu)和水平方向一樣,只是插值參考點來自于不同的行緩存空間里相同地址的數(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視頻信號輸出顯示,。實驗結(jié)果表明,,在4個通道輸入均為352×288(CIF格式)分辨率,、均放大為1 920×1 080輸出顯示時,無方塊效應(yīng),,輸出穩(wěn)定順暢;在4個通道輸入均為1 920×1 080分辨率,、均縮小為352×288輸出顯示時,,畫面質(zhì)量良好,且文字筆畫圓潤,,無筆畫斷裂或者模糊不清的現(xiàn)象,。
參考文獻
[1] 林媛.圖像縮放算法研究及其FPGA實現(xiàn)[D].廈門:廈門大學,2006.
[2] 高健,,茅時群,,周宇玫,等.一種基于映射圖像子塊的圖像縮小加權(quán)平均算法[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.