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

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

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

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

  關(guān)鍵詞: 定標(biāo)器;FPGA;雙線性

?

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

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

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

1 雙線性算法描述

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

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

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

????利用這個(gè)公式,對(duì)于每一個(gè)目標(biāo)像素點(diǎn),都可以定量地由原始圖像的4個(gè)像素點(diǎn)進(jìn)行計(jì)算得到。

2 定標(biāo)器的FPGA實(shí)現(xiàn)

2.1 定標(biāo)器的實(shí)現(xiàn)模塊

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

?

?

2.2 獲取原始圖像相鄰的四個(gè)像素模塊

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

?

?

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

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

  

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

?

?

2.4 插值運(yùn)算模塊

 這個(gè)模塊的作用是實(shí)現(xiàn)以下公式的運(yùn)算:

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

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

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

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

?

?

2.5 同步時(shí)序信號(hào)生成模塊

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

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

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

3 驗(yàn)證及其資源利用

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

?

?

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

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

?

參考文獻(xiàn)

[1] 劉政林,鄒雪城,向祖權(quán),等.定標(biāo)器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子學(xué)報(bào),2006,34(1):185-188.

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

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

[4] 胡小鋒,趙輝.Visual C++/MATLAB圖像處理與識(shí)別實(shí)用案例精選(第一版)[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)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。