Interpolating missing points in 3D data-set

2.1k Views Asked by At

Given the following x,y,z points (z is actually a signal strength indicator in dBm):

63  371 -21
142 371 -9
233 374 -18
288 371 -36
310 373 -38
349 374 -39
415 348 -44
507 334 -49
689 337 -56
635 254 -57
422 284 -42
380 278 -39
281 280 -39
214 299 -34
146 285 -30
81  302 -39
76  246 -39
80  214 -44
137 200 -44
64  134 -48
73  87  -48
200 101 -46
230 202 -44
246 105 -53
285 109 -53
278 191 -50
334 87  -54
395 189 -56
513 208 -58
510 99  -61
553 101 -62
593 100 -65
634 101 -64
679 102 -68
731 196 -70

How would I go about interpolating the missing z values for the remaining points, assuming they cover an area that is 800x400 units? (The area is of course arbitrary, but for this data-set it should suffice).

I realize that this question is not a simple as it first seems. My goal is to end up with a numerical representation of the entire space (ideally a 2D array holding the Z values, in C#, for those who are interested) however I'm not even sure how to fit a suitable surface to these points. Once complete, the 2D array should hold a predicted signal strength at every x,y point. A single, "best fit" plane will not suffice, as the point of this is to generate a signal strength heat map with usable values at each point, based on measurements at various points on the floor plan. In other words, the attenuation from various walls/furniture/etc. must be taken into account.

Cheers

1

There are 1 best solutions below

3
On BEST ANSWER

One way to do this would be to construct a Delaunay triangulation for the 2D point cloud, extruding this triangulation to the 3D values. Each triangle has a plane equation which can be used to find the rest of the $z$ values for "new" points $x,y$ in the corresponding triangle.

Note the equation for the plane defined by three points is given by: $$\begin{vmatrix} x - x_1 & y - y_1 & z - z_1 \\ x_2 - x_1 & y_2 - y_1 & z_2 - z_1 \\ x_3 - x_1 & y_3 - y_1 & z_3 - z_1 \end{vmatrix} = 0$$