(1.中國(guó)科學(xué)院 研究生院, 北京 100039;2.中國(guó)科學(xué)院 聲學(xué)研究所, 北京 100190)
摘要:嵌入式操作系統(tǒng)資源有限,導(dǎo)致μCGUI無(wú)法顯示平滑與清晰的圖形。針對(duì)此問(wèn)題,提出一種基于邊緣平滑雙線性插值算法的μCGUI高清顯示技術(shù),使圖片與文字能夠更加平滑清晰地顯示;并付諸在工程項(xiàng)目中實(shí)現(xiàn),提升了基于嵌入式μCLinux操作系統(tǒng)的高清電視機(jī)頂盒顯示效果。
關(guān)鍵詞:雙線性插值算法;μCGUI;高清顯示技術(shù)
中圖分類(lèi)號(hào):TP3174文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2008)11-3382-03
High definition display technology of μCGUI based on edge-smoothness bilinear interpolation algorithm
WU Li-bin1,2,WANG Jin-lin2,HU Jian-liang2,SUN Peng2
(1.Graduate School, Chinese Academy of Sciences, Beijing 100039, China;2.Institute of Acoustics, Chinese Academy of Sciences, Beijing 100190, China)
Abstract:The most important problem is that μCGUI can not display a smooth and clear image because of limited resource. To solve this problem, this work proposed a novel high definition display technology of μCGUI which based on edge-smoothness bilinear interpolation algorithm. It can improve the display effect, and make the picture and characters more smoothness and clearly.
Key words:bilinear interpolation algorithm;μCGUI;high-definition display technology
目前國(guó)內(nèi)高清電視已逐漸興起,大部分液晶電視都支持超高分辨率(如1 024×768、1 280×960、1 920×1 080)以提高觀賞效果。然而,由于作為高清電視前端的基于嵌入式μCLinux操作系統(tǒng)的高清電視機(jī)頂盒的GUI圖形顯示接口始終停留在720×480的分辨率上,使得用戶UI界面顯示清晰度受限,并且文字和圖片顯示會(huì)出現(xiàn)邊緣鋸齒或馬賽克,無(wú)法滿足高清顯示效果。μCGUI圖形顯示接口停留在720×480分辨率上的主要原因如下:a)嵌入式系統(tǒng)flash資源有限。由于一般嵌入式平臺(tái)的flash芯片只支持4~16 MB,極大限制了可燒寫(xiě)進(jìn)flash的文字、圖片及應(yīng)用程序的大小。例如,一個(gè)34點(diǎn)陣的GBK編碼字庫(kù)需要4 MB存儲(chǔ)空間,即使壓縮也需要2 MB存儲(chǔ)空間。如果需要支持不同字號(hào)、不同編碼格式的字庫(kù),其結(jié)果是不同字庫(kù)占用了大部分flash空間,導(dǎo)致應(yīng)用程序和圖片等資源存儲(chǔ)空間受限。b)嵌入式系統(tǒng)內(nèi)存有限。在基于嵌入式μCLinux操作系統(tǒng)的嵌入式系統(tǒng)中,顯示一幅750萬(wàn)像素(3 000(寬)×2 500(高))圖像需要約28 MB內(nèi)存空間,嵌入式系統(tǒng)內(nèi)存的實(shí)際情況很難滿足這些需求。c)帶寬不足。當(dāng)視頻層與OSD層同時(shí)送入輸出通道進(jìn)行顯示時(shí),如果OSD層分辨率過(guò)高會(huì)導(dǎo)致帶寬不足,導(dǎo)致系統(tǒng)自動(dòng)丟棄優(yōu)先級(jí)較低的OSD數(shù)據(jù),引起OSD信息模糊不清。
針對(duì)μCGUI圖形顯示分辨率過(guò)低的問(wèn)題,本文提出一種基于雙線性插值算法的μCGUI高清顯示技術(shù),通過(guò)使用復(fù)雜度較低的算法,使得在資源受限的嵌入式操作系統(tǒng)中能夠?qū)ⅵ藽GUI圖形顯示分辨率提高至1 280×960,提升了圖形顯示清晰度[1]。
1邊緣平滑雙線性插值算法在μCGUI高清顯示中的基本思想
為提高μCGUI圖形顯示清晰度,需要將μCGUI圖形顯示分辨率從720×480提高到1 280×960,并同時(shí)對(duì)文字和圖形輸出分辨率進(jìn)行相應(yīng)提升以滿足清晰度要求。但是由于flash、內(nèi)存與帶寬等因素限制,不能將占用存儲(chǔ)空間較大的文字和圖形加載到顯示系統(tǒng)中。采用將低分辨率、占較小存儲(chǔ)空間的文字和圖形燒寫(xiě)進(jìn)flash并進(jìn)行內(nèi)存加載,通過(guò)改進(jìn)后的雙線性插值算法將文字與圖形進(jìn)行插值計(jì)算得到高分辨率顯示數(shù)據(jù),將其進(jìn)行混疊送入輸出通道顯示的方案,不僅解決了文字和圖形分辨率與占用存儲(chǔ)空間的矛盾,同時(shí)解決了圖形文字的清晰度不足的問(wèn)題。這里圖形引擎支持X、Y、Z三個(gè)輸入通道和NX輸出通道,并可以在不同的通道內(nèi)對(duì)圖像進(jìn)行混疊[2]。
選擇雙線性插值算法來(lái)處理μCGUI高清圖形顯示有如下優(yōu)點(diǎn):a)低分辨率數(shù)據(jù)經(jīng)過(guò)插值后,可提高輸出分辨率,滿足高清晰度的視覺(jué)效果。b)降低數(shù)據(jù)存儲(chǔ)量,能夠在資源受限的操作系統(tǒng)中保證資源的有效占有率。c)算法復(fù)雜度較低,嵌入式系統(tǒng)CPU主頻(166~202 MHz)完全能夠?qū)崿F(xiàn)。
μCGUI高清圖形顯示技術(shù)的基本流程如圖1所示。首先將寫(xiě)入flash中的低分辨率圖形與文字讀入內(nèi)存中,并將輸出分辨率從原來(lái)的720×480調(diào)整至1 280×960;使用改進(jìn)的雙線性插值算法對(duì)低分辨率的圖形與文字進(jìn)行插值計(jì)算,將得到的數(shù)據(jù)送回內(nèi)存中;最后通過(guò)對(duì)調(diào)色板等信息的配置,將經(jīng)過(guò)插值后的完整文字和圖形信息送入輸出通道進(jìn)行顯示。虛線框中所示的部分為本算法的核心部分。通過(guò)該核心部分算法,可提高目前μCGUI圖形顯示效果,使邊緣平滑,圖形顯示清晰。核心部分將在下一部分進(jìn)行詳細(xì)分析。
2邊緣平滑雙線性插值算法原理
雙線性插值根據(jù)像素點(diǎn)周?chē)罱咏乃膫€(gè)點(diǎn)的灰度值作二維線性插值計(jì)算。它的準(zhǔn)確度高于最鄰近域插值算法。算法如圖2所示。假設(shè)圖像寬度為W,高度為H,輸入圖像寬度為W′,高度為H′。將輸入圖像的寬度與高度分別作W與H等分,輸出圖像的任意一點(diǎn)灰度值由輸出圖像中的四個(gè)點(diǎn)(a,b)、(a,b+1)、(a+1,b)、(a+1,b+1)來(lái)確定。其中a=[x×W′/W],b=[x×H′/H][3]。可得到插值點(diǎn)(x,y)的灰度值f(x,y)為
f(x,y)=(b+1-y)f(x,b)+(y-b)f(x,b+1)(1)
f(x,b)=(x-a)f(a+1,b)+(a+1-x)f(a,b)(2)
f(x,b+1)=(x-a)f(a+1,b+1)+(a+1-x)f(a,b+1)(3)
將式(2)(3)代入式(1)中可得到式(4):
f(x,y)=(b+1-y)[(x-a)f(a+1,b)+(a+1-x)f(a,b)]+(y-b)[(x-a)f(a+1,b+1)+(a+1-x)f(a,b+1)]
(4)
21μCGUI高清文字顯示的邊緣平滑雙線性插值算法
嵌入式操作系統(tǒng)的μCGUI文字圖形接口使用的是2D圖形引擎,使用點(diǎn)陣字庫(kù)對(duì)文字進(jìn)行顯示。由于點(diǎn)陣字符的特殊性,其值在Z方向只有0或1兩種取值,對(duì)于文字的雙線性插值算法作了優(yōu)化與改進(jìn),選擇只插入0或1這兩種取值。
對(duì)于文字的雙線性插值算法首先需要確定目標(biāo)插值像素點(diǎn)。假設(shè)原點(diǎn)陣數(shù)據(jù)為f(i, j),在x方向上放大M倍,在y方向上放大N倍,進(jìn)行插值后點(diǎn)陣數(shù)據(jù)為f(x,y),則原始數(shù)據(jù)在插值后點(diǎn)陣數(shù)據(jù)中的通用對(duì)應(yīng)關(guān)系滿足x=i×M,y=j×N[4]。本文以將16×16點(diǎn)陣字符通過(guò)雙線性插值變化為32點(diǎn)陣字符為例,即無(wú)論X方向還是Y方向均為每隔一點(diǎn)進(jìn)行一次插值,如圖3所示為將16×16點(diǎn)陣字符通過(guò)雙線性插值后變?yōu)?2×32點(diǎn)陣字符所需插值的位置。其中黑點(diǎn)所在位置為16×16點(diǎn)陣字符的原始數(shù)據(jù)點(diǎn),而十字表示目標(biāo)插值像素點(diǎn)。在確定目標(biāo)插值像素點(diǎn)位置后,根據(jù)點(diǎn)陣字符的特殊性對(duì)上述目標(biāo)插值像素點(diǎn)進(jìn)行特殊的0/1插值。如圖4為插值相關(guān)點(diǎn)示意圖。插值像素點(diǎn)I(1,1)的fI(1,1)可由式(5)求出。對(duì)于插值像素點(diǎn)F(1,2)的fF(1,2)則使用式(6)求得。
fI(1,1)=((fA(0,0)+fC(2,0))/2+(fE(2,2)+fG(0,2))/2)/2
(5)
fF(1,2)=(fE(2,2)+fG(0,2))/2(6)
如果fI(1,1)≥1/n則取I(1,1)=1,否則I(1,1)=0。同樣,如果fF(1,2)≥1/n則
取F(1,2)=1,否則F(1,2)=0。其中n為參與計(jì)算的原始像素點(diǎn)的個(gè)數(shù)。上述I(1,1)與F(1,2)點(diǎn)是兩個(gè)有著本質(zhì)區(qū)別的點(diǎn)。按上述方式進(jìn)行插值,則插值像素點(diǎn)將有兩種類(lèi)型。類(lèi)型(1):I(1,1)與該點(diǎn)直接相鄰的8個(gè)數(shù)據(jù)點(diǎn)上存在4個(gè)原始數(shù)據(jù)點(diǎn)與4個(gè)插值數(shù)據(jù)點(diǎn)。這一類(lèi)型的插值通過(guò)4個(gè)原始數(shù)據(jù)點(diǎn)經(jīng)過(guò)上述改進(jìn)的雙線性插值計(jì)算求得。類(lèi)型(2):F(1,2)與該點(diǎn)直接相鄰的8個(gè)數(shù)據(jù)點(diǎn)上,只有兩個(gè)為原始數(shù)據(jù)點(diǎn),因此,對(duì)于這一類(lèi)型的插值像素點(diǎn)使用兩個(gè)原始數(shù)據(jù)點(diǎn)進(jìn)行插值計(jì)算。兩類(lèi)通用公式為式(7)(8)。在確定插值像素點(diǎn)與插值公式后,從起始點(diǎn)A(0,0)開(kāi)始,沿X方向逐行遍歷所有數(shù)據(jù)點(diǎn),并將計(jì)算結(jié)果直接寫(xiě)入用于顯示的內(nèi)存地址,等待顯示。
f(x,y)=x-1≤i≤x+1y-1≤j≤y+1f(i, j)/n
(7)
(x,y)=0(f(x,y)<1/n)
1(f(x,y)≥1/n)(8)
其中:n={2,4},n為參與計(jì)算的像素點(diǎn)個(gè)數(shù)。
(x,y)的取值界定在1/n有利于文字邊緣平滑效果,使得在計(jì)算一個(gè)插值點(diǎn)時(shí)只要存在一個(gè)原始像素點(diǎn)為1,該插值點(diǎn)即為1,保證邊緣像素進(jìn)行最大限度的填充。
22μCGUI高清圖形顯示中的邊緣平滑插值算法
μCGUI高清圖形顯示算法同樣采用改進(jìn)與優(yōu)化的雙線性插值算法來(lái)實(shí)現(xiàn),但與文字顯示算法的不同之處是:a)(x,y)的取值上不再采用0/1近似取值的方式。因?yàn)椴噬珗D像的像素是由紅、綠、藍(lán)(RGB)三種顏色組成,每種顏色由一個(gè)字節(jié)來(lái)表示其色彩深度[5],因此采用上述通用式(4)對(duì)插值像素點(diǎn)進(jìn)行求解后取整,對(duì)照調(diào)色板信息查找相關(guān)顏色信息,如未查到則取最接近顏色進(jìn)行替代。b)為了保證圖像進(jìn)行插值后平滑、柔和的特點(diǎn),這里采用每遍歷一行數(shù)據(jù)后將原始像素與插值后的目標(biāo)像素均作為下一行數(shù)據(jù)的原始像素進(jìn)行插值計(jì)算,以除去由于插值帶來(lái)的顏色像素突兀點(diǎn)。
3實(shí)驗(yàn)結(jié)果驗(yàn)證
對(duì)于圖像的插值算法比較常用的有三種[6,7]:a)最鄰近域插值算法(nearest neighbor interpolation)。在這種算法中,每一個(gè)插值輸出像素的值就是在輸入圖像中與其最鄰近的采樣點(diǎn)的值。b)雙線性插值算法(bilinear interpolation)。該方法輸出像素值是它在輸入圖像中2×2鄰域采樣點(diǎn)的平均值,它根據(jù)某像素周?chē)?個(gè)像素的灰度值在水平和垂直方向上對(duì)其插值。c)雙立方插值算法(bicubic interpolation)。該方法輸出像素值是它在輸入圖像中4×4鄰域采樣點(diǎn)的平均值,它的插值效果比較好,但相應(yīng)的計(jì)算量較大。上述三種方法中第一種方法插值并不精確,第三種方法計(jì)算量較大。因此,對(duì)于嵌入式μCGUI這種資源嚴(yán)重受限的平臺(tái),本文選用了改進(jìn)后的雙線性插值算法,不但提高了μCGUI顯示清晰度,也提高了圖形文字整體柔和度與邊緣平滑度。
這里使用視頻采集卡采集μCGUI顯示的圖像信號(hào)并進(jìn)行量化對(duì)比。表1選用均方差值(MSE)、平均絕對(duì)差值(MAE)和峰值信噪比(PSNR)作為評(píng)價(jià)指標(biāo),對(duì)以上三種方式和使用改進(jìn)雙線性插值方式前后的圖像進(jìn)行對(duì)比,其中PSNR表達(dá)式如下:
PSNR=10 lg(255/δ)2=48-20 lg δ(9)
δ=1/nni=1(S0-S)2(10)
其中:S0和S分別表示原始圖像和待評(píng)價(jià)圖像;n為圖像的像元數(shù)。
表1圖像數(shù)據(jù)處理對(duì)照表
類(lèi)別MSEMAEPSNR/dB
最鄰近域插值算法0.013 7870.061 11226.163 335
雙線性插值算法0.013 3950.063 41326.962 475
雙立方插值算法0.012 4390.060 73227.981 318
改進(jìn)雙線性插值算法前0.015 2320.066 15724.762 521
改進(jìn)雙線性插值算法后0.012 6730.061 04927.394 212
表2中以顯示180×220分辨率圖像為例,測(cè)試了μCLinux操作系統(tǒng)的μCGUI顯示該圖像時(shí)各種算法所需的計(jì)算耗時(shí)。
表2各種算法在μCLinux操作系統(tǒng)上的μCGUI顯示計(jì)算耗時(shí)對(duì)照表
類(lèi)別計(jì)算耗時(shí)/ms類(lèi)別計(jì)算耗時(shí)/ms
鄰域插值算法291改進(jìn)雙線性插值算法前283
雙線性插值算法462改進(jìn)雙線性插值算法后506
雙立方插值算法 1 157
從上述實(shí)驗(yàn)數(shù)據(jù)驗(yàn)證可以看出,改進(jìn)后的雙線性插值算法在μCGUI顯示中基本可以達(dá)到雙立方插值算法的效果,各種數(shù)據(jù)遠(yuǎn)遠(yuǎn)優(yōu)于未使用該算法前的數(shù)據(jù)。由于考慮到表2中在μCLinux操作系統(tǒng)上的μCGUI顯示計(jì)算耗時(shí),在μCGUI顯示中選擇改進(jìn)雙線性插值算法是最優(yōu)的。
圖5為使用嵌入式μCLinux操作系統(tǒng),通過(guò)視頻采集卡采集μCGUI顯示的圖像信號(hào)輸出效果截圖。a)為未使用該技術(shù)前μCGUI顯示文字的效果;b)為使用該技術(shù)后μCGUI顯示文字的效果。可以看出,文字的邊緣平滑度大大增強(qiáng),文字顯示效果細(xì)膩平滑;c)為未使用該技術(shù)前μCGUI顯示圖片的效果;d)為使用該技術(shù)后μCGUI顯示圖片的效果。同樣可以看出,圖像的馬賽克現(xiàn)象大大減小,相對(duì)于原來(lái)更加細(xì)膩平滑。
4結(jié)束語(yǔ)
本文將改進(jìn)的雙線性插值算法用于嵌入式μCLinux操作系統(tǒng)的高清家用數(shù)字播放器中,以提高μCGUI的顯示技術(shù),增強(qiáng)了圖形界面的清晰度,達(dá)到從OSD層到視頻層的高清統(tǒng)一化效果。該技術(shù)已應(yīng)用于高清家用數(shù)字播放器中,其顯示效果有明顯改善。
參考文獻(xiàn):
[1]
GRIBBON K T,BAILEY D G.A novel approach to real-time bilinear interpolation[C]//Proc of the 2nd IEEE International Workshop on Electronic Design, Test and Applications.2004:126-131.
[2]孫曉輝,陳曉.基于μCGUI的圖形系統(tǒng)在機(jī)頂盒中的應(yīng)用[J].中國(guó)有線電視,2007,9(10):909-912.
[3]陳良,高成敏.快速離散化雙線性插值算法[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(15):3787-3790.
[4]李懷瓊,陳錢(qián),隋修寶.基于邊緣保護(hù)的紅外圖像插值放大算法[J].兵工學(xué)報(bào),2006,27(4):655-658.
[5]袁源,戴冠中,羅紅.基于分形思想的差值圖像壓縮技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2007,24(4):190-191,248.
[6]田利波,王瑞光.基于移動(dòng)窗口的圖像縮放算法[J].電視技術(shù), 2007,31(8):18-20.
[7]王薇,謝宇.提高波前探測(cè)精度的雙立方插值方法[J].淮北煤炭師范學(xué)院學(xué)報(bào):自然科學(xué)版,2007,28(1):20-23.