2014年3月13日 星期四

兩種圖片內插法的比較及圖片旋轉

上圖是"Lena.bmp",其實際上的解析度為173*173。
在這次圖片縮放的實作當中,用了兩種內插法─Nearest Neighbor interpolation和Bilinear interpolation。


Nearest Neighbor interpolation

(來源為維基百科)

這種內插法即是使要縮放的目標圖片,依照比例縮放取得原圖對應點最為鄰近的像素色彩,是一種很簡單的演算法。
以圖片為"Lena.bmp"放大成600*600,並且以nearest neighbor實作的結果




Bilinear interpolation

Bilinear interpolation(來源為維基百科)


而這種內插法則是取其鄰近的四個像素作為依據,將其值依照對應點的距離比例加總起來。
下圖則是由"Lenna.bmp"放大為600*600且使用bilinear時做出來的結果


由這兩種內插法可以發現到:

i) 清晰程度為 Nearest Neighbor interpolation < Bilinear interpolation
ii) 程式執行速度為 Nearest Neighbor interpolation > Bilinear interpolation


圖片旋轉



至於在圖片旋轉的過程中,基本上就是將像素依照旋轉的角度,假設以圖片中心為軸心將各點利用旋轉矩陣計算而成。上圖為"Lenna.bmp"逆時針旋轉60度而得到的結果。
比較值得一提的是,旋轉的計算過程中要以目標的圖片像素去計算要取得原圖的某一個點,而非直接將原圖計算後的結果丟入目標圖片中,否則可能會發生目標圖片有某些像素因為數值離散的關係而沒有被對應到,產生空洞的現象。

沒有留言:

張貼留言