Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Bicubic interpolation
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==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: <math display="block">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} </math> where <math>a</math> is usually set to β0.5 or β0.75. Note that <math>W(0)=1</math> and <math>W(n)=0</math> for all nonzero integers <math>n</math>. This approach was proposed by Keys, who showed that <math>a=-0.5</math> produces third-order convergence with respect to the sampling interval of the original function.<ref name=Keys>{{cite journal | author = R. Keys | year = 1981 | title = Cubic convolution interpolation for digital image processing | journal = IEEE Transactions on Acoustics, Speech, and Signal Processing | doi = 10.1109/TASSP.1981.1163711 | volume = 29 | pages = 1153β1160 | issue = 6 | bibcode = 1981ITASS..29.1153K | citeseerx = 10.1.1.320.776 }}</ref> If we use the matrix notation for the common case <math>a = -0.5</math>, we can express the equation in a more friendly manner: <math display="block">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} f_{-1} \\ f_0 \\ f_1 \\ f_2 \end{bmatrix} </math> for <math>t</math> between 0 and 1 for one dimension. Note that for 1-dimensional cubic convolution interpolation 4 sample points are required. For each inquiry two samples are located on its left and two samples on the right. These points are indexed from β1 to 2 in this text. The distance from the point indexed with 0 to the inquiry point is denoted by <math>t</math> here. For two dimensions first applied once in <math>x</math> and again in <math>y</math>: <math display="block">\begin{align} b_{-1}&= p(t_x, f_{(-1,-1)}, f_{(0,-1)}, f_{(1,-1)}, f_{(2,-1)}), \\[1ex] b_{0} &= p(t_x, f_{(-1,0)}, f_{(0,0)}, f_{(1,0)}, f_{(2,0)}), \\[1ex] b_{1} &= p(t_x, f_{(-1,1)}, f_{(0,1)}, f_{(1,1)}, f_{(2,1)}), \\[1ex] b_{2} &= p(t_x, f_{(-1,2)}, f_{(0,2)}, f_{(1,2)}, f_{(2,2)}), \end{align}</math> <math display="block">p(x,y) = p(t_y, b_{-1}, b_{0}, b_{1}, b_{2}).</math>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)