Bicubic
Bicubic 介紹
放大圖像某點的像素值涉及其映射到原始圖像一點的臨近16個像素點。
在橫、豎兩個方向分别采用多項式插值三次函數
1.像素點
插值像素點與原圖像的關系:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPBJma5ITW1w2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL3ITN0EjNzYTM2EDMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
2.插值函數
插值函數是對于理論上最優插值函數 s i n ( x ) / x sin(x)/x sin(x)/x的近似。
函數如下,一般取a = -0.5
W ( x ) = { ( a + 2 ) ∣ x ∣ 3 − ( a + 3 ) ∣ x ∣ 2 + 1 ∣ x ∣ ≤ 1 a ∣ x ∣ 3 − 5 ∣ x ∣ 2 + 8 a ∣ x ∣ − 4 a 1 < ∣ x ∣ < 2 0 o t h e r s W(x)=\begin{cases} (a+2)|x|^3-(a+3)|x|^2+1 & |x|\leq 1\\ a|x|^3-5|x|^2+8a|x|-4a & 1<|x|<2\\ 0 & others \end{cases} W(x)=⎩⎪⎨⎪⎧(a+2)∣x∣3−(a+3)∣x∣2+1a∣x∣3−5∣x∣2+8a∣x∣−4a0∣x∣≤11<∣x∣<2others
3.像素值計算
對于每個像素點像素值的計算:
B ( X , Y ) = ∑ n = − 1 2 ∑ m = − 1 2 f ( n + j , m + i ) × W ( u − m ) × W ( v − n ) B(X,Y) = \sum_{n=-1}^{2} \sum_{m=-1}^{2}f(n+j,m+i)\times W(u-m)\times W(v-n) B(X,Y)=n=−1∑2m=−1∑2f(n+j,m+i)×W(u−m)×W(v−n)
矩陣計算方式如下:
A = [ W ( u + 1 ) W ( u ) W ( u − 1 ) W ( u − 2 ) ] C = [ W ( v + 1 ) W ( v ) W ( v − 1 ) W ( v − 2 ) ] B = [ f ( j − 1 , i − 1 ) f ( j − 1 , i ) f ( j − 1 , i + 1 ) f ( j − 1 , i + 2 ) f ( j , i − 1 ) f ( j , i ) f ( j , i + 1 ) f ( j , i + 2 ) f ( j + 1 , i − 1 ) f ( j + 1 , i ) f ( j + 1 , i + 1 ) f ( j + 1 , i + 2 ) f ( j + 2 , i − 1 ) f ( j + 2 , i ) f ( j + 2 , i + 1 ) f ( j + 2 , i + 2 ) ] f ( j + v , i + u ) = C B A T \begin{aligned} &A = \left[ \begin{matrix} W(u+1) & W(u) & W(u-1) & W(u-2)\end{matrix}\right] \\ &C = \left[ \begin{matrix} W(v+1) & W(v) & W(v-1) & W(v-2)\end{matrix}\right] \\ &B =\left[ \begin{matrix} f(j-1,i-1) & f(j-1,i) & f(j-1,i+1) & f(j-1,i+2) \\ f(j,i-1) & f(j,i) & f(j,i+1) & f(j,i+2) \\ f(j+1,i-1) & f(j+1,i) & f(j+1,i+1) & f(j+1,i+2) \\ f(j+2,i-1) & f(j+2,i) & f(j+2,i+1) & f(j+2,i+2) \\ \end{matrix}\right] \\ &f(j+v,i+u) = CBA^T \end{aligned} A=[W(u+1)W(u)W(u−1)W(u−2)]C=[W(v+1)W(v)W(v−1)W(v−2)]B=⎣⎢⎢⎡f(j−1,i−1)f(j,i−1)f(j+1,i−1)f(j+2,i−1)f(j−1,i)f(j,i)f(j+1,i)f(j+2,i)f(j−1,i+1)f(j,i+1)f(j+1,i+1)f(j+2,i+1)f(j−1,i+2)f(j,i+2)f(j+1,i+2)f(j+2,i+2)⎦⎥⎥⎤f(j+v,i+u)=CBAT
bicubic python代碼