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