[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