Bicubic Interpolation - Bicubic Convolution Algorithm

Bicubic Convolution Algorithm

Bicubic spline interpolation requires the solution of the linear system described above for each grid cell. An interpolator with similar properties can be obtained by applying a convolution with the following kernel in both dimensions:

W(x) =
\begin{cases} (a+2)|x|^3-(a+3)|x|^2+1 & \text{for } |x| \leq 1 \\ a|x|^3-5a|x|^2+8a|x|-4a & \text{for } 1 < |x| < 2 \\ 0 & \text{otherwise}
\end{cases}

where is usually set to -0.5 or -0.75. Note that and for all nonzero integers .

This approach was proposed by Keys who showed that (which corresponds to cubic Hermite spline) produces the best approximation of the original function.

If we use the matrix notation for the common case, we can express the equation in a more friendly manner:

p(t) =
\tfrac{1}{2}
\begin{bmatrix}
1 & t & t^2 & t^3 \\
\end{bmatrix}
\begin{bmatrix}
0 & 2 & 0 & 0 \\
-1 & 0 & 1 & 0 \\
2 & -5 & 4 & -1 \\
-1 & 3 & -3 & 1 \\
\end{bmatrix}
\begin{bmatrix}
a_{-1} \\
a_0 \\
a_1 \\
a_2 \\
\end{bmatrix}

for between 0 and 1 for one dimension. for two dimensions first applied once in and again in :

Read more about this topic:  Bicubic Interpolation