[Insight-users] Euler3DTransform,
Rotation Matrix & Initial Parameters - Continued
Julien Jomier
jjomier at cs.unc.edu
Thu Jul 15 16:29:28 EDT 2004
Hi Neilson,
I think it's because your rotation matrix is not orthogonal. You can verify
this by putting a try/catch around the SetRotationMatrix().
SetRotationMatrix() is throwing an exception if the matrix is not
orthogonal.
hope this helps,
Julien
> -----Original Message-----
> From: insight-users-bounces at itk.org
> [mailto:insight-users-bounces at itk.org] On Behalf Of N.E.
> Mackenzie Mackay
> Sent: Thursday, July 15, 2004 4:21 PM
> To: Luis Ibanez
> Cc: insight-users at itk.org
> Subject: Re: [Insight-users] Euler3DTransform,Rotation Matrix
> & Initial Parameters - Continued
>
>
> Hey Luis,
>
> Thanks for the help.
>
> I tried implementing the code that you sent. It
> compiles and builds
> fine but am having some difficulty at runtime. It seems to
> be crashing
> when I "SetRotationMatrix". I am not sure why. Here is a
> snapshot of
> my code:
>
> TransformType::Pointer transform = TransformType::New();
>
> TransformType::OffsetType initialTranslation =
> transform->GetOffset() ;
>
> initialTranslation[0] = 22.1413;
> initialTranslation[1] = 162.527;
> initialTranslation[2] = 49.913;
>
> transform->SetOffset(initialTranslation);
>
> typedef itk::Matrix<double,3,3> MatrixtType ;
> MatrixtType initialRotation;
>
> initialRotation[0][0] = -0.016292;
> initialRotation[0][1] = 0.098948;
> initialRotation[0][2] = 0.0;
> initialRotation[1][0] =
> 0.00418400;initialRotation[1][1] = 0.007931;
> initialRotation[1][2] = 0.0;
> initialRotation[2][0] = -0.095128; initialRotation[2][1] =
> -0.008306;initialRotation[2][2] = 0.0;
>
> transform2->SetRotationMatrix(initialRotation);//
> crashes on this line
> transform2->SetOffset(initialTranslation);
>
> TransformType::ParametersType initialParameters =
> transform->GetParameters() ;
>
> registration->SetInitialTransformParameters(initialParameters);
>
> Thanks for the help,
> Neilson
>
> On Jul 14, 2004, at 1:21 PM, Luis Ibanez wrote:
>
> >
> > Hi Neilson,
> >
> > The class Euler3DTransform has a method for converting
> > a 3X3 rotation matrix into the 3 rotaion angles.
> > Note that from your 4x4 matrix, only the upper left
> > 3x3 submatrix contains information about rotations.
> >
> > http://www.itk.org/Insight/Doxygen/html/
> > classitk_1_1Euler3DTransform.html
> >
> > it is the method
> >
> > ComputeAnglesFromMatrix()
> >
> > This is a protected method because you don't really need
> > to use it. But if you are curious about the implementation
> > you may want to take a look at the .txx file.
> >
> >
> > Note also that you don't need to do this angle computation
> > since you can initialize the transform with the 3X3 rotation
> > matrix and a translation, then call GetParamters() on the
> > transform, and finally pass that array of parameters to the
> > ImageRegistrationMethod.
> >
> >
> > The code will look like:
> >
> >
> > MatrixType rotation = Extract3by3MatrixFromYours();
> > OffsetType translat = Extract3VectorFromYours();
> >
> > euler3DTransform->SetRotationMatrix( rotation );
> > euler3DTransform->SetOffset( translat );
> >
> > TransformType::ParametersType parameters =
> > euler3DTransform->GetParameters();
> >
> >
> > registrationMethod->SetInitialParameters( parameters );
> >
> >
> >
> >
> >
> > Please let us know if you have further questions
> >
> >
> >
> > Thanks,
> >
> >
> >
> > Luis
> >
> >
> >
> > -------------------------------
> > N.E. Mackenzie Mackay wrote:
> >
> >> I am trying to initialize Euler3DTransform in order to perform a
> >> rigid registration. I have a rotation matrix that I wish
> to use to
> >> initialize the transformation. After reading
> >> http://public.kitware.com/pipermail/insight-users/2003-November/
> >> 005506.html it looks like this is impossible, the only way to
> >> initialize the transformation is to set angles and translation
> >> explicitly.
> >> If this is the case I was wondering if anyone knew a way
> to extract
> >> the 3 angles from a 4x4 homogenous matrix?
> >> Thanks
> >> Neilson
> >> _______________________________________________
> >> Insight-users mailing list
> >> Insight-users at itk.org
> >> http://www.itk.org/mailman/listinfo/insight-users
> >
> >
> >
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
More information about the Insight-users
mailing list