I have a problem, which should have a relatively simple solution via built-in Matlab functions (or perhaps Image Processing Toolbox), however a solution has eluded me. I hope someone here can help out.
I have two surfaces defined by X, Y, Z vectors, i.e., I know the z values at a set of x and y points. The x, y grid is rectangular but NOT bounded by a rectangle - in fact it's a regular grid inside a circle.
I have a second surface, similarly constructed but it is sparser, so if the surface one is on a 2 unit spacing, surface 2 is more like 20 or 40 units. The first surface has ~10k grid points while the second surface has 25-100. The actual x,y points of the second surface may or may not be common with the first surface. (if solution requires them to be I can make it happen).
What I want to do is to rigidly translate the first surface (x1, y1, z1) onto the second (x2, y2, z2), such that when I am done, surface one should 'coincide' in space with surface 2. Basically, I am 'anchoring' the densely defined surface 1 onto sparsely defined surface 2.
I am not sure if the above description of the problem is clear but perhaps I can illustrate the problem this way: 1) Imagine one a well defined surface, i.e., many points in the x,y plane : s1 = (x1, y1, z1). 2) Now one puts this surface on a boat and you observe it from the shore. As the boat rocks with the waves, the surface above moves with it, rigidly. 3) One then measure a few points on the boat's deck to capture how the boat is moving s2 = (x2, y2, z2) 4) One then maps the surface s1 onto s2 to obtain a updated representation of s1 on the boat. By the way, x1, y1 ranges are larger than x2, y2.
I think this is like a 3D Affine transform, solving the A = M * B equation, except in 3D, where M is the transform. M is unknown. Normally, one could do a left divide: M = A \ B except that the left divide requires equal number of x,y,z points in A and B.