[Insight-users] Euler3D transform, how to set the rotation matrix?

michiel mentink michael.mentink at st-hughs.ox.ac.uk
Thu Mar 25 14:02:14 EDT 2010


Hi Luis,

1) I might try those methods, thank you.
2) and I will also check out that suggestion.

3) I got the angles using IRTK, which is a custom software program. I think
these angles are in degrees,
   whereas ITK uses Radians?
   I've checked the angles and they dfinately are correct.

cheers, Michael

2010/3/18 Luis Ibanez <luis.ibanez at kitware.com>

> Hi Michiel,
>
>
> 1)  Why not to simply call the itk::Euler3DTransfom methods:
>
>             SetAngleX()
>             SetAngleY()
>             SetAngleZ()
>
>                                                  ??
>
>
> 2) If you want to see how the rotation matrix is computed from
>    the rotation angles above, please look at the method
>
>                          ComputeMatrix()
>
>   in lines 202-243 of
>
>                Insight/Code/Common/itkEuler3DTransform.txx
>
>
>
> 3) Please, note that one of the problems with Euler angles
>    is that different implementations apply them in different
>    order, ... and ... the order really matters.
>
>     How did you get the initial three angles ?
>     are they the result of a registration that you did with ITK ?
>
>
>   Please let us know,
>
>
>       Thanks
>
>
>              Luis
>
>
>
> ---------------------------------------------------------------------------------
> 2010/3/9 michiel mentink <michael.mentink at st-hughs.ox.ac.uk>:
> >
> > I have 3 rotation angles, that I got from a registration algorithm.
> > rx = 0.0664    ry = -0.0625    rz = -0.0078
> > Now I would like to apply to rotation.
> >
> > The Euler3D transform needs a rotation matrix. How can that matrix be
> > calculated?
> > This is what I've come up with so far, but it doesn't do anything:
> >
> >
> >   typedef itk::Euler3DTransform<double>TransformType2;
> >   TransformType2::Pointer transform2 =TransformType2::New();
> >
> > // Rotation matrix:
> >
> > //  Rx(θ)                x                y cos theta - z sin theta
> z
> > cos theta + y sin theta
> > //  Ry(θ)     x cos theta + z sin theta                y
> -x
> > sin theta + z cos theta
> > //  Rz(θ)     x cos theta - y sin theta    y cos theta + x sin theta
> >         z
> >
> >   typedef itk::Matrix<double> MatrixType;
> >   MatrixType rotMatrix;
> >
> >   //   column  row
> >   rotMatrix[0][0] = 1;
> >   rotMatrix[0][1] =  cos( atof(argv[7]) ) + sin( atof(argv[7]) );
> >   rotMatrix[0][2] =  cos( atof(argv[9]) ) - sin( atof(argv[9]) );
> >
> >   rotMatrix[1][0] =  cos( atof(argv[7]) ) - sin( atof(argv[7]) );
> >   rotMatrix[1][1] = 1;
> >   rotMatrix[1][2] =  cos( atof(argv[7]) ) + sin( atof(argv[7]) );
> >
> >   rotMatrix[2][0] =  cos( atof(argv[7]) ) + sin( atof(argv[7]) );
> >   rotMatrix[2][1] = -cos( atof(argv[7]) ) + sin( atof(argv[7]) );
> >   rotMatrix[2][2] = 1;
> >
> >   transform->SetMatrix( rotMatrix);
> >
> >
> > I'm not to sure about the '1' entries too, since they should by x, y, or
> > z...
> >
> > cheers,
> >
> > Michael
> >
> > _____________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Kitware offers ITK Training Courses, for more information visit:
> > http://www.kitware.com/products/protraining.html
> >
> > Please keep messages on-topic and check the ITK FAQ at:
> > http://www.itk.org/Wiki/ITK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.itk.org/mailman/listinfo/insight-users
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20100325/63c4e6c9/attachment.htm>


More information about the Insight-users mailing list