曹亞君,邵玉蘭
(商丘職業(yè)技術(shù)學(xué)院計算機(jī)系,河南商丘476000)
數(shù)字圖像處理是指用計算機(jī)對圖像經(jīng)過采樣和數(shù)字化后的二維數(shù)組進(jìn)行分析處理,以達(dá)到所需結(jié)果的技術(shù),圖像處理所涉及的應(yīng)用領(lǐng)域也包括了人們工作、學(xué)習(xí)和生活中的各個方面。在圖像處理技術(shù)中最常見的就是圖像放大,也就是將一幅低分辨率的圖像獲得它的高分辨率版本的一種圖像處理技術(shù)。在航天航空、生物醫(yī)學(xué)工程、通信工程以及工業(yè)生產(chǎn)等各方面有著非常廣泛的應(yīng)用。
插值算法是一種應(yīng)用十分廣泛的方法。在數(shù)學(xué)表示法中,通常用y=f(x)表示一條平面曲線(若是二維函數(shù)則為曲面),為了代替原來的函數(shù)y=f(x)中的數(shù)據(jù),就需要找到另一個函數(shù)φ=f(x),找尋這個替代的函數(shù)即為插值。圖像插值就是利用已知鄰近像素點(diǎn)的灰度值來產(chǎn)生未知像素點(diǎn)的灰度值,以便由原始圖像再生出具有更高分辨率的圖像。[1]插值算法會自動選擇信息較好的像素作為增加的像素,而并非只使用臨近的像素,所以在放大圖像時,圖像看上去會比較平滑、干凈。插值是數(shù)字圖像處理領(lǐng)域里一個很大的分支,對于增加的未知像素采用哪一種插值方式是圖像放大算法的關(guān)鍵。常用的插值算法有最鄰近插值算法(Nearest Neighbor interpolation)、雙線性內(nèi)插算法(Bilinear interpolation)和雙立方插值算法(Bicubic interpolation)。
最鄰近插值算法是最簡單的一種插值算法,當(dāng)圖片放大時,缺少的像素通過直接使用與之最接近的原有的像素的顏色生成,也就是把原始像素直接復(fù)至到其領(lǐng)域內(nèi)。它是三種內(nèi)插值方式中質(zhì)量最差的一種,放大后的圖像會出現(xiàn)明顯的鋸齒或方塊,效果比較模糊,比較適合于放大倍數(shù)較小且對質(zhì)量要求不高的場合。[2]
雙線性內(nèi)插算法是沿X軸方向和Y軸方向分別對未知像素點(diǎn)進(jìn)行一次線性插值取樣,然后求得加權(quán)平均值,即為該點(diǎn)像素的顏色值。這種算法極大地消除了鋸齒現(xiàn)象,放大后的圖像平滑性好,但會使圖像邊緣模糊,在計算速度與質(zhì)量兩個方面都居于三種方法中間地位。雙立方插值算法是在沿X軸、Y軸和對角線Z軸方向?qū)ξ粗袼攸c(diǎn)取樣,求得該點(diǎn)鄰近的16個像素點(diǎn)值,依據(jù)對其遠(yuǎn)近影響進(jìn)行插值計算,得到該點(diǎn)像素的顏色平均值。雖然雙立方插值算法可以得到最佳畫質(zhì),但是它的計算復(fù)雜度實(shí)在太大了,即使采用了整數(shù)優(yōu)化和查表法,也將耗去大量的CPU資源,不太實(shí)用。本文主要討論在數(shù)字圖像的實(shí)時處理中,用途最廣的雙線性內(nèi)插算法及其優(yōu)化。
雙線性內(nèi)插,又稱雙線性插值法。用數(shù)學(xué)表示法來表示,雙線性內(nèi)插是插值函數(shù)的一種具有兩個變量的線性插值擴(kuò)展,其主要原理是對未知像素點(diǎn)鄰近的四個像素點(diǎn)在X軸和Y軸方向進(jìn)行線性插值。雙線性插值和最近鄰點(diǎn)插值法相比,可以產(chǎn)生一個能保持連續(xù)性和連通性的光滑映射,產(chǎn)生更令人滿意的效果。[3]將高為strH、srcW的圖像插值為高和寬分別為desH、desW的插值圖像,插值前后圖像的坐標(biāo)分別用(x,y)和(i,j)來表示。則此圖像插值后圖像中任一點(diǎn)的像素值可由插值前圖像中坐標(biāo)為(x,y),(x+1,y),(x,y+1)和(x+1,y+1)所對應(yīng)的4個像素的值確定。[4]如圖1所示,即
式中:u,t分別為插值點(diǎn)坐標(biāo)(i,j)與坐標(biāo)(x,y)在x和y方向的浮點(diǎn)距離,且0≤t<1,0≤u<1,由下列計算得到
對上述計算過程類推,可計算得插值圖像中其他各點(diǎn)的像素值。
圖1 目標(biāo)圖像像素灰度值的確定
雙線性內(nèi)插算法使放大后的圖像平滑性好,較好地消除了鋸齒現(xiàn)象,但其具有低通濾波性質(zhì),該方法會使高頻分量受損,圖像輪廓有一定模糊。因此為了減少雙線性內(nèi)插算法使圖像邊緣模糊的問題,對其算法優(yōu)化,主要是進(jìn)行銳化處理,使圖像視覺效果更好,圖像輪廓得到加強(qiáng)。
首先使用雙線性內(nèi)插值對原始圖像進(jìn)行放大,然后將放大后的圖像使用高通濾波讓高頻分量通過,使圖像的邊緣或線條等細(xì)節(jié)變得清晰,實(shí)現(xiàn)圖像銳化。為了達(dá)到圖像實(shí)時處理的需要,因此使用線性的FIR濾波器對圖像邊緣處理。[5]
其中w(x,y)為高通濾波算子的系數(shù),p(x,y)為中心點(diǎn)的像素值。
在YUV數(shù)據(jù)格式中,以圖像前兩行像素處理的數(shù)據(jù)為例,原始圖像第一行和第二行的128個Y分量數(shù)據(jù)如下表1所示。
表1 原圖像Y分量數(shù)據(jù)
對原始圖像使用雙線性內(nèi)插算法放大2倍后,由每行的128個數(shù)據(jù)插值可得到兩行256個Y分量數(shù)據(jù),如下表2所示。放大后的UV數(shù)據(jù)分量也通過此插值計算得到。
表2 放大后圖像Y分量數(shù)據(jù)
在對原始圖像插值放大后,接著用線性的FIR高通濾波器銳化。由于這種FIR濾波器必須滿足濾波器的中心系數(shù)為正數(shù),其他系數(shù)為負(fù)數(shù),故這里使用線性高通濾波器3×3模板的典型系數(shù),如式(2)所示。將放大后圖像的Y分量數(shù)據(jù)進(jìn)行兩次緩存處理,就得到了一個的窗口,每個像素點(diǎn)的系數(shù)如式(2)所示。
首先將原始256×256的灰度Lena圖像降采樣到128×128圖像,結(jié)著再分別應(yīng)用雙線性內(nèi)插算法及其優(yōu)化算法對圖像再進(jìn)行放大處理,對比分析還原之后的效果。如圖2所示,其中(a)為降采樣后的128×128圖像,(b)為應(yīng)用雙線性內(nèi)插算法的結(jié)果,圖像較平滑,但邊緣輪廓有一定模糊,(c)為應(yīng)用邊緣增強(qiáng)處理優(yōu)化算法的結(jié)果,與圖(b)相比,圖像的邊緣輪廓較清晰,如眼部、帽沿等邊緣部分,使處理后的圖像效果更好。
圖2 插值算法效果對比圖
在數(shù)字圖像的實(shí)時處理中,放大圖像是一種常用技術(shù)??紤]到運(yùn)算速度、硬件等條件,采用雙線性內(nèi)插是最實(shí)用的一種算法。因放大后的目標(biāo)像素值是其4個鄰近像素的加權(quán)平均值,具有低通濾波的性質(zhì),高頻分量受損,所產(chǎn)生的圖像邊緣會有一定的模糊,故本文對雙線性內(nèi)插放大圖像算法進(jìn)行優(yōu)化處理。加強(qiáng)了圖像邊緣的銳化,采用高通濾波器使圖像的高頻分量信息得以通過,提高了邊緣細(xì)節(jié)的清晰度。因此,優(yōu)化的雙線性內(nèi)插算法在圖像的實(shí)時放大中具有更好的效果。
[1]符祥,郭寶龍.圖像插值技術(shù)綜述[J].計算機(jī)工程與設(shè)計,2009,30(1):141 -144.
[2]劉麗君,駱婷.插值法在圖像處理中的應(yīng)用[J].硅谷,2009(9):9-10.
[3]陳寶平,趙俊崗,尹志凌.雙線性插值算法的一種快速實(shí)現(xiàn)方式[J].北京電子科技學(xué)院學(xué)報,2004,12(4):21 -23.
[4][美]岡薩雷斯.?dāng)?shù)字圖像處理[M].阮秋奇,阮宇智,譯.北京:電子工業(yè)出版社,2005:9.
[5]戴玉良.用DSP實(shí)現(xiàn)FIR數(shù)字濾波器[J].臺州學(xué)院學(xué)報,2006,28(6):43 -46.