數字影象處理中常用的插值方法
在做數字影象處理時,經常會碰到小數象素座標的取值問題,這時就需要依據鄰近象素的值來對該座標進行插值。比如:做地圖投影轉換,對目標影象的一個象素進行座標變換到源影象上對應的點時,變換出來的對應的座標是一個小數,再比如做影象的幾何校正,也會碰到同樣的問題。以下是對常用的三種數字影象插值方法進行介紹。
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區則賦予右下角象素的灰度值。
最鄰近元法計算量較小,但可能會造成插值生成的影象灰度上的不連續,在灰度變化的地方可能出現明顯的鋸齒狀。
2、雙線性內插法
雙線性內插法是利用待求象素四個鄰象素的灰度在兩個方向上作線性內插,如下圖所示:
對於 (i, j+v),f(i, j) 到 f(i, j+1) 的灰度變化為線性關係,則有:
f(i, j+v) = [f(i, j+1) - f(i, j)] * v + f(i, j)
同理對於 (i+1, j+v) 則有:
f(i+1, j+v) = [f(i+1, j+1) - f(i+1, j)] * v + f(i+1, j)
從f(i, j+v) 到 f(i+1, j+v) 的灰度變化也為線性關係,由此可推匯出待求象素灰度的計算式如下:
f(i+u, j+v) = (1-u) * (1-v) * f(i, j) + (1-u) * v * f(i, j+1) + u * (1-v) * f(i+1, j) + u * v * f(i+1, j+1)
雙線性內插法的計算比最鄰近點法複雜,計算量較大,但沒有灰度不連續的缺點,結果基本令人滿意。它具有低通濾波性質,使高頻分量受損,影象輪廓可能會有一點模糊。
3、三次內插法
該方法利用三次多項式S(x)求逼近理論上最佳插值函式sin(x)/x, 其數學表示式為:
待求畫素(x, y)的灰度值由其周圍16個灰度值加權內插得到,如下圖:
待求畫素的灰度計算式如下:
f(x, y) = f(i+u, j+v) = ABC
其中:
三次曲線插值方法計算量較大,但插值後的影象效果最好。