關於圖像重采樣插值算法


重新取樣將在您縮放圖片時更改圖像數據的數量。當縮減像素取樣(減少像素的數量)時,將從圖像中刪除一些信息。當向上重新取樣(增加像素的數量或增加像素取樣)時,將添加新的像素。可以指定插值算法來確定如何添加或刪除像素。

 

1. 最近相鄰插值算法/最近鄰法
最近相鄰插值算法(Nearest Neighbour Interpolation)一種速度快但精度低的圖像像素模擬方法。該法針對於二維圖像 “取待采樣點周圍4個相鄰像素點中距離最近的 1個鄰點的灰度值作為該點的灰度值”如圖(1)。該方法用於包含未消除鋸齒邊緣的插圖,以保留硬邊緣並生成較小的文件。但是,縮放圖片時,缺少的像素通過直接使用與之最接近的原有像素的顏色生成,也就是說照搬旁邊的像素,這樣做的結果是產生了明顯可見的鋸齒。

最近相鄰插值算法是最簡單的一種插值算法,這種方法是當圖片放大時,缺少的像素通過直接使用與之最接近的原有像素的顏色生成,也就是說照搬旁邊的像素。當圖片擴大時,要增加X點處的像素,由於X點與AB這兩個有效像素中的B點最接近,因此X點會直接照搬B點的像素,從而使到X點生成的效果與B點一樣。雖然這種算法簡單,因此處理的速度很快,但結果通常會產生明顯可見的鋸齒,效果往往不佳。

最近相鄰插值算法的優點是計算量很小,算法也簡單,因此運算速度較快。但它僅使用離待測采樣點最近的像素的灰度值作為該采樣點的灰度值,而沒考慮其他相鄰像素點的影響,因而重新采樣后灰度值有明顯的不連續性,圖像質量損失較大,會產生明顯的馬賽克和鋸齒現象。

 

圖(1)  圖像縮放中的插值和重采樣

2. 兩次線性插值算法 /雙線性內插法
兩次線性插值算法(Bilinear Interpolation)是一種通過平均周圍像素顏色值來添加像素的方法。該方法可生成中等品質的圖像。

兩次線性插值算法輸出的圖像的每個像素都是原圖中四個像素(2×2)運算的結果,由於它是從原圖四個像素中運算的,因此這種算法很大程度上消除了鋸齒現象,而且效果也比較好。

兩次線性插值算法是一種較好的材質影像插補的處理方式,會先找出最接近像素的四個圖素,然后在它們之間作差補效果,最后產生的結果才會被貼到像素的位置上,這樣不會看到馬賽克現象。這種處理方式較適用於有一定景深的靜態影像,不過無法提供最佳品質。

兩次線性插值算法效果要好於最近相鄰插值算法,只是計算量稍大一些,算法復雜些,程序運行時間也稍長些,但縮放后圖像質量高,基本克服了最近相鄰插值算法灰度值不連續的特點,因為它考慮了待測采樣點周圍四個直接鄰點對該采樣點的相關性影響。但是,此方法僅考慮待測樣點周圍四個直接鄰點灰度值的影響, 而未考慮到各鄰點間灰度值變化率的影響, 因此具有低通濾波器的性質, 從而導致縮放后圖像的高頻分量受到損失, 圖像邊緣在一定程度上變得較為模糊

用此方法縮放后的圖像與原圖像相比,仍然存在由於計算模型考慮不周而產生的圖像質量退化與精度降低的問題。

 

這種方法是“利用周圍4個鄰點的灰度值在兩個方向上作線性內插以得到待采樣點的灰度值”。即根據待采樣點與相鄰點的距離確定相應的權值計算出待采樣點的灰度值。雙線性內插的示意圖如圖2所示,其中X 、Y坐標表示像素的位置,f(*,*)表示像素的灰度值。其數學表達式為:

f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)    (2)

取(x,y)點周圍的4鄰點,在y方向(或x方向)內插兩次,再在x方向(或y方向)內插一次,得到(x,y)點的值f(x,y)。
設4個鄰點分別為(i,j),(i,j+1),(i+1,j),(i+1,j+1),i代表左上角為原點的行數,j代表列數。設α=x-i,β=y-j,過(x,y)作直線與x軸平行,與4鄰點組成的邊相交於點(i,y)和點(i+1,y)。先在y方向內插,計算交點的值f(i,y)和f(i+1,y)。f(i,y)即由f(i,j+1)與f(i,j)內插計算而來。
 
 

3. 兩次立方插值算法 /立方卷積法
兩次立方插值算法(Bicubic Interpolation)是兩次線性插值算法的改進算法,“不僅考慮到四個直接鄰點灰度值的影響,還考慮到各鄰點間灰度值變化率的影響”,利用了待采樣點周圍更大鄰域內像素的灰度值作三次插值。此法利用了如圖3所示的三次多項式S(w)。它輸出圖像的每個像素都是原圖16個像素(4×4)運算的結果。該算法效果較好,運算速度也不慢。

兩次立方插值算法計算量最大,算法也是最為復雜的。在幾何運算中,兩次線性插值算法的平滑作用可能會使圖像的細節產生退化,在進行放大處理時,這種影響更為明顯。在其他應用中,兩次線性插值算法的斜率不連續性會產生不希望的結果。兩次立方插值算法不僅考慮到周圍四個直接相鄰像素點灰度值的影響,還考慮到它們灰度值變化率的影響。因此克服了前兩種方法的不足之處,能夠產生比兩次線性插值更為平滑的邊緣,計算精度很高,處理后的圖像像質損失最少,效果是最佳的。

S(w)的數學表達式為:

式中,w為自變量,S(w)為三次多項式的值。

如圖4所示的是三次多項式進行內插,計算時用周圍的16個鄰點的灰度值按下式進行內插,則該像素的灰度值f(x,y)為

f(x,y)=A·B·C       (3)

若令k=0,則式(3)的立方卷積就退化為雙線性內插法。因此,可以把用三次多項式插值的立方卷積法看成由兩部分組成,其中(1—|u|)代表直接鄰點間灰度值的變化率對待采樣點的影響,而K則代表鄰點間灰度值的變化率對待采樣點的影響。與雙線性內插法相比,立方卷積法不僅考慮了直接鄰點的灰度值還考慮了零點見灰度值變化率的影響,因此后者所求得的待采樣點灰度值更接近原(采樣)值。

此方法用進一步增大計算量來換取待采樣點精度的進一步提高,其效果是三種方法里最好的,但也是三種方法中計算量最大的。

三種算法比較:

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM