Photoshop 中有時要提高或降低圖像解析度,會遇到兩次立方,這種演算法是怎麼回事?


想要把100x100的圖片縮小到50x50,怎麼辦?
這個數學很好做,只要把每四個像素取平均數就好了。

但是,如果想要把100x100的圖片縮小到99x99,問題就來了。。。
像素是整數,這除不盡啊這。。。

下面這個函數有6個點,如何用5個點表示呢?

比較簡單的方法被稱作線性插值法。

線性插值法有一種理解方法,就是把所有相鄰點兩兩連接。

本來6個點有5段線段,要縮減成5個點,就要把這5段線段縮減到4段。
也就是把原有5段橫坐標軸4等分,再在兩兩連接的點上取數值。

(放大同理,把把原有5段橫坐標軸6等分,7等分)

兩次線性插值,就是把這種一維向量的方法運用在二維矩陣上。
原理同一維的基本一樣。

(每個正方形四個角形成一個曲面,在曲面上取數值。)

而所謂立方插值,就是比線性差值稍微高級一點。。。
不是把臨近點兩兩相連,而是通過每4個點來估算出一個平滑的曲線。

其他同線性插值法類似
立方差值計算量比線性差值要大,花費的時間更多,但是縮放後的圖片邊緣會更加圓滑。

這是wikipedia上的兩次立方插值的示意圖。。。
顏色和右側legend數值相對應(紅色表示6,綠色3.5,藍色表示1,等等)

(原圖只有黑點標註的4x4個像素點,其他區域的顏色為兩次立方的計算數值)
(註:上圖中一個黑點代表一個像素,而不是四個黑點形成的正方形代表一個像素。實際圖片中,黑點都是代表正方形像素,兩兩緊貼相鄰的。)

原圖4x4(3等分x3等分),如果想要放大到5x5,只要重新sample 4等分x4等分:
相應的選取(x)標記處的數值,便可以達到放大圖片的效果。

順便,如果你只是想用PS,那麼這個演算法對你一點用也沒有。
忘掉吧= =


把 bicubic (雙三次插值)翻譯為兩次立方,土坯公司國內分號管翻譯的人應該拖出去槍斃五分鐘。


補充一下@野合菌 的回答,無論是photoshop還是3Dmax或者AE,有些時候需要一些模糊(虛化)的圖用來作為背景,或者用來作為環境光(漫反射),或者用來做光線追蹤算圖。

單純的高斯模糊,疊加模糊,各種虛化總是會有一些僵硬的感覺,需要做很多調整。這個時候,把一張正常大小的圖片,調整解析度和大小到很低,勾選上兩次立方選項,再把他調整回原大小,你就得到了一張過渡特別自然的背景圖(動態圖)。

需要我上圖嗎?

這個例子僅作為軟體思路提供,我最常用的還是Photoshop5.02版本,啟動和使用快到飛起來。別人發的很多圖我都打不開,哭~

原圖,僅僅是舉例,圖片網路上隨意搜的,高清的圖效果可能更好可能更差,看用途。

圖像大小,把圖變成很小的,下面選擇兩次立方,點確定。

好了,你現在得到的是一張非常非常小的圖片,再次使用圖像大小命令,把大小改到原來。

ok,你得到了一張均勻的模糊背景,呃,飛機哪裡去了。

我用的是ps7的簡化綠色版,這個版本有一點問題(綠色版,不出問題才怪),所以,忽略四角的豎線好了。我個人通常的做法是選一個很大的,然後做背景的時候只用其中一部分。抱歉耽擱了這麼久。


降低解析度叫採樣。採樣頻率小於一定數值會發生失真。

增大解析度一般是插值。有不少插值辦法。最簡單的有平滑濾波。還有B樣條等。插值可以看作是圖像平滑。每個插值點的數值受到它鄰居的影響。


突然想起了剛學的bootstrap 不知道可不可以,首先擬合函數,再多次按照函數去樣本就可以了


補充一句:提高解析度是一種錯誤的做法,或者說增加像素是一種錯誤的做法。
減像素是可以的,加像素絕對不允許。除非有像上面 @城年那種特殊的需求。


兩次立方簡單來說就是通過上下左右,左上右上左下右下8個方向的顏色取平均值,這種方法速度最慢,但是效果最好,適合比較複雜的圖像。相反,其他選項比如說鄰近,就是取左右兩邊像素顏色的平均值,這種方法速度最快,適合比較簡單的圖形,同理,兩次線性就是取上下左右像素顏色的平均值。


  • http://zh.wikipedia.org/wiki/%E5%8F%8C%E4%B8%89%E6%AC%A1%E6%8F%92%E5%80%BC
  • http://en.wikipedia.org/wiki/Bicubic_interpolation

好好用搜索引擎。


推薦閱讀:

為什麼1080P不屬於2K?
NHK是怎樣把原來不那麼清晰的視頻轉成高清的?

TAG:AdobePhotoshop | 解析度 | 圖像處理 |