Talk:Bicubic interpolation

Variables used without being defined
I believe $$t_x$$ and $$t_y$$ are used without being defined. — Preceding unsigned comment added by 76.124.109.27 (talk) 12:36, 13 March 2012 (UTC)

Java code link
At the bottom of the page it links to external code which implements "bicubic interpolation" It doesn't, I have tested this code and the resulting image is clearly bilinear. —Preceding unsigned comment added by Danwalmsley (talk • contribs) 08:04, 17 February 2010 (UTC)

I fixed it and added the link again - Paul Breeuwsma (talk) 16:04, 22 February 2010 (UTC)

Anyone know how to equate the maximum / peak in the data set? —Preceding unsigned comment added by 188.220.216.95 (talk) 17:28, 24 February 2010 (UTC)

Needs more detail
This doesn't explain what the method is, it's pretty much useless, should be stubbed as well.
 * I agree. The 1st section on Computation actually looks like its describing the bicubic spline over a uniform grid, as opposed to other "cubic" variants like the cubic convolution.  --MxBuck (talk) 02:58, 2 March 2017 (UTC)
 * There isn't really one method. "Bicubic" is kind of a loose catchall for 2D interpolators that use 3rd degree polynomials. If you look under the hood of "bicubic" interpolators in various libraries, you'll find a variety of algorithms, though in the image processing world, I have to say bicubic convolution is what it usually turns out to be (ceres, OpenCV, Matlab). I would think cubic B-spline methods should be discussed here. Hermite cubic interpolators are kind of a historical relic, IMO, maybe a good introduction to the idea, but not what people really use when they need really high quality interpolation. 70.181.67.17 (talk) 08:01, 30 June 2021 (UTC)

Needs less ripping-off of sources
The only content in this article is nearly word-for-word from http://www.geovista.psu.edu/sites/geocomp99/Gc99/082/gc_082.htm
 * This section has now been removed from the article. --Berland 10:11, 2 June 2007 (UTC)

Miscategorized
This article doesn't belong under "Analysis". It should be in "Numerical analysis". DavidCBryant 21:34, 21 November 2006 (UTC)
 * There is no stub category for "Numerical analysis", though. I added it to "Computer graphics stubs" as well, although this is not the only application of bicubic interpolation.  The article as it stands is useless anyway, as you have observed. Freederick 23:14, 19 January 2007 (UTC)

Wrong formula
The article says that The bicubic interpolation is calculated as follows: $$a_{00} + a_{10} x + a_{01} y + a_{20} x^2 + a_{11} x y + a_{02} y^2 + a_{21} x^2 y + a_{12} x y^2 + a_{22} x^2 y^2 + a_{30} x^3 + a_{03} y^3 + a_{31} x^3 y + a_{13} x y^3 + a_{32} x^3 y^2 + a_{23} x^2 y^3 + a_{33} x^3 y^3$$ but this is just a general third order function of two variables -- it has nothing to do with bicubic interpolation. Freederick 23:15, 19 January 2007 (UTC)
 * Hopefully fixed now. --Berland 21:20, 21 June 2007 (UTC)

Not the wrong formula
Bicubic interpolation assumes that the grid of data can be locally approximated by some third order (i.e., cubic), two-dimensional polynomial.
 * Wrong, it's bicubic interpolation, not cubic, like bilinear interpolation which isn't linear. The two-dimensional polynomial is 6 order, with powers of x or y up to 3. Engelec (talk) 14:26, 14 December 2007 (UTC)

That function has everything to do with bicubic interpolation (just like the equation for a line relates to linear interpolation). However, the article doesn't really make the connection clear. The article needs additional explanation-- I'll give it my best shot here. Someone can make it professional and put it into the article.

Consider four known data points in a square: $$f(0,0),f(1,0),f(0,1),f(1,1)$$. You want to estimate some arbitrary $$f(x,y)$$ that lies within that square and ensure that the estimates preserve a continuous first derivative. This can be accomplished by assuming the data is generated by the function above. However, that leaves all of the coefficients $$a_{00} - a_{33}$$. These can be calculated by creating a linear system of 16 equations and 16 unknowns. Four of the sixteen equations are simple--we use the four known data points. That's where the first four equations in the article come from (e.g., $$ f(0,1) $$ $$= a_{00} + a_{10}(0) + a_{01}(1) + a_{20}(0)^2 + a_{11}(0)(1) + a_{02}(1)^2 + a_{21}(0)^2(1) + a_{12}(0)(1)^2 + a_{22}(0)^2(1)^2 + a_{30}(0)^3 + a_{03}(1)^3 + a_{31}(0)^3(1) + a_{13}(0)(1)^3 + a_{32}(0)^3(1)^2 + a_{23}(0)^2(1)^3 + a_{33}(0)^3(1)^3$$ $$ = a_{00} + a_{01} + a_{02} + a_{03}$$ ).

The remainder of the equations are trickier because they require knowing the first-order partial derivatives and second-order mixed derivatives of the data at those same four points. If you know them, great. If it's a digital image or digital elevation-map, you may not be privy to those values. That's why you typically also need the 12 values surrounding the original four; so you can use a finite differences method (e.g., central difference: $$f_x(0,0) = \frac{f(1,0)-f(-1,0)}{2}$$).

Once you have the 16 equations, you can solve for the 16 coefficients and then just plug them into the general, two-dimensional, third order polynomial function. After that, you use the function to interpolate between your original four points. An example may be merited in order to give additional context. SwenChef 20:08, 17 July 2007 (UTC)

Perhaps an easier approach to implement
Of course, solving a system of 16 equations can be annoying. In "Image Processing, Analysis, and Machine Vision" (Sonka and Hlavac and Boyle, 1999) pp. 66-68, there's a discussion on using bicubic interpolation for images. I presume that the two approaches can be related, but that's left as an exercise for the reader. It can be seen at http://www.eng.iastate.edu/ee528/sonkamaterial/chapter_4.htm or http://iria.pku.edu.cn/~jiangm/courses/dip/html/node69.html. With this approach, you treat your point of interest as the origin. You then translate the coordinates of the 16 surrounding points into that frame of reference and multiply the value of each data point by the function given on the cited pages evaluated at both the translated x and translated y coordinate values. You sum these 16 products and have your interpolated value. SwenChef 20:32, 17 July 2007 (UTC)


 * The article currently states "Bicubic spline interpolation requires to solve the linear system described above for each grid cell.". This isn't true, of course. If you've solved the system once you can re-use the result for all the other cells because it gives the coefficients for each cell in terms of the function values and derivatives, which are known. Not to mention solving the system is as simple as inverting the corresponding 16x16 matrix. 130.89.228.82 (talk) 23:44, 17 February 2008 (UTC)

"Insufficient context"
The article has undergone some 60-70 edits since the context-tag was added (version of 20 Jan 07). It is time to consider removal of the tag, or proposals on what should be improved/mentioned. --Berland (talk) 17:59, 17 May 2008 (UTC)
 * I was bold and removed the tag. --Berland (talk) 20:07, 11 June 2008 (UTC)

Details missing for bicubic convolution
I find some details missing for the section on bicubic convolution: --Berland (talk) 20:14, 11 June 2008 (UTC)
 * What is $$x$$ in $$W(x)$$?
 * The first section with the system of equations to be solved should cover the result from bicubic convolution, thus there must be a connection between the choice of $$a$$ and how the derivatives are chosen. This should be mentioned here.
 * It refers to the "matrix notation". What is that notation here? What are the $$a_i$$ numbers?

Needs Work
Article needs a lot of work. It is too heavily based on just the outdated article by Keys. Keys (and several others) have shown that the Catmull-Rom spline (not the cubic-Hermite as the article says) is the best in the limited parameterized family of cubic functions. That is simply because it is the only value of the parameter for which the cubic filter achieves C0 and C1 continuity.

Cubic filters that are not exactly interpolating are sometimes better, but this article has limited its scope to "interpolation" instead of "filtering". For example, blending the Catmull-Rom spline with the cubic B-Spline can provide superior image quality in some circumstances (See: "Reconstruction Filters in Computer Graphics" SIGGRAPH 88). DonPMitchell (talk) 18:47, 29 December 2008 (UTC)

Removed 4x4 matrix solution
There was a solution given right above the table of contents that expressed the bicubic coefficients as a product of three 4x4 matrices. I tried to use this and discovered that it does not give the same results as the 16x16 matrix solution above it (which is correct, as far as I can tell). Since there's no citation and it appears incorrect, I have removed it. Fallingmasonry (talk) 21:12, 13 November 2015 (UTC)

The equations is true and can be confirmed by following mathematica code.

Assessment comment
Substituted at 01:48, 5 May 2016 (UTC)

Woah... Lede too excessive
The lede is too excessive. The lede should be moderately short and not get into the smaller details (those belong in the main body of the article). Needs to be adjusted to conform to Wikipedia's lede guidelines. — al-Shimoni  (talk) 20:28, 9 September 2016 (UTC)

Broken Link
I think the link "Application of interpolation to elevation samples" is broken. I couldn't track down the page on psu.edu, but I suspect the page ultimately referred to http://www.geocomputation.org/1999/082/gc_082.htm. Jim Kruse (talk) 18:29, 27 October 2016 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified one external link on Bicubic interpolation. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20051024202307/http://www.geovista.psu.edu/sites/geocomp99/Gc99/082/gc_082.htm to http://www.geovista.psu.edu/sites/geocomp99/Gc99/082/gc_082.htm

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 19:17, 19 July 2017 (UTC)

Introduction claims two things which are the same (?) are 'not to be confused with' each other
The start of the article says "cubic interpolation (not to be confused with cubic spline interpolation, see cubic spline)" with two links to 'Cubic interpolation' and 'Cubic spline'. However these two links direct or redirect to the same page! - i.e. https://en.wikipedia.org/wiki/Cubic_Hermite_spline.

So Wikipedia redirects themselves seem to be 100% confusing on any distinction between 'cubic interpolation' and 'cubic spline'.

Is there actually such a distinction? If not, the sentence needs to be written. If there is one, the links / redirects need to be changed.

I found the same thing confusing. Upon reading of the linked article, Cubic interpolation, I think the author wanted to distinguish between the cases where cubic interpolation is used for a single interval and for a data set.

In the former case, there is only one way to perform the interpolation. But for the latter case, there are several choices of tangents, resulting in different splines. Also, for a single interval, "spline" doesn't make much sense. (I may be wrong though, since I have no expertise in this area and have no other source than the Wikipedia articles.)

I will proceed to edit the Cubic interpolation link to the interval section Cubic interpolation, add a note on the spline case and link it to the data set section Cubic interpolation. I hope this will make it less confusing.

2502project (talk) 02:53, 6 October 2021 (UTC)