<div>Hello Steven,</div>
<div>&nbsp;</div>
<div>the 12 parameter set for affine transform is structure something like this. </div>
<div>&nbsp;</div>
<div>9 parameters represent the rotation + shear + scaling, and last three represent translation. so when taking the inverse, the translation should be just negated which is what u are seeing. In the initial 9 parameters the matrix you have send represents no rotation, no shearing, and isoscaling by a factor of 
0.11256. I am not very sure but if the affine transformation retains a separate factor for scaling, then that can take care of this factor leaving behind&nbsp;a unit matrix whose inverse will be the same.</div>
<div>&nbsp;</div>
<div>Can someone else please confirm this.</div>
<div>&nbsp;</div>
<div>regards,</div>
<div>Ashish.<br><br>&nbsp;</div>
<div><span class="gmail_quote">On 11/15/05, <b class="gmail_sendername">Steven Boyd</b> &lt;<a href="mailto:skboyd@ucalgary.ca">skboyd@ucalgary.ca</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Hello,<br><br>When using AffineTransformation, I am using the ::GetInverse() method,<br>but the calculated inverse is not what I expected.
<br><br>There are 12 parameters set:<br><br>0.11256&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.11256&nbsp;&nbsp;0<br>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.11256<br>2.28336&nbsp;&nbsp; 0.57888&nbsp;&nbsp;12.9605<br><br>And the result after using ::GetInverse() is:<br><br>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0
<br>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>-2.28336 -0.57888 -12.9605<br><br>I think the results should be:<br><br>&nbsp;&nbsp; 8.8842&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;8.8842&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;8.8842<br>
&nbsp;&nbsp;-5.7143&nbsp;&nbsp;-10.8571&nbsp;&nbsp;&nbsp;&nbsp;-110.0<br><br>Have I made an error, or is there a problem with the affine transformation?<br><br>I'm using ITK 2.2.0, and below is a snippet of the code:<br><br>&gt;&nbsp;&nbsp; typedef itk::AffineTransform&lt;double&gt; TransformType;
<br>&gt;&nbsp;&nbsp; typedef TransformType::OutputPointType OutputPointType;<br>&gt;&nbsp;&nbsp; typedef TransformType::InputPointType InputPointType;<br>&gt;&nbsp;&nbsp; typedef TransformType::ParametersType ParametersType;<br>&gt;<br>&gt;&nbsp;&nbsp; TransformType::Pointer transform = TransformType::New();
<br>&gt;&nbsp;&nbsp; int n = transform-&gt;GetNumberOfParameters();<br>&gt;&nbsp;&nbsp; ParametersType parameters(n);<br>&gt;<br>&gt;&nbsp;&nbsp; double* params = CalculateAffineTransform3DParameters(m4x4);<br>&gt;&nbsp;&nbsp; for (int i = 0; i &lt; n; i++) {<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp; parameters[i] = params[i];<br>&gt;&nbsp;&nbsp; }<br>&gt;&nbsp;&nbsp; transform-&gt;SetParameters(parameters);<br>&gt;&nbsp;&nbsp; transform-&gt;GetInverse(transform);<br><br>Thanks for any tips.<br><br>Steve<br>_______________________________________________
<br>Insight-users mailing list<br><a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br><a href="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</a><br></blockquote>
</div><br><br clear="all"><br>-- <br>Ashish Poddar<br>&lt;<a href="http://ahpoddar.bizhat.com">http://ahpoddar.bizhat.com</a>&gt;<br>Its high time we standardize everything!