最臨近 雙線性 三次卷積插值演算法比較

2021-06-19 20:40:14 字數 2253 閱讀 3295

【我只是想把最近鄰這個弄過來╮(╯-╰)╭ 】

插值演算法對於縮放比例較小的情況是完全可以接受的,令人信服的。一般的,縮小0.5倍以上或放大3.0倍以下,對任何影象都是可以接受的。常用的插值方法有:最近鄰插值法,雙線性插值法,三次卷積插值法

。        最近鄰插值法又稱零階插值,該方法取距離輸出影象上的畫素點對映到輸入影象上的位置最近的輸入畫素的顏色值(或灰度值)作為輸出影象上畫素點的顏色值(或灰度值)。如圖1所示,最近鄰插值法直接計算輸出畫素對映到輸入影象座標系下的點u和近鄰四點(n1,n2,n3,n4)之間的距離,取距離u最近的畫素點的顏色值(或灰度值)賦給u。

g(x',y')=f(int(x十0.5),int(y+0.5))     -------------------(1)             

公式(1)為最近鄰插值的具體計算公式。其中g(x',y')為輸出影象中座標為(x',y')的畫素點的顏色值(或灰度值),f(x,y)為輸入影象中座標為(x,y)的畫素點的顏色值(或灰度值),(x,y)為輸出影象上的座標(x',y')對映到輸入影象座標系下的座標。int(x)為取整運算。

雙線性插值法又稱一階插值,利用輸入影象中與輸出影象畫素點對映位置最鄰近的4個畫素點的顏色值(或灰度值)計算輸出影象中畫素點的顏色值(或灰度值)。如圖2所示

圖2中,假設輸出影象上的乙個畫素點g(x',y')其座標為(x',y'),它對映到輸入影象中的點u其座標為(x,y)。n1,n2,n3,n4為與點u最鄰近的四個點,其座標分別為(i,j),(i+1,j),(i,j+1),(i+1,j+1),顏色值(或灰度值)分別為f(i,j),f(i+1,j),f(i,j+1),f(i+1,j+1)。則雙線性插值的計算公式為公式(2),其中u=(x-i),v=(y-j)。

g(x',y')=(1-u)(1-v)f(i,j) + u(1-v)f(i+1,j) + (1-u)vf(i,j+1) + uvf(i+1,j+1)  ---------------(2)

為了得到更精確的(x',y')的顏色值(或灰度值)g(x',y'),就不僅需要考慮與(x',y')點最鄰近的四個點對它的影響,還要考慮到該點周圍16個相鄰點的顏色值(或灰度值)對它的影響。如圖3所示。

由連續訊號取樣定理可知,若對取樣值用插值函式s(x)=sin(πx)/(πx)插值,則可以準確地恢復原函式,也就是說可以準確地得到取樣點間任意點的值"三次卷積插值法實質上就是利用乙個三次多項式來近似理論上最佳插值函式s(x),如公式(3)。

目的畫素值f(i+u,j+v)可由如下插值公式得到:

f(i+u,j+v) = [a] * [b] * [c]

其中:[a]=[ s(u + 1) s(u + 0) s(u - 1) s(u - 2) ]

┏     f(i-1, j-1)  f(i-1, j+0)  f(i-1, j+1)  f(i-1, j+2)   ┓

[b]=┃     f(i+0, j-1) f(i+0, j+0) f(i+0, j+1) f(i+0, j+2)  ┃

┃     f(i+1, j-1) f(i+1, j+0) f(i+1, j+1) f(i+1, j+2)  ┃

┗     f(i+2, j-1) f(i+2, j+0) f(i+2, j+1) f(i+2, j+2)  ┛

┏   s(v + 1)  ┓

[c]=┃   s(v + 0)  ┃

┃   s(v - 1)   ┃

┗   s(v - 2)   ┛

最鄰近插值(近鄰取樣法)、雙線性內插值、三次卷積法等插值演算法對於旋轉變換、錯切變換、一般線性變換 和 非線性變換 都適用。

不同的插值方法,具有不同的特點和優缺點"最鄰近插值法計算簡單,工作量小,但處理後的影象邊緣容易產生鋸齒效應造成影象的不連續;三次卷積插值法帶有邊緣增強的效果,能夠較好的保持影象的細微結構,但計算量很大;雙線性插值法克服了最鄰近法不連續的缺點,計算較三次卷積法簡單,但邊緣受到平滑作用出現輪廓模糊現象。

js 雙線性插值 雙三次插值法 實現

雙三次插值法 js實現 在網頁中利用canvas進行繪圖時,遇到乙個問題,原始的資料解析度很小,而要放大到整個網頁,所以需要把資料進行插值放大。學習了雙線性插值和三次內插法插值,兩種方式實現效果不同,都用js 實現了一下,下面給大家分享一下 雙線性插值即在x和y兩個方向上,對資料各進行一次線性插值。...

數值分析 雙線性插值(三)

雙線性插值其函式其實不是線性的,函式類似於f x,y a0 a1x a2y a3xy。也可以表示為 ax b cy d 從這種表示我們就可以看出來是兩個線性函式的乘積,由向量的叉積我們知道,得到的結果是他們的法向量。通過函式我就可以看出來,我們想要得到的插值點是位於任意一 x,y 位置上的第三維的值...

講的最明白的雙線性插值

雙線性插值作為opencv中預設使用的影象縮放演算法,其效果和速度都是不錯的。並且效果也比較穩定,計算複雜度並不算太高。我看了很多網上的演算法,自己也沒看太懂,下面是從網上找的雙線性插值 演算法的講解。影象的雙線性插值放大演算法中,目標影象中新創造的象素值,是由源影象位置在它附近的2 2區域4個鄰近...