2

I have a list of scattered 3D points similar to the one below:

3D scatter

Using MATLAB, I want to interpolate further points from the surface that those original points correspond to, in order to obtain a more complete scatter. Note that there are no particular slices defined on this scattered data. That is, the z values of the point cloud are not discrete, so it's not possible to interpolate slice by slice.

I think that the ideal way to achieve this would be to somehow obtain the smooth closed surface which best matches the scattered data, and then sample it. But I have found no straightforward way to achieve this.

Filipe Aleixo
  • 3,924
  • 3
  • 41
  • 74
  • Probably your best go is to get bicubic surfaces (or any other surface that is ensured to use all the points) and then interpolate. This is not an easy task, definetly not one that can be solved in a stackoverflow post.... – Ander Biguri Sep 09 '15 at 12:58
  • 2
    how "smooth" should the surface be? is a [convex hull](http://mathworks.com/help/matlab/ref/convhull.html) enough for your purpose? – m.s. Sep 09 '15 at 13:18
  • 1
    Maybe an iterative nearest neighbor(s) based interpolation might give you what you want? – Falimond Sep 10 '15 at 03:41

1 Answers1

1

The scatterinterpolant class could be a simple option.

Use scatteredInterpolant to perform interpolation on a 2-D or 3-D Scattered Data set. For example, you can pass a set of (x,y) points and values, v, to scatteredInterpolant, and it returns a surface of the form v = F(x, y). This surface always passes through the sample values at the point locations. You can evaluate this surface at any query point, (xq,yq), to produce an interpolated value, vq.

http://au.mathworks.com/help/matlab/math/interpolating-scattered-data.html

Scattered data consists of a set of points X and corresponding values V, where the points have no structure or order between their relative locations. There are various approaches to interpolating scattered data. One widely used approach uses a Delaunay triangulation of the points.

gregswiss
  • 1,456
  • 9
  • 20