[vtkusers] vtkGridTransform: How to compute the inverse ?
David Gobbi
dgobbi at imaging.robarts.ca
Mon Sep 16 10:41:18 EDT 2002
Hi Jan,
If you just want to get the inverse grid transform, then use
transform = vtkGridTransform::New();
< build the transform >
inverseTransform = transform->GetInverse();
The use of Newton's method to invert a system of equations is
described in Numerical Recipes and similar texts. The method
is roughly as follows:
1) make a guess of (x0,y0,z0) i.e. the inverse point
2) pass through transform T to get (x0',y0',z0') i.e. transform of guess
3) find displacements (dx',dy',dz') to the actual point (x',y',z')
4) divide the displacements by the Jacobian matrix calculated at
(x0,y0,z0) to get a first-order approximation of the displacements
(dx,dy,dz) in the inverse coordinate system
5) multiply the displacement (dx,dy,dz) by a factor 'f' where f<1 to
improve stability (see the code & numerical recipes to see how an
optimal f is chosen at each iteration)
6) add (dx,dy,dz) to the initial guess to get the next guess: (x1,y1,z1),
then repeat from step 2
The InverseTransformDerivative() method applies Newton's method as
described above, and returns the inverse point (x,y,z) as well as
the Jacobian matrix calculated at (x,y,z).
And I can't remember why I called the method 'InverseTransformDerivative()'
instead of something more obvious like 'GetInversePointAndJacobian()'.
- David
--
David Gobbi, MSc dgobbi at imaging.robarts.ca
Advanced Imaging Research Group
Robarts Research Institute, University of Western Ontario
On Mon, 16 Sep 2002, Jan Ehrhardt wrote:
> Hi to all,
>
> but this message is mainly to D. Gobbi.
>
> Can you explain me the method
> vtkGridTransform::InverseTransformDerivative() ?
> I see, you use some kind of newton-method but what criteria does you
> minimizing.
> Can you shortly explain the main steps of the algorithm ?
> Please, have pity with the stupid one ;-)
>
> Regards,
> Jan
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
>
More information about the vtkusers
mailing list