Content deleted Content added
mNo edit summary |
|||
(43 intermediate revisions by 29 users not shown) | |||
Line 1:
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
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]]▼
* [[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]]
▲* [[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
{{Gallery
|title=
|width=300px
|File:Interpolation-nearest.svg|Nearest neighbor
|File:Interpolation-bilinear.svg|Bilinear
|File:Interpolation-bicubic.svg|Bicubic
}}
See also [[Padua points]], for [[polynomial interpolation]] in two variables.
Line 37 ⟶ 47:
See also [[Resampling (bitmap)|bitmap resampling]].
===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.▼
▲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>[
:<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.
==
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]] (
* [[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).]
* [
* [https://github.com/DurhamDecLab/ARBInterp Python library containing 3D and 4D spline interpolation methods.]
[[Category:Interpolation]]▼
[[Category:Multivariate interpolation| ]]
▲[[Category:Interpolation]]
|