《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 基于雙線性算法的定標器及其FPGA實現(xiàn)

基于雙線性算法的定標器及其FPGA實現(xiàn)

2008-11-05
作者:陳 偉,盧貴主,鄭靈翔

  摘? 要: 在視頻顯示系統(tǒng)中,定標器" title="定標器">定標器(scaler)起著匹配視頻輸出設備和視頻顯示設備之間的顯示分辨率的作用,它直接影響了圖像縮放之后的顯示效果" title="顯示效果">顯示效果。本文采用雙線性插值" title="插值">插值(bilinear interpolation)算法,在FPGA上實現(xiàn)了定標器,最后給出了驗證平臺和方法,結(jié)果表明所設計的定標器有效并且顯示效果良好。

  關鍵詞: 定標器;FPGA;雙線性

?

  視頻顯示系統(tǒng)中經(jīng)常需要進行圖像的分辨率轉(zhuǎn)化,這個過程通常稱為圖像縮放(scaling),是由定標器實現(xiàn)的。它不僅影響著圖像顯示的分辨率,而且影響圖像顯示的質(zhì)量。

  圖像縮放的算法很多,常用的有最近鄰法(nearest narbor)、雙線性插值" title="雙線性插值">雙線性插值法、雙三次插值法(bicubic interpolation),另外,還有基于邊緣的圖像算法(edge-based scaling methods)[1]?;谶吘壍膱D像算法能夠得到最好的顯示效果,但是這種算法復雜度高,不易于實現(xiàn)。在參考文獻[2]中還提到了一種小波雙線性插值算法,用小波變換把圖像分解成一些具有不同空間分辨率、頻率特性和方向特性的子帶信號。這種插值保存了圖像中豐富的高頻信息,使圖像具有很好的顯示效果,但是該算法主要是針對于遙感圖像應用。本文對顯示效果和實現(xiàn)的資源耗費、速度進行折衷,采用雙線性插值法并在FPGA上實現(xiàn)了定標器。采用FPGA進行設計主要是因為它能夠提高設計的并行度從而保證實時性的要求。如果采用DSP的解決方案,雖然在設計的靈活度上有所加強,但是往往無法滿足實時性的要求。特別是在視頻顯示系統(tǒng)中,設計應該優(yōu)先考慮用硬件進行實現(xiàn)。

  本文首先對算法進行了描述,之后對硬件實現(xiàn)的各個模塊都作了詳細說明,包括獲取原始圖像相鄰的四個像素模塊,水平、垂直兩個增量的生成模塊,插值運算模塊以及同步信號" title="同步信號">同步信號生成模塊。最后對所設計的定標器進行驗證,并給出了驗證的平臺、方法以及結(jié)果。

1 雙線性算法描述

  幾何運算[3](geometry operations)的定義是:改變圖像像素空間分布的一系列運算。在實施幾何運算時,可以想象成將輸入的像素一個一個地移動到輸出圖像中,稱為向前映射法;另一種方法按反向移動像素,稱之為逆向映射法。如果映射回的像素落在4個輸入像素之間,則其灰度由4個像素插值計算得到。雙線性算法就屬于逆向映射法。

  雙線形算法的描述為:假設原始圖像的4個像素點為P1、P2、P3、P4,水平和垂直兩個方向的點距為單位長度1。4點坐標分別為P1(x,y)、P2(x+1,y)、P3(x,y+1)、P4(x+1,y+1),縮放后的目標像素點的坐標為P(x+dy,y+dy),dx、dy分別是目標像素點與原始圖像中的鄰近點的水平和垂直坐標方向上的兩個增量。因此,所得到的目標插值像素點的灰度表達式為:

????P(x+dx,y+dy)=(1-dx)(1-dy)P1+dx(1-dy)P2+(1-dx)dyP3+dxdyP4

????利用這個公式,對于每一個目標像素點,都可以定量地由原始圖像的4個像素點進行計算得到。

2 定標器的FPGA實現(xiàn)

2.1 定標器的實現(xiàn)模塊

????基于雙線性算法定標器的實現(xiàn)可以劃分為4個功能模塊:(1)獲取原始圖橡的水平、垂直兩個方向相鄰的4個像素P1,P2,P3,P4。(2)計算對應各個像素位置的水平、垂直方向上的坐標增量dx,dy。(3)進行插值運算得到新的圖像的像素點。(4)同步信號生成模塊。實際的定標器還包括了前端處理模塊和后端處理模塊。前端處理模塊主要進行圖像的格式轉(zhuǎn)換等,而后端處理模塊主要進行圖像的增強處理。這些增強處理包括:圖像變換、直方圖變換、灰度變換、圖像平滑和圖像銳化[4]等。在4個功能模塊中,同步信號的生成模塊負責產(chǎn)生顯示所需要的同步和消隱信號,同時它會產(chǎn)生一幀圖像的索引地址,包括行地址和列地址。當索引地址索引到目標圖像的一個像素時,由它去獲得對應的輸入圖像的相關像素的灰度值,同時獲得對應的位置偏移量。這樣就保證了輸入圖像到輸出圖像的映射無誤。其他三個模塊是插值運算的具體執(zhí)行單元。獲取相鄰4個像素模塊在索引輸出圖像的某一個像素時獲取插值計算這個像素點所需要的4個相鄰的輸入圖像像素。水平、垂直方向上的坐標增量生成模塊在行場有效信號的控制下使能有效,并且每個像素時鐘都更新增量的值。插值運算對輸入圖像中得到的幾個像素值和對應的坐標增量進行運算,最后得到在索引地址位置的輸出像素的灰度值。從時序上看,插值運算有固定的延遲,因而不會造成時序混亂,同時由于整個插值算法的實現(xiàn)是在同步信號生成模塊的控制下進行的,這就保證了算法實現(xiàn)上時序的正確性。因而,上面的模塊劃分是可行的。基于雙線性算法定標器的實現(xiàn)框圖如圖1。

?

?

2.2 獲取原始圖像相鄰的四個像素模塊

  采用3個雙口dpram進行實現(xiàn),每個dpram的深度取一行原始圖像的深度。3個dpram模塊分別工作在寫有效狀態(tài)和只讀狀態(tài)下。初始時,3個dpram都處于只讀狀態(tài),之后dpram1、dpram2、dpram3輪流處于寫有效狀態(tài),而且當其中一個dpram處于寫有效狀態(tài)時,另外兩個dpram處于只讀狀態(tài)。由于采用的是雙口dpram,因而當處于只讀狀態(tài)時,一個dpram可以讀取一行上相鄰的兩個像素??刂芼pram的功能采用了狀態(tài)機來完成,其中狀態(tài)的變化都由ChangeMode_en信號進行控制,這個信號由行同步信號和場同步信號控制生成。dpram控制狀態(tài)機如圖2所示,其有4個狀態(tài),分別是WAIT狀態(tài)、dpram1寫有效狀態(tài)、dpram2寫有效狀態(tài)、dpram3寫有效狀態(tài)。初始時復位,進入WAIT狀態(tài),其余時刻在ChangeMode_en為高電平時進行狀態(tài)轉(zhuǎn)變,為低電平時保持原來的狀態(tài)。

?

?

2.3 水平、垂直兩個增量dx、dy的生成模塊

  它們是由縮放系數(shù)conf決定。這里的縮放系數(shù)指:對于用單位長度來表示兩個像素點距離的模型進行縮放時,以conf為間隔形成的一個新采樣格柵,對模型圖像進行重采樣時,則新的圖像相鄰的像素點之間的距離便為conf。如果在水平和垂直兩個方向上的縮放倍數(shù)不同,則可以定義兩個不同大小的縮放因子conf_x、conf_y。例如:從分辨率為640×480的圖像轉(zhuǎn)化為800×600的圖像,需要進行行列方向上1.25倍的放大,則縮放系數(shù)分別為conf_x=1/1.25,conf_y=1/1.25。假設原始圖像對應的目標圖像大小為I×J,則在水平和垂直方向上分別對應有I個dx、J個dy,即i的取值從0~I,j的取值從0~J。計算dx、dy的公式如下:

  

  這里,增量dx和dy的生成要和原始圖像的四個像素點相對應,即對應不同的目標像素點,需要更新i和j的值,然后計算對應的增量dx和dy。硬件實現(xiàn)電路圖如圖3。在行、場有效信號時,分別產(chǎn)生行和列方向的使能信號En_x和En_y。控制增量系數(shù)和對應的像素點之間的同步生成。最后累加和與累加和取整相減的實現(xiàn)是對累加和的結(jié)果Sum_x和Sum_y進行處理,保留它的小數(shù)部分作為最后的增量的值。

?

?

2.4 插值運算模塊

 這個模塊的作用是實現(xiàn)以下公式的運算:

 P(x+dx,y+dy)=(1-dx)(1-dy)P1+dx(1-dy)P2+(1-dx)dyP3+dxdyP4

 對獲取的4個相鄰的像素P1、P2、P3、P4和坐標增量dx、dy進行雙線性的插值運算。計算前可以對計算式進行優(yōu)化,使它耗費的資源最少。公式經(jīng)過減少乘法器的等價變換之后,變成了如下形式:

 P(x+dx,y+dy)=((P4-P3)-(P2-P1))dxdy+(P2-P1)dx+(P3-P1)dy+P1

 它只需要4個乘法器和7個加法器。因而比原計算公式節(jié)省了4個乘法器的資源。該模塊有固定的延時時間。對于不同的延時路徑,只要在適當?shù)牡胤讲迦爰拇嫫鬟M行平衡,即引入流水線(pipeline)的技術,加快模塊處理的吞吐率,最后再把幾個路徑的結(jié)果進行累加,就可以得到最后的目標像素點的灰度值。電路原理圖如圖4。

?

?

2.5 同步時序信號生成模塊

  這個模塊的作用是,一方面產(chǎn)生顯示所需要的同步信號、消隱信號,包括行同步信號H_sync、場同步信號V_sync、混合同步信號C_sync、消隱信號Blank;另一方面產(chǎn)生地址信號用于控制增量生成模塊以及獲取原始圖像的4個相鄰的像素模塊。

  同步時序信號的生成,對于不同的圖像顯示格式,必須符合特定要求。針對Virtex_iv開發(fā)平臺,由于使用的時鐘頻率為25.175MHz,因而圖像顯示的分辨率取為640×480,場頻為59.94Hz。對于場信號,主要參數(shù)有:總行數(shù)、有效顯示行數(shù)、場同步信號的寬度、場消隱前肩、場消隱后肩;同樣,對于行信號,也有類似的幾個參數(shù):總像素點、有效顯示的像素點、行同步信號寬度、行消隱前肩、行消隱后肩。參數(shù)的具體設置值為:總行數(shù)為525行,有效顯示行數(shù)為480行,場同步信號為2行,場消隱前肩為13行,場消隱后肩為30行;總像素點為800點,有效顯示的像素點為640點,行同步信號為96點,行消隱前肩為19點,行消隱后肩為45點。

  本文是采用計數(shù)器方法設計。首先設計一個總的行數(shù)、點數(shù)的計數(shù)器進程,其中行計數(shù)器在0~479的計數(shù)值時作為有效顯示行的時刻,480~524時為場消隱的時刻,包括場同步、場消隱前肩、場消隱后肩;點數(shù)計數(shù)器,在0~639的計數(shù)值為有效顯示的時刻,640~799為行消隱的時刻,包括行同步、行消隱前肩、行消隱后肩。

3 驗證及其資源利用

  定標器的驗證示意圖如圖5,在FPGA內(nèi)部BRAM中存儲一幅圖像,也可以通過總線輸入圖像數(shù)據(jù)。圖像數(shù)據(jù)通過一個FIFO緩存模塊緩存一行數(shù)據(jù)之后,數(shù)據(jù)流輸入到定標器中進行分辨率的調(diào)整,最后由定標器輸出顯示所需要的RGB數(shù)據(jù)和同步信號H_sync、V_sync、C_sync、Blank_n以及像素地址Addr_x、Addr_y。同步信號直接作用于顯示的接口芯片。像素地址用于從FIFO緩存模塊中讀出原始圖像的像素。

?

?

  驗證平臺采用了Virtex_4 FX12 Evaluation Board以及Audio/Video Board。Audio/Video模塊并不是單獨使用的模塊,而是和具有足夠的利用音/視頻能力并且能夠提供實時處理能力的實體模塊一起使用[5]。板上使用的FPGA芯片為vc4vf12-12ff668。板上提供的AD轉(zhuǎn)換芯片為ADV7123,像素時鐘為25.175MHz。因而目標圖像的顯示格式選取為640×480,25.175MHz。通過VGA接口,不同顯示分辨率的原始圖像經(jīng)過定標器的縮放之后,在CRT或TFT顯示器上進行顯示。實驗結(jié)果表明,目標圖像顯示清晰,而且在邊緣處也比較平滑,沒有出現(xiàn)影響視覺觀察的塊狀效應。

  本驗證的綜合結(jié)果為:使用的Slices數(shù)目為566個,只占Slices總數(shù)的10%;使用的Slice Flip Flops數(shù)目為321個,只占總數(shù)的2%;使用輸入LUTs的數(shù)目為1024個,占總數(shù)的9%。因而,設計的定標器占用的資源較小。定標器對視頻顯示分辨率的調(diào)整以及視頻顯示的質(zhì)量有較大影響,被廣泛地應用于平板顯示器的顯示系統(tǒng)中,因而對它進行探討很有意義。目前,對于定標器的研究很少,本文給出了定標器在FPGA上的一種實現(xiàn)方法。實驗結(jié)果表明,這種定標器能夠有效地實現(xiàn)縮放,而且顯示效果清晰。這種實現(xiàn)方法對于定制定標器IP模塊也具有參考意義。

?

參考文獻

[1] 劉政林,鄒雪城,向祖權,等.定標器的設計與實現(xiàn)[J].電子學報,2006,34(1):185-188.

[2] 劉笑宙,涂國防.小波雙線性插值應用于光學遙感圖像[J].中國科學院研究生院學報,2003,20(1):39-43.

[3] 陳書海,傅錄詳.實用數(shù)字圖像處理[M].北京:科學出版社,2005,6.

[4] 胡小鋒,趙輝.Visual C++/MATLAB圖像處理與識別實用案例精選(第一版)[M].北京:人民郵電出版社,2004,9.

[5] AVNET.Audio/Video Module User Guide.http://www.em.avnet.com/evk/home/,2006.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權者。如涉及作品內(nèi)容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。