Just My Life & My Work

縮放演算法 (Scaling Algorithm)

時常在處理影像的人很常用到的一個功能就是縮放 (Scaling),過去不太瞭解原理的我總覺得這技術相當直覺,大概是因為都在使用現成的軟體,才會讓我以為這技術沒什麼了不起!但事實上沒研究過就不知道它的原理,軟體中一鍵搞定放大和縮小,眼睛敏銳的人就會發覺,由不同軟體縮放所得到的結果不太一樣,這就是我這篇想要講的內容。

現在我們想知道這一個像素要怎麼決定顏色,最基本的演算法有三種:Nearest Neighbor、Bilinear、Bicubic

在這裡,我們以放大為例子,這裡用最簡單的放大兩倍,喔~不過其實釋放大7/4倍。

第一個也是最簡單的一個方法是Nearest Neighbor,又稱為zero order interpolation,使用一個最近的相鄰像素。

第二個方法是Bilinear,又稱為first order interpolation,使用四個最近的相鄰像素。

第三個方法是Bicubic,又稱為second order interpolation,使用十六個最近的相鄰像素。

個別所得到的結果可以檢視以下這一張圖:(可點圖放大)右下ground truth是原始圖。

有人會問說,那有沒有第四種方法,答案是肯定的!既然有zero、first、second,那是不是有third呢?我們確實可以推廣,根據上頭三種發法的規律,最近相鄰像素邊長是前一order的2倍,於是乎third order interpolation,使用六十四個最近的相鄰像素。

接著有人就會問,推廣使用越多個最近的相鄰像素,是不是代表品質會越來越好?理論上是如此,然而卻有其極限,舉個例子來說,考試你從70分進步到90分容易,還是從90分進步到100分容易,我想答案一定很清楚是前者。幅度看似後者只要10分而前者需要20分,但事實就是前者比較容易達到!藉此瞭解採用像素的多寡確實有助於影像品質,然而卻有其瓶頸存在。

為了讓影像處理速度夠快,一般影像處理軟體只備有Nearest Neighbor、Bilinear、Bicubic這三種方法,如此來達到影像處理迅速影像品質佳的要求。

最後我使用一個影像處理軟體「光影魔術手 nEO iMAGING」,它是完全免費的軟體。在「縮放」這個功能它提供使用者自由選擇縮放方法,可以看下圖:

就如同它所建議的,Nearest出來的結果有鋸齒,Bicubic是比較推薦的作法。

原始圖128x128

nearest 256x256

bilinear 256x256

bicubic 256x256

可以發現nearest確實有鋸齒狀而bilinearbicubic兩者效果差不多,更高order的採樣效果有限,故最基本的三種採樣方法已夠用!

Comments on: "縮放演算法 (Scaling Algorithm)" (4)

  1. 謝謝分享~~

  2. "我想答案一定很清楚是後者"這邊說反了吧?

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: