Search code examples
pythonalgorithmcomputational-geometrycoordinate-transformation

Estimating a smooth 3D coordinate transform from anchor points


I have 2 volumes in 3D that are distorted versions of each other, and am trying to estimate the distortion function. I know the distortion is continuous and differentiable, but not a simple affine transformation. I also know the magnitude of the distortion of each point is probably not very large. I have some pairs of anchor points that I know correspond between the two coordinate system. Finally, if the estimated transform T is accurate, then the correlation between volume B and T(A) should be high. Does anyone have any suggestions for an algorithm that would allow me to interpolate a function using these anchor points, that would either (approximately) transform volume A to volume B, or equivalently would allow me to estimate the coordinates of a point X from A in coordinate system B?

Thanks in advance.


Solution

  • Radial Basis Functions can be used to deform geometry using a set of control points, and will provide you with a smooth deformation function across the volume. RBFs are commonly used for "morph" effects and the like. You would place your control points at the initial point locations in volume A and then move them to their locations in volume B, then evaluate the deformation at each point to apply the transform.

    RBFs have a lot of applications, so if you are Googling search for something like "radial basis functions 3d deformation" or something similar.