縮放演算法 (Scaling Algorithm)

https://cg2010studio.wordpress.com/2012/02/19/%E7%B8%AE%E6%94%BE%E6%BC%94%E7%AE%97%E6%B3%95-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的採樣效果有限,故最基本的三種採樣方法已夠用!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值