Talk:Bicubic interpolation
From Wikipedia, the free encyclopedia
Contents |
[edit] Needs more detail
This doesn't explain what the method is, it's pretty much useless, should be stubbed as well.
[edit] 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)
[edit] 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)
[edit] Wrong formula
The article says that
The bicubic interpolation is calculated as follows:
a00 + a10x + a01y + a20x2 + a11xy + a02y2 + a21x2y + a12xy2 + a22x2y2 + a30x3 + a03y3 + a31x3y + a13xy3 + a32x3y2 + a23x2y3 + a33x3y3
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)
[edit] 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 a00 − a33. 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) = a00 + a10(0) + a01(1) + a20(0)2 + a11(0)(1) + a02(1)2 + a21(0)2(1) + a12(0)(1)2 + a22(0)2(1)2 + a30(0)3 + a03(1)3 + a31(0)3(1) + a13(0)(1)3 + a32(0)3(1)2 + a23(0)2(1)3 + a33(0)3(1)3 = a00 + a01 + a02 + a03 ).
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: ).
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)
[edit] 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)
[edit] "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)
[edit] Details missing for bicubic convolution
I find some details missing for the section on bicubic convolution:
- 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 ai numbers?