縮放演算法(Scaling Algorithm) | bicubic原理
縮放演算法(ScalingAlgorithm)[1]2012年02月19日時常在處理影像的人很常用到的一個功能就是縮放(Scaling),過去不太瞭解原理的我總覺得這技術相當直覺,大概是因為都在使用現成的軟體,才會讓我以為這技術沒什麼了不起!但事實上沒研究過就不知道它的原理,軟體中一鍵搞定放大和縮小,眼睛敏銳的人就會發覺,由不同軟體縮放所得到的結果不太一樣,這就是我這篇想要講的內容。現在我們想知道?這一個像素要怎麼決定顏色,最基本的演算法有三種:NearestNeighbor、Bilinear、Bicubic。在這裡,我們以放大為例子,這裡用最簡單的放大兩倍...
縮放演算法 (Scaling Algorithm)[1]2012 年 02 月 19 日
時常在處理影像的人很常用到的一個功能就是縮放 (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分,但事實就是前者比較容易達到!藉此瞭解採用像素的多寡確實有助於影像品質,...