引用:http://www.cnblogs.com/okaimee/archive/2010/08/18/1802585.html
摘 要:插值演算法在映像縮放處理中是一項基本且重要的問題。插值演算法有多種,最常用的有最近鄰插值、雙線性插值以及立方卷積插值。本文對三種插值演算法進行簡單分析並對它們的處理結果加以比較,最後總結了三種演算法各自的優缺點。 關鍵詞:影像處理;最近鄰插值;雙線性插值;立方卷積插值
1 引言
映像幾何變換包括平移、轉置、鏡像和縮放等。其中前三種操作變換中,輸出映像的每一個像素點在輸入映像中都有一個具體的像素點與之對應。但是,在縮放操作中,輸出映像像素點座標有可能對應於輸入映像上幾個像素點之間的位置,這個時候就需要通過灰階插值處理來計算出該輸出點的灰階值[1]。映像插值是映像超分辨處理的重要環節,不同的插值演算法有不同的精度,插值演算法的好壞也直接影響著映像的失真程度。最常用的插值演算法有三種:
最近鄰插值、雙線性插值、立方卷積插值,其中使用立方卷積插值達到的效果是最佳的。
2 幾種插值演算法原理分析
插值演算法所應用的領域較多,對映像進行縮放處理是比較典型的應用,由於映像像素的灰階值是離散的, 因此一般的處理方法是對原來在整數點座標上的像素值進行插值產生連續的曲面, 然後在插值曲面上重新採樣以獲得縮放映像像素的灰階值。縮放處理從輸出映像出發,採用逆向映射方法,即在輸出映像中找到與之對應的輸入映像中的某個或某幾個像素,採用這種方法能夠保證輸出映像中的每個像素都有一個確定值,否則,如果從輸入映像出發來推算輸出映像,輸出映像的像素點可能出現無灰階值的情況。因為,對映像進行縮放處理時輸出映像像素和輸入映像之間可能不再存在著一一對應關係。下面分別對三種演算法予以介紹。
2.1 最近鄰插值演算法最簡單的插值法是最近鄰插值法,也叫零階插值法[2]。即選擇離它所映射到的位置最近的輸入像素的灰階值為插值結果。對二維映像,是取待測樣點周圍4 個相鄰像素點中距離最近1 個相鄰點的灰階值作為待測樣點的像素值。若幾何變換後輸出映像上座標為(x′,y′)的對應位置為(m,n),則示意圖如下所示:
2.2 雙線性插值演算法雙線性插值又叫一階插值法[3],它要經過三次插值才能獲得最終結果,是對最近鄰插值法的一種改進,先對兩水平方向進行一階線性插值,然後再在垂直方向上進行一階線性插值。
2.3 立方卷積插值演算法立方卷積插值又叫雙立方插值[2],是對雙線性插值的改進,是一種較為複雜的插值方式,它不僅考慮到周圍四個直接相鄰像素點灰階值的影響,還考慮到它們灰階值變動率的影響。
此法利用待採樣點附近16 個像素點的灰階值作三次插值進行計算,還用到如圖3 所示的三次多項式 S( w)。
首先確定 16 個鄰點座標,設其排成的矩陣為[2]:
方卷積法就退化成雙線性插值法。由此看來,立方卷積可看成兩部分組成,其中( 1 - | m| )代表直接鄰點的灰階值對待採樣點的影響, 而l 則代表鄰點間灰階值的變動率對待採樣點的影響。與雙線性插值法相比, 立方卷積法不僅考慮了直接鄰點的灰階值對待採樣點的影響,還考慮了鄰點間灰階值變動率的影響, 因此後者所求得的待採樣點灰階值更為精確。
3 三種插值演算法處理結果及分析
通過採用三種插值演算法對映像進行縮放處理操作,可以直觀比較它們處理後的效果。以下是對128*128 像素的灰階映像進行放大2 倍處理得到256*256 尺寸的映像。
3.1 縮放操作效果圖(a)128*128 源圖 (b)最近鄰插值放大圖(c)雙線性插值放大圖 (d ) 立方卷積插值放大圖圖 4 效果圖3.2 結果分析從三種插值演算法處理映像後的對比結果可知:最近鄰插值法效果最差,有明顯的鋸齒狀,且細節部分很不清晰。雙線性插值效果其次,鋸齒難以察覺,但是映像的邊緣有輕微的模糊現象。立方卷積插值則是三種插值法中效果最佳的,它能克服前兩插值法的缺點,產生比較清晰的映像邊緣,計算精度較高。
4 三種插值演算法優缺點總結
最近鄰插值法的優點是計算量很小,演算法也簡單,因此運算速度較快。但它僅使用離待測採樣點最近的像素的灰階值作為該採樣點的灰階值,而沒考慮其他相鄰像素點的影響,因而重新採樣後灰階值有明顯的不連續性,映像品質損失較大,會產生明顯的馬賽克和鋸齒現象。
雙線性插值法效果要好於最近鄰插值,只是計算量稍大一些,演算法複雜些,程式已耗用時間也稍長些,但縮放後映像品質高,基本克服了最近鄰插值灰階值不連續的特點,因為它考慮了待測採樣點周圍四個直接鄰點對該採樣點的相關性影響。但是,此方法僅考慮待測樣點周圍四個直接鄰點灰階值的影響, 而未考慮到各鄰點間灰階值變動率的影響, 因此具有低通濾波器的性質, 從而導致縮放後映像的高頻分量受到損失, 映像邊緣在一定程度上變得較為模糊。用此方法縮放後的輸出映像與輸入映像相比, 仍然存在由於插值函數設計考慮不周而產生的映像品質受損與計算精度不高的問題。
立方卷積插值計算量最大,演算法也是最為複雜的。在幾何運算中,雙線性插補法的平滑作用可能會使映像的細節產生退化,在進行放大處理時,這種影響更為明顯。在其他應用中,雙線性插值的斜率不連續性會產生不希望的結果。立方卷積插值不僅考慮到周圍四個直接相鄰像素點灰階值的影響,還考慮到它們灰階值變動率的影響。因此克服了前兩種方法的不足之處,能夠產生比雙線性插值更為平滑的邊緣,計算精度很高,處理後的映像像質損失最少,效果是最佳的。
總之,在進行映像縮放處理時,應根據實際情況對三種演算法做出選擇,既要考慮時間方面的可行性,又要對變換後映像品質進行考慮,這樣才能達到較為理想的結果。
參考文獻
[1]張宏林. 精通Visual C++數位影像處理典型演算法及實現[M].北京:人民郵電出版社,2008.
[2]謝鳳英,趙丹培. Visual C++數位影像處理[M]. 北京:清華大學出版社,2008.
[3]何斌,馬天予,王運堅等. Visual C++數位影像處理[M].北京:人民郵電出版,2001