How to map a point onto a warped grid
I understood that you have one-to-one correspondence between the wrapped and unwrapped grid points. And I assume that the deformation is not so extreme that you might have intersecting grid lines (like the image you show).
The strategy is exactly what Jacob suggests: Triangulate the two grids such that there is a one-to-one correspondence between triangles, locate the point to be mapped in the triangulation and then use barycentric coordinates in the corresponding triangle to compute the new point location.
Preprocess
- Generate the Delaunay triangulation of the points of the wrapped grid, let's call it
WT
. - For every triangle in
WT
add a triangle between the corresponding vertices in the unwrapped grid. This gives a triangulationUWT
of the unwrapped points.
Map a point p
into the wrapped grid
- Find the triangle
T(p1,p2,p3)
in theUWT
which containsp
. - Compute the barycentric coordinates
(b1,b2,b3)
ofp
inT(p1,p2,p3)
- Let
Tw(q1,q2,q3)
be the triangle inWT
corresponding toT(p1,p2,p3)
. The new position isb1 * q1 + b2 * q2 + b3 * q3
.
Remarks This gives a deformation function as a linear spline. For smoother behavior one could use the same triangulation but do higher order approximation which would lead to a bit more complicated computation instead of the barycentric coordinates.
The other answers are great. The only thing I'd add is that you might want to take a look at Free form deformation as a way of describing the deformations.
If that's useful, then it's quite possible to fit a deformation grid/lattice to your known pairs, and then you have a very fast method of deforming future points.
Ok, so this sounds like image warping. This is what you should do:
Create a Delaunay triangulation of your unwarped grid and use your knowledge of the correspondences between the warped and unwarped grid to create the triangulation for the warped grid. Now you know the corresponding triangles in each image and since there is no overlapping, you should be able to perform the next step without much difficulty.
Now, to find the corresponding point
A
, in the warped image:- Find the triangle
A
lies in and use the transformation between the triangle in the unwarped grid and the warped grid to figure out the new position.
- Find the triangle
This is explained explicitly in detail here.
Another (much more complicated) method is the Thin Plate Spline (which is also explained in the slides above).