Steven5538

Image Scaling and Rotation

Word count: 365Reading time: 1 min
2014/03/26 Share

實現影像的縮放以及旋轉,主要使用到的演算法有下面三種:

  1. Nearest Neighbor Interpolation
  2. Bilinear Interpolation
  3. Bicubic Interpolation

Nearest Neighbor Interpolation

Nearest Neighbor Interpolation(以下簡稱NN),最簡單快速的縮放演算法,其概念如上圖所示,放大過後透過鄰近的一格來填補色塊,這種方法直覺快速,但很明顯的可以預想得到其所處理過的影像會產生鋸齒。

Bilinear Interpolation

Bilinear Interpolation,作法是四個點求其色塊的線性關係,已此線性關係填補色塊。相對 NN 來說,其處理過的影像結果較為圓滑。下圖左為 用 NN 放大一倍後的結果,右為 Bilinear 放大一倍後的結果。可以看出 NN 的顆粒明顯較多。

Bicubic Interpolation

與 Bilinear 相似,但其取十六個點做弧線,並已此弧線關係填補色塊。由於 Lena 細節不夠,換了一張原圖 3264 * 2448,用 Bicubic 放大一倍,原圖如下。

結果比對圖如下,左為 Bilinear,右為 Bicubic,可以發現 Bicubic 較為銳利,在細節上的呈現較 Bilinear 好。

Image Rotation

這部份直接使用 NN 實作,參考如下公式進行修改即可。

結果如下圖。

Conclusion

就我個人感覺比較,NN 快速,Bilinear 與 Bicubic 並沒有非常大的差距,然而 Bicubic 的演算速度卻比 Bilinear 慢上許多。Bicubic 似乎對於細節較多的圖片能有更好的效果。

CATALOG