向祖權(quán) 劉政林 劉志會
(武漢理工大學(xué)交通學(xué)院1) 武漢 430063) (華中科技大學(xué)光學(xué)與電子信息學(xué)院2) 武漢 430074)
在圖像顯示領(lǐng)域,很多情況下圖像源輸出的圖像分辨率是變化的,目前工業(yè)上常用的分辨率有 VGA,SVGA,XGA,SXGA,UXGA 等.另一方面由于工業(yè)生產(chǎn)標(biāo)準(zhǔn)化的需要,常見的LCD顯示面板中,某一物理尺寸的顯示屏其分辨率都是固定的,例如381mm(15in)液晶屏的分辨率為1 024×768,431.8mm(17in)液晶屏的分辨率為1 280×1 024,這就造成信號源輸出的圖像分辨率和LCD顯示器的物理分辨率不匹配的問題[1].要在液晶顯示器上取得最佳的全屏圖像顯示效果,就是以顯示屏的物理分辨率來顯示圖像.假如輸入圖像的分辨率為800×600,而顯示器的物理分辨率為1024×768,如果沒有LCD控制器的話,800×600大小的圖像將顯示在顯示屏的中央,而在圖像四周填充黑框來實現(xiàn)全屏顯示.這樣的顯示效果是難以令人接受的,故而需要LCD控制器對圖像數(shù)據(jù)進(jìn)行縮放以匹配顯示器的物理分辨率,以求獲得最佳的顯示效果.
圖1是設(shè)計的大尺寸LCD控制器的原理框圖,本文主要論述了控制器的核心部分——圖像縮放引擎的設(shè)計實現(xiàn)[2-5].
圖1 LCD控制器的基本結(jié)構(gòu)
在圖像縮放應(yīng)用中,用的最流行的簡單算法主要是nearest,bilinear和bicubic.例如,Adobe的圖像處理軟件Photoshop中提供了這3種插值算法.在中低端數(shù)碼相機(jī)圖像插值中,幾乎全部采用這3種插值算法,具體采用這3種算法中的哪一種,主要根據(jù)應(yīng)用場合而定.圖像縮放算法的復(fù)雜程度和圖像的縮放質(zhì)量是成正比的,也就是說算法越復(fù)雜,得到的縮放圖像質(zhì)量一般也越高.但復(fù)雜的算法需要的計算時間大大增加,從而造成前面的數(shù)據(jù)計算還沒有完成,后面的數(shù)據(jù)已經(jīng)進(jìn)入而覆蓋前面的數(shù)據(jù)這樣的混亂局面,且隨著算法的復(fù)雜程度增加,用硬件實現(xiàn)也較困難,因此兩者是不可兼得的.例如LCD顯示器在UXGA模式下時,其顯示時鐘高達(dá)135.48MHz,要在如此高的頻率下實現(xiàn)圖像縮放的實時性,采用復(fù)雜的算法具有相當(dāng)?shù)碾y度.本文結(jié)合LCD這一特定的應(yīng)用場合,提出了一種基于兩點的三次樣條插值算法,該算法在硬件實現(xiàn)上和nearest,bilinear一樣簡單,但可以獲得比它們好的圖像處理效果.
下面闡述基于兩點的三次樣條插值函數(shù)的求取過程.如圖2所示,虛線表示最近領(lǐng)域插值的插值核曲線,點化線表示線性插值的插值核曲線,實線表示提出的基于兩點的三次樣條插值核曲線.三次樣條函數(shù)f(x)必須滿足下面3個條件:(1)函數(shù)通過點A(0,0),C(1/2,1/2)和D(1,1),即f(xi)=y(tǒng)i,i=1,2,3;(2)函數(shù)一階導(dǎo)數(shù)和二階導(dǎo)數(shù)連續(xù);(3)函數(shù)在每一個子區(qū)間[xi,xi+1]上均是三次多項式.
圖2 插值核曲線
根據(jù)條件(3),三次樣條函數(shù)f(x)的一般表達(dá)式可寫為
式中:ai,bi,ci,di為待定系數(shù).
根據(jù)式(1)和分段插值條件,來建立由系數(shù)ci表示的函數(shù)表達(dá)式.根據(jù)條件(1),可以得到
用ci來表達(dá)未定系數(shù)bi,di,f(x)的表達(dá)式為:
式中:hi+1=xi+1-xi.
基于子區(qū)間[xi,xi+1]和[xi-1,xi]上樣條函數(shù)內(nèi)在關(guān)系.可以得到一個可以惟一確定系數(shù)ci的表達(dá)式
式中:
為了惟一的確定出ci,還需要另外一個邊界條件,在本算法的推導(dǎo)中設(shè)定點A和D的一階導(dǎo)數(shù)為零.最后可以推出基于兩點的三次樣條插值函數(shù)為
提出的基于兩點的三次樣條插值核曲線之所以能夠取得比線性插值更好的圖像插值效果,其主要原因在于:(1)點A和D 處的一階導(dǎo)數(shù)為零,保證了尖銳邊緣區(qū)域與平滑區(qū)域兩邊的平滑過渡;(2)點C處的一階導(dǎo)數(shù)等于1.5,這和線性插值相比,可以得到更好的高頻響應(yīng),從而使圖像邊緣更加接近源圖像.
LCD控制器的關(guān)鍵部分就是圖像縮放引擎.從圖1可以看出,圖像縮放引擎由FIFO、水平縮放、Line buffer和垂直縮放4個部分組成.在用硬件實現(xiàn)時,其具體的結(jié)構(gòu)及各功能模塊之間的信號關(guān)系見圖3.
圖3 圖像縮放引擎的總體結(jié)構(gòu)
FIFO的作用是用來在輸入時鐘域和顯示時鐘域之間穩(wěn)定地傳遞數(shù)據(jù),并緩沖輸入數(shù)據(jù),保證輸入和輸出圖像的幀同步,F(xiàn)IFO以前為輸入時鐘域,之后屬于顯示像素時鐘域,該時鐘由內(nèi)部或者外部PLL提供.水平縮放引擎實現(xiàn)對輸入圖像水平方向的縮放,處理后的數(shù)據(jù)進(jìn)入行緩沖器(line buffer)進(jìn)行緩存.垂直縮放引擎實現(xiàn)對輸入圖像垂直方向的縮放.水平和垂直縮放器均是基于本章第三節(jié)提出的兩點三次樣條插值的低通濾波器.設(shè)計的LCD控制器預(yù)期支持的最高分辨率為SXGA,為了給FIFO預(yù)留一定的裕度,圖像縮放引擎中的FIFO大小為2 048×24.在垂直方向要插值出一行新的數(shù)據(jù),由兩點三次樣條插值算法可知必須事先在line buffer中預(yù)存2行圖像數(shù)據(jù),同時為了時序配合的需要,line buffer也需要一定的裕度,因此在設(shè)計中l(wèi)ine buffer的大小為4行,每行的大小為2 048×24.
從兩點三次樣條插值的插值核函數(shù)可以看知,每求取一個插值系數(shù),需要做一次立方、一次平方、兩次乘法和一次減法運算,為了減少實時計算濾波器插值系數(shù)的工作量,在濾波器硬件實現(xiàn)時采用查表法(look-up table,LUT)來實現(xiàn)插值系數(shù)的求解.每一個LUT的大小是256×8,將插值曲線的變量取值區(qū)間[0,1]等分為256份,則可以得到256個函數(shù)值f(xi),i=0,1,2,…,255,每個f(xi)為8bits.具體的插值實現(xiàn)如下.
如圖4所示,插值點的像素值由下式確定
式中:i和j均為整數(shù),i=1,2,…,out_num,j=1,2,…;in_num,out_num 為圖像放大后的分辨率,in_num 是源圖像的分辨率;f(xi)和1-f(xi)為插值濾波器的插值系數(shù).
i和j之間的關(guān)系如下.
函數(shù)Round就是對i×ratio截取整數(shù)部分.ratio則由下式求得.
新的插值位置:
函數(shù)Fraction就是對i×ratio截取其小數(shù)部分.
圖4 插值實現(xiàn)原理圖
式(12)確定了插值點的位置,該位置信息確定后,將其映射成LUT的入口地址,則可以查找到相應(yīng)的插值系數(shù)f(xi),另外一個插值系數(shù)1-f(xi)通過對f(xi)執(zhí)行邏輯非操作來實現(xiàn).LUT的入口地址由下式確定:
LUT技術(shù)的使用,簡化了水平和垂直縮放器的濾波器結(jié)構(gòu),水平和垂直濾波器結(jié)構(gòu)見圖5.
圖5 插值濾波器結(jié)構(gòu)
為了評價本文提出的兩點三次樣條插值的圖像處理效果,采用文獻(xiàn)[6]提出的Q值評價法來評價插值后的圖像質(zhì)量,該評價方法已經(jīng)被證明了它比MSE,NMSE,PSNR更符合人的主觀視覺感受.用于評價的圖像來自 USC-SIPI(university of southern california-signal &image processing institute)圖像數(shù)據(jù)庫.所選用的圖像見圖6.對圖中的8幅圖像先進(jìn)行2倍抽取得到低分辨率的圖像,然后采用nearest,bilinear,bicubic和兩點三次樣條插值法進(jìn)行重建.各重建圖像的Q值評價見表1.
圖6 用于Q值評價的測試圖像(512×512)
表1 兩點三次樣條插值和傳統(tǒng)插值算法之間的Q值評價
由表1可見,4種插值算法的Q值比較接近于1,可見各種算法處理后得到的圖像與原始圖像比較接近.但nearest插值法的Q值最低,bilinear的Q值較大,bicubic的Q值最高,本文提出的基于兩點的三次樣條插值法的Q值非常接近bicubic的Q值,甚至有2幅圖像(elaine、tiffany)的Q值大于了bicubic處理后的Q值,可見本文提出的算法處理效果非常接近于bicubic算法的處理效果.而在硬件實現(xiàn)時,當(dāng)均使用LUT查找表技術(shù)來實現(xiàn)時,根據(jù)本課題LCD控制器的體系結(jié)構(gòu),實現(xiàn)bicubic算法時需要進(jìn)行3次加法、4次乘法、且至少需要4行l(wèi)ine buffer,而實現(xiàn)本文提出的插值算法則只需要進(jìn)行1次加法,2次乘法和至少需要2行l(wèi)ine buffer,因此本文提出的算法在節(jié)省硬件開銷的同時,可以達(dá)到和bicubic非常接近的圖像處理效果,對于設(shè)計的LCD控制器來說是一個性價比較高的選擇.
圖像縮放引擎已經(jīng)用Verilog HDL進(jìn)行RTL描述并完成FPGA驗證,許多測試圖像和幾部電影被顯示在15in的LCD屏上,F(xiàn)PGA驗證時的顯示效果見圖7.
圖7 FPGA驗證時靜態(tài)文本圖像和視頻圖像的顯示效果
當(dāng)在 VGA,SVGA,XGA,SXGA,UXGA之間改變圖像分辨率時,圖像縮放引擎工作正常,在LCD屏上得到了良好的圖像顯示效果和穩(wěn)定性,整個畫面清晰、無抖動、色彩渲染效果理想.這表明設(shè)計的圖像縮放引擎工作正確,達(dá)到預(yù)期設(shè)計目標(biāo).提出的兩點三次樣條插值算法不僅使圖像縮放引擎的硬件實現(xiàn)簡單,而且節(jié)省硬件開銷,同時取得了良好的圖像處理效果.
[1]KIM H C,KWON B H,CHOI M R.An image interpolator with image improvement for LCD controlle[J].IEEE Trans.On Consumer Electronics,2001,47(2):263-271.
[2]向祖權(quán),鄒雪城,劉政林,等.應(yīng)用 MTV412M實現(xiàn)LCD控制器AMI-Scaler的顯示控制[J].微電子學(xué)與計算機(jī),2006,23(11):60-62.
[3]陸二慶,栗方,趙榮陽.S3C2410TFT-LCD顯示的驅(qū)動程序設(shè)計[J].電腦開發(fā)與應(yīng)用,2009,22(3):55-59.
[4]梁浩東,張國平,潘 梁.基于ARM處理器S3C2440A的便攜式視頻展示臺的設(shè)計[J].電子設(shè)計工程,2013,21(14):21-25.
[5]趙慧波,鄒雪城.LCD定標(biāo)器中輸入數(shù)據(jù)格式測量的設(shè)計實現(xiàn)[J].華中科技大學(xué)學(xué)報:自然科學(xué)版,2005(3):78-81.
[6]ZHOU Wang,ALAN C B.A universal image quality index[J].IEEE Signal Processing Letters,Mar.,2002(9):81-84.