張雄輝,鄭力新,周凱汀
(華僑大學 信息科學與工程學院,福建 廈門361021)
目前計算機技術已經發展到了一定的水平,伴隨其產生的數字圖像處理技術的應用也越來越廣泛,如航空和航天技術、生物醫學工程、通信工程、工業和工程、軍事公安以及文化藝術等方面。在工業和工程中的數字、智能化生產中,對數字圖像的質量要求越來越高,有些直接用攝像頭、照相機采集到的圖像數據并不能直接使用,其中最常見的一種處理步驟就是要對已采集到的數字圖像進行放大、提高其分辨率的處理。圖像插值技術就是運用軟件技術來提高圖像分辨率的有效方法,其相對于一些硬件技術具有更節約、更有發展前景等優勢。
自20世紀60年代提出數字圖像插值技術之后,已出現了很多種插值技術,如最近鄰插值算法、雙線性插值算法和雙立方插值算法等[2-4]。其中,最近鄰插值算法是最簡單的一種插值算法,它也稱作零階插值,它所求的插值點灰度值就等于其映射到的位置最近像素點的灰度值,但是其插值后圖像常常帶有鋸齒形的邊。雙線性插值算法也稱作一階插值算法,其插值點的像素值是計算它附近的2×2區域的4個鄰近像素值的加權平均而得來的。相對于最近鄰插值,雙線性插值可以很好地抑制鋸齒的出現,它可以得到一個具有連續性和連通性的光滑映射,但是圖像也會因此變得模糊。雙立方插值可以改進圖像模糊這一點,但是其運算量大,得不到實時應用。根據以上各算法的優缺點,本文提出了一種較快速的簡單插值算法,試驗證明,該算法既可以抑制邊緣鋸齒,又可以提高圖像的質量。
本文先通過較快速、簡便的算法找出圖像的大概邊緣程度,再根據此邊緣程度信息來劃分區域后作插值算法。在插值過程中采用兩步來插值,即先對行列之和為偶數的點進行插值,再對行列之和為奇數的點進行插值。對于兩步中的不同類插值點分別采用不同的方法來進行插值。
由于一般圖像除了少數地方存在菱角外,其他大部分都是緩慢變化的區域,因此可以對待插值的圖像先進行區域的劃分,在此基礎上插值后的圖像就能抑制鋸齒邊緣的現象。本文采用Sobel算子和類Sobel算子來檢測圖像的邊界程度,對于豎直和水平方向的邊界程度可以直接用Sobel算子來檢測,如式(1)所示;對于45°和135°方向的邊界程度就用類似于Sobel算子檢測[1],如式(2)所示。

根據檢測到的邊界程度將圖像進行區域劃分[5],相同的區域其灰度差異很小,在插值的時候根據這一特點進行插值就可以得到比較好的效果。通過算子檢測后的邊緣程度來劃分圖像區域情況有圖1所示的幾種情況:A與B、C在豎直方向為邊界;B與C在水平方向為邊界;D與E在有一斜邊界。劃分后再進行插值后的圖像如圖2所示。

圖1 待插值圖像

圖2 插值后的圖像
首先對行列和為偶數的點進行插值,如圖2中的I1、I2、I3、I4和I5這一類的點,其周圍四角為原圖像的像素點。然后對行列之和為奇數的點進行插值,如圖2中J1、J2、J3類的點,其在水平或者豎直方向相鄰的像素點屬于原圖像。
對于I1這一類的插值點,其周圍4個原圖像的像素點都屬于同一區域A,設這4個原像素點的灰度值分別為f(A1)、f(A2)、f(A3)和f(A4),則可以定義插值點I1的灰度值為:

式(3)就是根據同一區域像素點灰度值相差不大的特性來取周圍點灰度值的平均值為插值點的灰度值,其方法等同于雙線性插值方法。
對于I2和I3這類的插值點,其周圍4個原圖像像素點屬于不同的區域,其中I2是屬于兩個豎直區域之間的插值點,I3是屬于兩個水平的區域之間的插值點。為了使圖像邊緣平滑,可以采用方向加權平均法的線性插值方法。設周圍4個原圖像的像素點灰度值分別為f(B1)、f(B2)、f(C1)和f(C2),則插值點的灰度值為:

對于I4和I5這樣的插值點,此類插值點位于斜對角的區域邊緣上。其周圍的4個原圖像的像素點中有3個屬于同一區域,另外1個點屬于另一區域。如圖2中的插值點I4和I5在45°對角線上,其在45°方向灰度值的變化遠沒有在135°方向的變化大,則可以直接忽略在135°方向變化影響。所以對于此類插值點的灰度值可以定義為:

式(5)可以直接認為是一階線性插值,其著重考慮對插值點相關性大的點的作用,而忽略那些不重要的點的灰度值。對于135°方向上的插值點也可以等同于45°方向插值點的算法。
對于行列之和為奇數的像素點插值,如圖2中的J1、J2、J3類的點,其在水平或者豎直方向相鄰的點中有兩個點是原圖像的像素點,而對應的豎直或水平方向相鄰的兩個點為以上插值完成后的I類插值點。對于J1和J3類插值點,其相鄰的兩個原圖像像素點都屬于同一區域,則可以直接用一階線性插值定義:

如J2一類的插值點,其相鄰的兩個原圖像的像素點屬于不同一區域C和B,則可以把已經插值好的點I2和I3也作為影響系數。由于其相鄰的4個點可能都在不同區域,且灰度值相差很大,本文直接用4個點中最大灰度值減去最小灰度值,再除以另外兩點灰度值之和,得到的值作為一個閾值i。如果i>1,則說明插值點的灰度值受最大灰度值點的影響較小;如果i<1,則說明其受最小灰度值點的影響較小,比較后作線性插值。計算式為:

在實驗中,用支持本文的項目“數控切割、沖孔系統的設計”中要用到的印花灰度圖像為測試圖像,使用的原圖像大小為137×154,放大2×2倍。用Visual Studio 2010環境編寫算法,分別用最近鄰法和雙線性法與本文算法的結果作對比,效果如圖3所示。
從圖3可以看出,最近鄰插值法放大處理后的圖像在邊緣出現了明顯的鋸齒;雙線性插值法處理圖像雖然沒有鋸齒,但是變得模糊不清了;而用本文方法處理后的圖像很好地抑制了邊緣鋸齒現象,同時,也沒有過于模糊的現象,在算法復雜度上也沒有雙立方插值那樣麻煩,是一種較方便快速的插值方法。

圖3 實驗結果
本文根據傳統算法的各自優缺點提出一種適合的、綜合的快速插值方法,該算法在計算量上近似于雙線性插值,用分區插值來抑制邊界鋸齒現象的產生,根據各區域像素相關性插值來抑制模糊的效果的產生,實現簡單,較適合實際的應用。
[1]BOVIK A.Handbook of image and video processing(2en ed)[M].Beijing∶Publishing House of Electronics Industry,2006.
[2]AKYAMA M T.Clustering approach algorithm for image interpolation[R].Proceedings of the 27th Annual ACM Symposium on Applied Computing,2012.
[3]符祥,郭寶龍.圖像插值技術綜述[J].計算機工程與設計,2009,30(1):128-144.
[4]黨向盈.基于傳統插值的最佳插值算法分析[J].黑龍江科技信息,2008,11(31)∶4.
[5]STORN R,PRICE K.Minamizing the real functions of the ICEC’96 contest by differential evolution[C].Proceedings of IEEE International Conference on Evolutionary Computation,Nagoya,1996∶842-844.