線性插值(雙線性內插法)
已知兩個點(x1, y1)、(x2, y2),求它們中間橫座標為x的點的y值。則可以利用如下公式進行插值計算。其中a和(1-a)為x距離x1和x2的距離佔(x2-x1)的比例。
y = a*y1 + (1-a)*y2
線性插值的在二維影象上的計算
現在假設im(m, n)為原影象中第m行第n列的畫素,其周圍的幾個畫素為im(m+1, n)、im(m, n+1)、im(m+1, n+1)。
若把這幾個畫素的中心連線可以得到這樣一個正方形。
在影象變換的過程中,變換後的圖片中的畫素點的值可能需要原圖的畫素進行插值求出畫素的值,如果變化後的圖象所需的值對應在原圖中四個畫素圍成的正方形中間,則如下圖所示,P點為需要求出值的畫素點,則通過四個已知的畫素值可以插值求出P點的畫素值。 其中,a、(1-a)、b、(1-b)為P點距離邊緣的距離。總的思路就是分兩次做插值計算,先用插值算出P1和P2點的畫素值在用這兩點求出P點的畫素值。
求出P1和P2的公式如下
P1 = b*im(m, n) + (1-b)*im(m+1, n)
P2 = b*im(m, n+1) + (1-b)im(m+1, n+1)
求出P的公式如下
P = aP1 + (1-a)*P2
= a*[bim(m, n) + (1-b)im(m+1, n)] + (1-a)[bim(m, n+1) + (1-b)*im(m+1, n+1)]
= abim(m, n) + a*(1-b)im(m+1,n) + (1-a)bim(m, n+1) + (1-a)(1-b)*im(m+1, n+1)
最近鄰插值
這是最簡單的一種插值方法,不需要計算,在待求象素的四鄰象素中,將距離待求象素最近的鄰象素灰度賦給待求象素。設i+u, j+v(i, j為正整數, u, v為大於零小於1的小數,下同)為待求象素座標,則待求象素灰度的值 f(i+u, j+v) 如下圖所示:
如果(i+u, j+v)落在A區,即u<0.5, v<0.5,則將左上角象素的灰度值賦給待求象素,同理,落在B區則賦予右上角的象素灰度值,落在C區則賦予左下角象素的灰度值,落在D區則賦予右下角象素的灰度值。最鄰近元法計算量較小,但可能會造成插值生成的影象灰度上的不連續,在灰度變化的地方可能出現明顯的鋸齒狀。
三次插值(三次內插法)
三次插值用瞭如下的三次多項式來逼近理論上的最佳插值函式sin(x)/x, 待求畫素(x, y)的灰度值由其周圍16個灰度值加權內插得到,如下圖: 待求畫素的灰度計算式如下:f(x, y) = f(i+u, j+v) = ABC