Hello,
I have a question about using the thin-plate spline radial basis functions,
that is, phi(r) = r^2*log(r), for interpolating a surface.

Is it necessary to normalise the coordinates (x,y) so that they lie on a
unit square before doing interpolation?
If so, why?
Thanks
Pat

Quote:> I have a question about using the thin-plate spline radial basis
functions,
> that is, phi(r) = r^2*log(r), for interpolating a surface.

> Is it necessary to normalise the coordinates (x,y) so that they lie on a
> unit square before doing interpolation?
> If so, why?

Normalization is important for numerical robustness.  The method requires
inverting an NxN matrix (N is number of data points), a process that can
have numerical problems when the x and y values are large.  BUT the
thin-plate spline algorithm is not invariant to general affine
transformations.  The function you get by normalizing coordinates first is
not technically the function that minimizes the bending energy integral.
This is not an issue if you are simply trying to find an approximating
function for an arbitrary set of data points without having to triangulate
the (x,y) values.  It may be an issue for applications that depend on the
approximating function to really be the minimizing function (statisticians

The thin-plate spline algorithm is invariant under translations, so
translating the (x,y) by the average of the points is fine.  You can then
apply a *uniform scale* to the data to force the axis-aligned bounding box
of the original data to fit inside the unit square.  But you also want to
scale the sample values f(x,y) by the same uniform scale.  That is, you can
scale (x,y,f) to (c*x,c*y,c*f).

--
Dave Eberly

http://www.magic-software.com

I have a problem of interpolating a 2D motion field. What I know is that the
motion field will be smooth (NO discontinuity) and I have some holes in it
which I need to fill. My data size is rather large: several thousands data
points and several thousand places to be interpolated as well. At the moment
I am trying to treat the horizontal and vertical component as two separate
2D surfaces and interpolate them separately using radial basis functions.
The trouble is: evaluating the coefficients for the RBFs from first
principles (i.e. inverting big matrices) is too time and memory consuming.
Does anyone out there know of a iterative method to solve the problem? I
would like an algorithm which is not too mathematical to understand.
Any help will be appreciated.