Re: Interpolation w/ cubic convolution kernel - boundary treatment?



On Apr 27, 4:26 pm, Clay <phys...@xxxxxxxxxxxxx> wrote:
On Apr 27, 2:00 am, Markus <iandj...@xxxxxxxxx> wrote:



My problem is not dsp related, but the method is closely related to
methods in dsp, so I am hoping to get some help here.

I am using the symmetric cubic convolution kernel ("Catmull-Rom
splines") to interpolate data over a limited range in a variable x.
For the interpolation I am using typically 10 nodes which are
equidistant in x.
Example: The interpolated function between nodes 4 and 5 is computed
based on the data points at nodes 3,4,5,6
A nice property of the Catmull-Rom splines is that I get a continuous
1st derivative everywhere.

My question is now: how should I treat the ranges near the boundary?
With 10 nodes, how should I interpolate the data between node 9 and
10? So far I am using linear interpolation here - but this is
conceptually ugly (and it's not precise, although the latter is not my
biggest problem since I want a _nice_ solution).
I am especially worried that in my current approach the interpolated
function has no continuous 1st derivative at node 9.

Is there a solution, in which I could use e.g. a non-symmetric
convolution kernel to interpolate between nodes 9 and 10, based on the
nodes 8,9,10 or maybe 7,8,9,10 - in a way that I get a continuous 1st
derivative everywhere?
I have not found any discussion about the boundary-treatment in the
literature (and neither on the Google-wide web). In image processing
sometimes people mirror the image at the boundaries (i.e. they would
introduce a hypothetical 11th node for which the data value is set
equal to the data at the 9th node and then interpolate using the data
points at nodes 8,9,10,11) - but this would not work in my case.

What I really want in the end, is the _kernel_ for the interpolation
at
the boundaries.

Any help is appreciated!
Markus

The common way with natural cubic splines is the requirement that the
2nd derivative == 0 at the knots. But basically you have correctly
noticed that something must give at the endpoints. You need more
constraints than are given. What is important to your interpolated
function? Do you know the slope at the endpoints?

Clay

Thanks for your reply!
Unfortunately there are no constraints on the slope.
For this reason I had proposed to use one more node on the
other side (inside the accessible range).
But I don't know how to use this to construct a kernel (which
would be non-symmetric).

Markus

.



Relevant Pages

  • 2D and 3D spline coefficient computation
    ... I am trying to figure out how to interpolate best in 2D and 3D on ... regular grids using splines. ... different directions, i.e. calculate a spline along the x-axis and then ... not on the pure 2nd derivatives. ...
    (sci.math.num-analysis)
  • interpolation w/ cubic convolution kernel: boundary treatment?
    ... splines") to interpolate data over a limited range in a variable x. ... A nice property of the Catmull-Rom splines is that I get a continuous ...
    (sci.math.num-analysis)
  • Re: cubic convolution interpolation at boundaries?
    ... splines") to interpolate data over a limited range in a variable x. ... If I am using 10 nodes, how should I interpolate the data between node ... then you have Oprecise derivatives everywhere and now can use simple ...
    (sci.math.num-analysis)
  • Re: Interpolation w/ cubic convolution kernel - boundary treatment?
    ... I am using the symmetric cubic convolution kernel ("Catmull-Rom ... splines") to interpolate data over a limited range in a variable x. ... A nice property of the Catmull-Rom splines is that I get a continuous ... sometimes people mirror the image at the boundaries (i.e. they would ...
    (comp.dsp)
  • Re: Interpolation w/ cubic convolution kernel - boundary treatment?
    ... splines") to interpolate data over a limited range in a variable x. ... A nice property of the Catmull-Rom splines is that I get a continuous ... sometimes people mirror the image at the boundaries (i.e. they would ... I was no able to find a kernel for this. ...
    (comp.dsp)

Loading