<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Dear Luis; first of all I would like to thank your quick reply, I just want to verify something, you know I have tried to implement poinst set to image registration. I would like to use final registration parameters to the my point set,which was selected&nbsp; Fixedpoint set at the beginning of the registration.&nbsp; So, Instead of&nbsp; to apply final registration results to my moving image I&nbsp; would like to apply the&nbsp; "<STRONG>OPPOSITE</STRONG>" final registration parameters&nbsp; to my point set I can save time and it can be implemented quickler.&nbsp; Am I right ?</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Thank you</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Tony<BR><BR></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">----- Original Message ----<BR>From: Luis Ibanez &lt;luis.ibanez@kitware.com&gt;<BR>To: tony hakki &lt;tony2007vtk@yahoo.com&gt;<BR>Cc: insight-users@itk.org<BR>Sent: Friday, March 23, 2007 8:05:38 PM<BR>Subject: Re: [Insight-users] registration results<BR><BR>
<DIV>Hi Tony,<BR><BR>The components of a Versor *ARE NOT* angles.<BR><BR>A versor *IS NOT* a triplet of Euler angles.<BR><BR><BR>Instead, it is equivalent to a Unit Quaternion.<BR><BR><BR>Please refer to the ITK Software Guide for<BR>a description of the concept of Versors.<BR><BR>&nbsp;&nbsp; <A href="http://www.itk.org/ItkSoftwareGuide.pdf" target=_blank>http://www.itk.org/ItkSoftwareGuide.pdf</A><BR><BR><BR>If you have a rotation of T degrees around<BR>an axis defined by a unit vertor x,y,z,<BR><BR>Then the components of the Versor will be<BR>equal to:<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vx = x * sin( T / 2 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vy = y * sin( T / 2 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vz = z * sin( T / 2 )<BR><BR><BR>You may find useful to read also the Tutorials<BR>on Quaternions:<BR><BR><BR><A href="http://www.itk.org/CourseWare/Training/QuaternionsI.pdf"
 target=_blank>http://www.itk.org/CourseWare/Training/QuaternionsI.pdf</A><BR><A href="http://www.itk.org/CourseWare/Training/QuaternionsII.pdf" target=_blank>http://www.itk.org/CourseWare/Training/QuaternionsII.pdf</A><BR><BR><BR>The reason why your image "seems" to translate is probably<BR>that you have not set correctly the center of rotation<BR>of the transformation.&nbsp;&nbsp;A rotation performed around a<BR>center that is far from the field of view of the image,<BR>will 'look' like a translation.<BR><BR>You will find this effect explained in detail in the<BR>ITK Software Guide:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="http://www.itk.org/ItkSoftwareGuide.pdf" target=_blank>http://www.itk.org/ItkSoftwareGuide.pdf</A><BR><BR><BR>in section "6.9.4" "Resample Image Filter",<BR>in pdf-pages 254-275.<BR><BR>Pay particular attention to figuires:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.51 and
 6.52<BR><BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;Regards,<BR><BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Luis<BR><BR><BR>-----------------<BR>tony hakki wrote:<BR>&gt; hello all;<BR>&gt; I have tried to implement point set to image registration;I would like <BR>&gt; to manipulate the results like that:<BR>&gt; Supposing that these are the registation results;<BR>&gt; <BR>&gt; const double versorX = finalParameters[0];<BR>&gt; <BR>&gt; const double versorY = finalParameters[1];<BR>&gt; <BR>&gt; const double versorZ = finalParameters[2];<BR>&gt; <BR>&gt; const double finalTranslationX = finalParameters[3];<BR>&gt; <BR>&gt; const double finalTranslationY = finalParameters[4];<BR>&gt; <BR>&gt; const double finalTranslationZ = finalParameters[5];<BR>&gt; <BR>&gt;&nbsp;&nbsp;<BR>&gt; <BR>&gt;&nbsp;&nbsp;<BR>&gt; <BR>&gt; I would like to manipulate them like that:<BR>&gt; <BR>&gt;&nbsp;&nbsp;<BR>&gt; <BR>&gt; finalParameters[0]=2*vtkMath::Pi()-versorX;<BR>&gt; <BR>&gt;
 finalParameters[1]=2*vtkMath::Pi()-versorY;<BR>&gt; <BR>&gt; finalParameters[2]= 2*vtkMath::Pi()-versorZ;<BR>&gt; <BR>&gt; *finalParameters[3]=finalTranslationX *(-1);*<BR>&gt; <BR>&gt; *finalParameters[4]=finalTranslationY *(-1);*<BR>&gt; <BR>&gt; *finalParameters[5]=finalTranslationZ *(-1);*<BR>&gt; <BR>&gt; ** <BR>&gt; <BR>&gt; ** <BR>&gt; <BR>&gt; *When I manipulate *finalParameters[0], <BR>&gt; finalParameters[1],finalParameters[2]&nbsp;&nbsp;, It doesn't give any error,&nbsp;&nbsp;but <BR>&gt; these parameters are for rotation parameters&nbsp;&nbsp;where as my image <BR>&gt; translate when I change these parameters.*Why it doesn't rotate but <BR>&gt; translates through the x,y,z coordinate system When I manupulate them.*<BR>&gt; <BR>&gt; On the other hand I couldn't manupulate the rest of the parameters <BR>&gt; finalParameters[3],,finalParameters[4],,finalParameters[5], ,it gives <BR>&gt; break or continue error when I run my program. And these are the <BR>&gt;
 translation parameters,aren't they? *Why I couldn't manupulate these <BR>&gt; parameters as I showed above? *<BR>&gt; <BR>&gt;&nbsp;&nbsp;<BR>&gt; <BR>&gt; here is the my translation code:<BR>&gt; <BR>&gt; typedef itk::TranslationTransform&lt;float,3&gt; NTransformType;<BR>&gt; <BR>&gt; NTransformType::Pointer finalTransform = NTransformType::New();<BR>&gt; <BR>&gt; finalTransform-&gt;SetParameters( finalParameters );&nbsp;&nbsp;//this is <BR>&gt; registration result<BR>&gt; <BR>&gt; typedef FMeshType::PointsContainer PointsContainerType;<BR>&gt; <BR>&gt; typedef FMeshType::PointsContainerPointer<BR>&gt; <BR>&gt; PointsContainerPointer;<BR>&gt; <BR>&gt; typedef itk::TransformMeshFilter&lt;<BR>&gt; <BR>&gt; FMeshType,<BR>&gt; <BR>&gt; FMeshType,<BR>&gt; <BR>&gt; NTransformType &gt; FilterType;<BR>&gt; <BR>&gt;&nbsp;&nbsp;<BR>&gt; <BR>&gt; // Create a Filter<BR>&gt; <BR>&gt; FilterType::Pointer filter = FilterType::New();<BR>&gt; <BR>&gt; // Connect the inputs<BR>&gt;
 <BR>&gt; filter-&gt;SetInput( input_mesh );<BR>&gt; <BR>&gt; filter-&gt;SetTransform( finalTransform );<BR>&gt; <BR>&gt; // Execute the filter<BR>&gt; <BR>&gt; filter-&gt;Update();<BR>&gt; <BR>&gt; std::cout &lt;&lt; "Filter: " &lt;&lt; filter;<BR>&gt; <BR>&gt; // Get the Smart Pointer to the Filter Output<BR>&gt; <BR>&gt; FMeshType::Pointer outputMesh = filter-&gt;GetOutput();<BR>&gt; <BR>&gt; std::cout &lt;&lt; "Output Mesh has " &lt;&lt; outputMesh-&gt;GetNumberOfPoints();<BR>&gt; <BR>&gt; std::cout &lt;&lt; " points " &lt;&lt; std::endl;<BR>&gt; <BR>&gt; // Get the the point container<BR>&gt; <BR>&gt; FMeshType::PointsContainerPointer<BR>&gt; <BR>&gt; transformedPoints = outputMesh-&gt;GetPoints();<BR>&gt; <BR>&gt; <BR>&gt; _______________________________________________<BR>&gt; Insight-users mailing list<BR>&gt; Insight-users@itk.org<BR>&gt; <A href="http://www.itk.org/mailman/listinfo/insight-users"
 target=_blank>http://www.itk.org/mailman/listinfo/insight-users</A></DIV></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif"><BR></DIV></div><br>

<hr size=1>No need to miss a message. <a href="http://us.rd.yahoo.com/evt=43910/*http://mobile.yahoo.com/mail
">Get email on-the-go </a><br>with Yahoo! Mail for Mobile. <a href="http://us.rd.yahoo.com/evt=43910/*http://mobile.yahoo.com/mail
">Get started.</a></body></html>