Multivariate interpolation: Difference between revisions

Content deleted Content added
mNo edit summary
 
(43 intermediate revisions by 29 users not shown)
Line 1:
In{{short [[numerical analysis]], '''multivariate interpolation''' or '''spatial interpolation''' is [[interpolation]]description|Interpolation on functions of more than one variable.}}
 
In [[numerical analysis]], '''multivariate interpolation''' or '''multidimensional interpolation''' is [[interpolation]] on ''[[multivariate function]]s'', having more than one variable or defined over a [[multi-dimensional]] ___domain.<ref>Jetter, Kurt; Buhmann, Martin D.; Haussmann, Werner; Schaback, Robert; and Stöckler, Joachim: ''Topics in Multivariate Approximation and Interpolation'', Elsevier, ISBN 0-444-51844-4 (2006)</ref> A common special case is '''bivariate interpolation''' or '''two-dimensional interpolation''', based on [[bivariate function|two variables]] or [[two-dimensional space|two dimensions]]. When the variates are [[spatial coordinate]]s, it is also known as '''spatial interpolation'''.
The function to be interpolated is known at given points <math>(x_i, y_i, z_i, \dots)</math> and the interpolation problem consist of yielding values at arbitrary points <math>(x,y,z,\dots)</math>.
 
The function to be interpolated is known at given points <math>(x_i, y_i, z_i, \dots)</math> and the interpolation problem consistconsists of yielding values at arbitrary points <math>(x,y,z,\dots)</math>.
 
Multivariate interpolation is particularly important in [[geostatistics]], where it is used to create a [[digital elevation model]] from a set of points on the Earth's surface (for example, spot heights in a [[topographic survey]] or depths in a [[hydrographic survey]]).
 
==Regular grid==
{{comparison_of_1D_and_2D_interpolation.svg|300px|}}
For function values known on a [[regular grid]] (having predetermined, not necessarily uniform, spacing), the following methods are available.
 
===Any dimension===
* [[Nearest-neighbor interpolation]]
* n-linear interpolation (see [[bilinear interpolation|bi-]] and [[trilinear interpolation]] and [[multilinear polynomial]])
* n-cubic interpolation (see [[bicubic interpolation|bi-]] and [[tricubic interpolation]])
* [[Kriging]]
* [[Inverse distance weighting]]
* [[SplineNatural-neighbor interpolation]]
* [[Spline interpolation]]
* [[Radial basis function interpolation]]
 
===2 dimensions===
* [[Barnes interpolation]]
* [[Bilinear interpolation]]
* [[Bicubic interpolation]]
* [[Bézier surface]]
* [[Lanczos resampling]]
* [[Delaunay triangulation]]
* [[Inverse distance weighting]]
* [[Kriging]]
* [[Natural neighbor]]
* [[Spline interpolation]]
 
[[Resampling (bitmap)|Bitmap resampling]] is the application of 2D multivariate interpolation in [[image processing]].
 
Three of the methods applied on the same dataset, from 1625 values located at the black dots. The colours represent the interpolated values.
{{Gallery
<gallery>
|title=
Image:Nearest2DInterpolExample.png|Nearest neighbor
|width=300px
Image:BilinearInterpolExample.png|Bilinear
|File:Interpolation-nearest.svg|Nearest neighbor
Image:BicubicInterpolationExample.png|Bicubic
|File:Interpolation-bilinear.svg|Bilinear
</gallery>
|File:Interpolation-bicubic.svg|Bicubic
}}
 
See also [[Padua points]], for [[polynomial interpolation]] in two variables.
Line 37 ⟶ 47:
 
See also [[Resampling (bitmap)|bitmap resampling]].
ohk, thats fine
 
===Tensor product splines for ''N'' dimensions===
Catmull–Rom splines can be easily generalized to any number of dimensions. The [[cubic Hermite spline]] article will remind you that <math>\mathrm{CINT}_x(f_{-1}, f_0, f_1, f_2) = \mathbf{b}(x) \cdot \left( f_{-1} f_0 f_1 f_2 \right)</math> for some 4-vector <math>\mathbf{b}(x)</math> which is a function of ''x'' alone, where <math>f_j</math> is the value at <math>j</math> of the function to be interpolated.
 
Catmull-Rom splines can be easily generalized to any number of dimensions.
The [[cubic Hermite spline]] article will remind you that <math>\mathrm{CINT}_x(f_{-1}, f_0, f_1, f_2) = \mathbf{b}(x) \cdot \left( f_{-1} f_0 f_1 f_2 \right)</math> for some 4-vector <math>\mathbf{b}(x)</math> which is a function of ''x'' alone, where <math>f_j</math> is the value at <math>j</math> of the function to be interpolated.
Rewrite this approximation as
:<math>
\mathrm{CR}(x) = \sum_{i=-1}^2 f_i b_i(x)
</math>
This formula can be directly generalized to N dimensions:<ref>[httphttps://arxiv.org/abs/0905.3564 Two hierarchies of spline interpolations. Practical algorithms for multivariate higher order splines]</ref>
:<math>
\mathrm{CR}(x_1,\dots,x_N) = \sum_{i_1,\dots,i_N=-1}^2 f_{i_1\dots i_N} \prod_{j=1}^N b_{i_j}(x_j)
</math>
Note that similar generalizations can be made for other types of spline interpolations, including Hermite splines. In regards to efficiency, the general formula can in fact be computed as a composition of successive <math>\mathrm{CINT}</math>-type operations for any type of tensor product splines, as explained in the [[tricubic interpolation]] article. However, the fact remains that if there are <math>n</math> terms in the 1-dimensional <math>\mathrm{CR}</math>-like summation, then there will be <math>n^N</math> terms in the <math>N</math>-dimensional summation.
In regards to efficiency, the general formula can in fact be computed as a composition of successive <math>\mathrm{CINT}</math>-type operations for any type of tensor product splines, as explained in the [[tricubic interpolation]] article.
However, the fact remains that if there are <math>n</math> terms in the 1-dimensional <math>\mathrm{CR}</math>-like summation, then there will be <math>n^N</math> terms in the <math>N</math>-dimensional summation.
 
== Irregular grid (scattered data) ==
Schemes defined for scattered data on an [[irregular grid]] are more general.
They should all work on a regular grid, typically reducing to another known method.
* [[Nearest-neighbor interpolation]]
* [[Triangulated irregular network]]-based [[natural neighbor]]
* [[Triangulated irregular network]]-based [[linear interpolation]] (a type of [[piecewise linear function]])
** n-[[simplex]] (e.g. tetrahedron) interpolation (see [[barycentric coordinate system]])
* [[Inverse distance weighting]]
* [https://surgeweb.mzf.cz/AOSIM/ABOS.htm ABOS - approximation based on smoothing]
* [[Kriging]]
* [[Gradient-enhanced kriging]] (GEK)
* [[Radial basis function]]
* [[Thin plate spline|Thin-plate spline]]
* [[Polyharmonic spline]] (theThe thin-plate- spline is a special case of a polyharmonic spline.)
* [[Radial basis function]] ([[Polyharmonic spline]]s are a special case of radial basis functions with low degree polynomial terms.)
* Least-squares [[spline (mathematics)|spline]]
* [[Natural-neighbour interpolation]]
{{anchor|Gridding}}''Gridding'' is the process of converting irregularly spaced data to a regular grid ([[gridded data]]).
 
==See also==
* [[Smoothing]]
* [[Surface fitting]]
 
==Notes==
Line 72 ⟶ 87:
==External links==
* [http://chichi.lalescu.ro/splines.html Example C++ code for several 1D, 2D and 3D spline interpolations (including Catmull-Rom splines).]
* [httphttps://web.archive.org/web/20060915111500/http://www.ices.utexas.edu/CVC/papers/multidim.pdf Multi-dimensional Hermite Interpolation and Approximation], Prof. Chandrajit Bajaja, [[Purdue University]]
* [https://github.com/DurhamDecLab/ARBInterp Python library containing 3D and 4D spline interpolation methods.]
 
[[Category:Interpolation]]
[[Category:Multivariate interpolation| ]]
[[Category:Interpolation]]