線性插值和雙線性插值

2021-07-15 18:26:43 字數 1397 閱讀 2005

線性插值

如果你只處理分離的資料、想知道分離點之間的某些值,需要用到某種型別的插值。這種情況如圖5-17座標所示。對某些分離的(整數) x值,你知道y值。當x=2,你知道y=10,x=3時y=30。但你不知道x=2.7時的y值。

使用線性插值,你通過連線兩點的線段找到x=2.7對應的y值,如圖1所示。使用線性插值,通過連線兩點的線段找到x=2.7對應的y值。線性插值總是將x表達成0和1之間,0對應x的最小值(你知道對應的y值,本例中為2),1對應x的最大值(本例中為3) 。本例中你想找到x=2.7時的y值,結果是0.7,意思是「2和3至之間的70%。」

已知的紅色資料點與待插值得到的綠色點

假如我們想得到未知函式

f在點p= (

x,y) 的值,假設我們已知函式

f在q11 = (

x1,y1)、

q12 = (

x1,y2),

q21 = (

x2,y1) 以及

q22 = (

x2,y2) 四個點的值。

首先在x方向進行線性插值,得到r1和r2,然後在

y方向進行線性插值,得到p.

這樣就得到所要的結果

f(x,

y).其中紅色點q11,q12,q21,q22為已知的4個畫素點.

第一步:x方向的線性插值,插入藍色 第二步 :做完x方向的插值後再做y方向的

點r1和r2插值 ,由r1與r2計算p點.

x方向上

y方向上插入綠色點p.

線性插值的結果與插值的順序無關。首先進行

y方向的插值,然後進行

x方向的插值,所得到的結果是一樣的。但雙線性插值插值方法這種方法並不是線性的,首先進行

y方向的插值,然後進行

x方向的插值,與首先進行 x方向的插值,然後進行 y方向的插值,所得到的r1與r2是不一樣的。

如果選擇乙個座標系統使得 的四個已知點座標分別為 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),那麼插值公式就可以化簡為

f(x,y)=f(0,0)(1-x)(1-y)+f(0,1)(1-x)y+f(1,1)xy+f(1,0)x(1-y)

本人注:

可以提一下 三樣條插值和貝塞爾曲線的區別

這兩種可以作為插值演算法,更常用的做法是 做離散點的平滑處理。而三樣條插值方法是 對序列中三個點計算出 乙個三次表示式,通過這個三次表示式畫出曲線,可以知道,這個曲線是經過這三個點的

貝塞爾曲線則是只經過起始點,不需要經過中間的控制點的。它的效果會更平滑,刻畫了資料的發展趨勢。

雙線性插值

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

雙線性插值

轉至 雙線性插值,這個名字咋一聽很高大上的樣紙,再在維基百科上一查 見文末,我去,一堆的公式嚇死人 像俺這種半文盲,看到公式腦子就懵的型別,真心給跪。雖然看著好複雜,但仔細一看道理再簡單不過了,所以還是自己梳理一下好。雙線性插值,顧名思義就是兩個方向的線性插值加起來 這解釋過於簡單粗暴,哈哈 所以只...

雙線性插值

雙線性插值就是在x軸和y軸兩個方向上進行插入操作。假設a b兩個點,要在ab中間插入乙個點c c座標在ab連線上 就直接讓c的值落在ab的連線上即可。例如a點座標 0,0 值為3,b點座標 0,2 值為5,要對座標 0,1 的點c進行插值,就讓c落在ab上,值就為4。如果c點不在ab線上,如圖所示 ...