Hi, <div><br></div><div>I found a setting like following (for the code i posted earlier)</div><div>--------------------</div><div><div>transform-&gt;SetScale(0.92632);</div><div>transform-&gt;SetAngle(0.15095);</div><div>TransformType::TranslationType translation;</div>

<div>translation[0] = 28.29828;</div><div>translation[1] = 94.07266;</div><div>transform-&gt;SetTranslation(translation);</div><div>----------------------</div></div><div><br></div><div>which causes the metric produce value 0. </div>
<div><br></div><div>here is two images which were be used to test with</div>
<div><span style="font-family:Arial;font-size:10px;border-collapse:collapse;color:rgb(102, 102, 102);white-space:pre"><a href="http://picasaweb.google.com/lh/photo/qq5iA-PTGX6o3ZtslBX5HQ?authkey=Gv1sRgCPfxyPeBwITjkwE&amp;feat=directlink" target="_blank">fixed.bmp</a> (<a href="http://picasaweb.google.com/lh/photo/qq5iA-PTGX6o3ZtslBX5HQ?authkey=Gv1sRgCPfxyPeBwITjkwE&amp;feat=directlink" target="_blank">http://picasaweb.google.com/lh/photo/qq5iA-PTGX6o3ZtslBX5HQ?authkey=Gv1sRgCPfxyPeBwITjkwE&amp;feat=directlink</a>)</span></div>

<div><span style="font-family:Arial;font-size:10px;border-collapse:collapse;color:rgb(102, 102, 102);white-space:pre"><a href="http://picasaweb.google.com/phamsyquybk/DropBox?authkey=Gv1sRgCPfxyPeBwITjkwE#5388585730742727138" target="_blank">moving.bmp</a> (<a href="http://picasaweb.google.com/phamsyquybk/DropBox?authkey=Gv1sRgCPfxyPeBwITjkwE#5388585730742727138" target="_blank">http://picasaweb.google.com/phamsyquybk/DropBox?authkey=Gv1sRgCPfxyPeBwITjkwE#5388585730742727138</a>)</span></div>

<div><span style="font-family:Arial;font-size:10px;border-collapse:collapse;color:rgb(102, 102, 102);white-space:pre"><span style="border-collapse:separate;color:rgb(0, 0, 0);white-space:normal;font-size:small;font-family:arial"><br>

</span></span></div><div><span style="font-family:Arial;font-size:10px;border-collapse:collapse;color:rgb(102, 102, 102);white-space:pre"><span style="border-collapse:separate;color:rgb(0, 0, 0);white-space:normal;font-size:small;font-family:arial"> You can see two images are not identical so value 0 is incorrect. </span></span></div>

<div>Can someone confirm that? </div><div>It may be a bug of &#39;itkMeanSquaresImageToImageMetric&#39;</div><div><br></div><div>Thanks,</div><div>Quyps.</div><div><br></div><div><br><div class="gmail_quote">2009/10/4 Quy Pham Sy <span dir="ltr">&lt;<a href="mailto:phamsyquybk@gmail.com" target="_blank">phamsyquybk@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div><div class="gmail_quote"><div>Hi, </div><div><div><font face="arial, sans-serif"><span style="border-collapse:collapse"><span style="border-collapse:separate;font-family:arial"><div>

<br></div><div>I found what i missed in the code.</div>

<div>I forgot set translation of the transform. Sorry for wasting your time!</div><div><br></div><div>Here is the code, if you want to.</div><div>---------------------------------------------------</div><div><div>..........        </div>


<div>
<div>        transform-&gt;SetScale(1.08438);</div><div><span style="white-space:pre">        </span>transform-&gt;SetAngle(0.154531);</div><div><span style="white-space:pre">        </span>TransformType::TranslationType translation;</div>



<div><span style="white-space:pre">        </span>translation[0] = -26.6822;</div><div><span style="white-space:pre">        </span>translation[1] = -93.6822;</div><div><br></div></div><div>
<span style="white-space:pre">        </span><b><i>transform-&gt;SetTranslation(translation);</i></b></div><div><div><br></div><div><span style="white-space:pre">        </span>MetricType::TransformParametersType transformParams = transform-&gt;GetParameters();</div>



<div><br></div><div><span style="white-space:pre">        </span>double metricval = metric-&gt;GetValue(transformParams);</div></div><div>.............</div><div>----------------------------------------------------</div>
<div><br></div><div>The metric value is 4570.285. It is much closer to <span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse">4551.86, still not the same ???</span></div>
<div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse"><br></span></div><div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse">I found a strange problem, i played around with the images, i swap role of images (fixed.bmp  &lt;-&gt; moving.bmp) and the result i got (2715.557) event smaller  than the value from registration process (4551.86). As far as i know, the registration&#39;s result is supposed to produce minimum value of metric value (is that right?) if so, what is wrong here? </span></div>



<div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse"><br></span></div><div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse"><span style="border-collapse:separate;font-family:arial;font-size:small"><div>



<font face="arial, sans-serif"><span style="border-collapse:collapse">You can reproduce the result with following two images </span></font></div><div><font color="#666666" face="Arial" size="2"><span style="border-collapse:collapse;font-size:10px;white-space:pre"><a href="http://picasaweb.google.com/lh/photo/qq5iA-PTGX6o3ZtslBX5HQ?authkey=Gv1sRgCPfxyPeBwITjkwE&amp;feat=directlink" target="_blank">fixed.bmp</a>; <a href="http://picasaweb.google.com/phamsyquybk/DropBox?authkey=Gv1sRgCPfxyPeBwITjkwE#5388585730742727138" target="_blank">moving.bmp</a><br>



</span></font></div><div><font color="#666666" face="Arial" size="2"><br></font></div></span></span></div><div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse">Thanks,</span></div>
<div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse">Quyps</span></div><div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse"><br>
</span></div></div></span></span></font></div><div class="gmail_quote">2009/10/4 Quy Pham Sy <span dir="ltr">&lt;<a href="mailto:phamsyquybk@gmail.com" target="_blank">phamsyquybk@gmail.com</a>&gt;</span><div><div></div>


<div><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi, sorry for this lack,<div><br></div><div><div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse">/*For cases*/</span></div>




<div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse">transform-&gt;SetAngle(8.85397); --&gt; metric value = 12528.007</span></div>
<div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse">transform-&gt;SetAngle(<span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse">0.154531</span>); --&gt; metric value = 10993.347</span></div>





<div><br></div><div>result from example is <span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse">4551.86</span></div><div><span style="font-family:arial, sans-serif;font-size:12px;border-collapse:collapse"><br>





</span></div><div><font face="arial, sans-serif"><span style="border-collapse:collapse">I send you two image, could you please try to reproduce this? </span></font></div><div><div></div><div>
<div><font face="arial, sans-serif"><span style="border-collapse:collapse"><br></span></font></div><div><font face="arial, sans-serif"><span style="border-collapse:collapse">Thanks,</span></font></div>
<div><font face="arial, sans-serif"><span style="border-collapse:collapse">Quyps</span></font></div><div><br><div class="gmail_quote">2009/10/3 Bill Lorensen <span dir="ltr">&lt;<a href="mailto:bill.lorensen@gmail.com" target="_blank">bill.lorensen@gmail.com</a>&gt;</span><br>





<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">What value did you get?<br>
<div><div></div><div><br>
On Sat, Oct 3, 2009 at 4:55 AM, Quy Pham Sy &lt;<a href="mailto:phamsyquybk@gmail.com" target="_blank">phamsyquybk@gmail.com</a>&gt; wrote:<br>
&gt; Hi,<br>
&gt; I tried with radian,<br>
&gt; --------------------------------------------<br>
&gt; .....<br>
&gt; transform-&gt;SetScale(1.08438);<br>
&gt; transform-&gt;SetAngle(0.154531);<br>
&gt; TransformType::TranslationType translation;<br>
&gt; translation[0] = -26.6822;<br>
&gt; translation[1] = -93.6822;<br>
&gt; .....<br>
&gt; --------------------------------------------<br>
&gt; I got new value but still not  &#39;4551.86&#39; (the value from example).<br>
&gt; I read from &quot;ITK software guide ver 2.4&quot; textbook, page 366. they explained<br>
&gt; (as i understand) that the output transform params from registration process<br>
&gt; are actually applied to FixeImage, in order to get the minimum metric<br>
&gt; value.<br>
&gt; It is still not clear that, the transform params pass directly to metric<br>
&gt; object are interpreted same way as in registration process (i mean they also<br>
&gt; applied to Fixed image instead of Moving Image). I guess the reason may come<br>
&gt; from this unobvious understanding.  Do you have any idea about this?<br>
&gt;<br>
&gt; Thanks,<br>
&gt; Quyps<br>
&gt;<br>
&gt; 2009/10/3 Bill Lorensen &lt;<a href="mailto:bill.lorensen@gmail.com" target="_blank">bill.lorensen@gmail.com</a>&gt;<br>
&gt;&gt;<br>
&gt;&gt;  /** Set/Get the angle of rotation in radians */<br>
&gt;&gt;                                                        ----------<br>
&gt;&gt;  void SetAngle(TScalarType angle);<br>
&gt;&gt;  itkGetConstReferenceMacro( Angle, TScalarType );<br>
&gt;&gt;<br>
&gt;&gt; Try:<br>
&gt;&gt; transform-&gt;SetAngle(0.154531);<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Oct 2, 2009 at 4:09 PM, Quy Pham Sy &lt;<a href="mailto:phamsyquybk@gmail.com" target="_blank">phamsyquybk@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt; hi,<br>
&gt;&gt; &gt; I run ImageRegistration7 example in ITK.<br>
&gt;&gt; &gt; and the output like following<br>
&gt;&gt; &gt; -------------------------------------<br>
&gt;&gt; &gt;  Scale         = 1.08438<br>
&gt;&gt; &gt;  Angle (radians) 0.154531<br>
&gt;&gt; &gt;  Angle (degrees) 8.85397<br>
&gt;&gt; &gt;  Center X      = 170.327<br>
&gt;&gt; &gt;  Center Y      = 148.556<br>
&gt;&gt; &gt;  Translation X = -26.6822<br>
&gt;&gt; &gt;  Translation Y = -93.4428<br>
&gt;&gt; &gt;  Iterations    = 500<br>
&gt;&gt; &gt;  Metric value  = 4551.86<br>
&gt;&gt; &gt; ---------------------------------------<br>
&gt;&gt; &gt; I made a program in which i use a same metric, transformation,<br>
&gt;&gt; &gt; interpolate<br>
&gt;&gt; &gt; object type as above example, with same two input image file. I set<br>
&gt;&gt; &gt; above<br>
&gt;&gt; &gt; value to calculate metric value directly from metric object, but the<br>
&gt;&gt; &gt; result<br>
&gt;&gt; &gt; is not same as what the example made..<br>
&gt;&gt; &gt; here is the code, did i miss something?<br>
&gt;&gt; &gt; I&#39;m running out of time! really appreciate any help!<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; -------------------------------------------------------------------------<br>
&gt;&gt; &gt; int main( int argc, char * argv[] )<br>
&gt;&gt; &gt; {<br>
&gt;&gt; &gt; const     unsigned int   Dimension = 2;<br>
&gt;&gt; &gt; typedef   unsigned char  PixelType;<br>
&gt;&gt; &gt; typedef itk::Image&lt; PixelType, Dimension &gt;   ImageType;<br>
&gt;&gt; &gt; typedef itk::ImageFileReader&lt; ImageType &gt;  ReaderType;<br>
&gt;&gt; &gt; ReaderType::Pointer fixedReader  = ReaderType::New();<br>
&gt;&gt; &gt; ReaderType::Pointer movingReader = ReaderType::New();<br>
&gt;&gt; &gt; fixedReader-&gt;SetFileName(  &quot;fixed.bmp&quot; );<br>
&gt;&gt; &gt; movingReader-&gt;SetFileName( &quot;moving.bmp&quot; );<br>
&gt;&gt; &gt; try<br>
&gt;&gt; &gt; {<br>
&gt;&gt; &gt; fixedReader-&gt;Update();<br>
&gt;&gt; &gt; movingReader-&gt;Update();<br>
&gt;&gt; &gt; }<br>
&gt;&gt; &gt; catch( itk::ExceptionObject &amp; excep )<br>
&gt;&gt; &gt; {<br>
&gt;&gt; &gt; std::cerr &lt;&lt; &quot;Exception catched !&quot; &lt;&lt; std::endl;<br>
&gt;&gt; &gt; std::cerr &lt;&lt; excep &lt;&lt; std::endl;<br>
&gt;&gt; &gt; }<br>
&gt;&gt; &gt; typedef itk::MeanSquaresImageToImageMetric&lt; ImageType, ImageType &gt;<br>
&gt;&gt; &gt;  MetricType;<br>
&gt;&gt; &gt; MetricType::Pointer metric = MetricType::New();<br>
&gt;&gt; &gt; typedef itk::CenteredSimilarity2DTransform &lt; double &gt;  TransformType;<br>
&gt;&gt; &gt; TransformType::Pointer transform = TransformType::New();<br>
&gt;&gt; &gt; typedef itk::LinearInterpolateImageFunction&lt; ImageType, double &gt;<br>
&gt;&gt; &gt;  InterpolatorType;<br>
&gt;&gt; &gt; InterpolatorType::Pointer interpolator = InterpolatorType::New();<br>
&gt;&gt; &gt; ImageType::Pointer fixedImage  = fixedReader-&gt;GetOutput();<br>
&gt;&gt; &gt; ImageType::Pointer movingImage = movingReader-&gt;GetOutput();<br>
&gt;&gt; &gt; typedef itk::CenteredTransformInitializer&lt; TransformType, ImageType,<br>
&gt;&gt; &gt; ImageType &gt;  TransformInitializerType;<br>
&gt;&gt; &gt; TransformInitializerType::Pointer initializer =<br>
&gt;&gt; &gt; TransformInitializerType::New();<br>
&gt;&gt; &gt; initializer-&gt;SetTransform(   transform );<br>
&gt;&gt; &gt; initializer-&gt;SetFixedImage(  fixedImage );<br>
&gt;&gt; &gt; initializer-&gt;SetMovingImage( movingImage );<br>
&gt;&gt; &gt; initializer-&gt;MomentsOn();<br>
&gt;&gt; &gt; initializer-&gt;InitializeTransform();<br>
&gt;&gt; &gt; metric-&gt;SetTransform( transform );<br>
&gt;&gt; &gt; metric-&gt;SetInterpolator( interpolator );<br>
&gt;&gt; &gt; metric-&gt;SetFixedImage(  fixedImage  );<br>
&gt;&gt; &gt; metric-&gt;SetMovingImage( movingImage );<br>
&gt;&gt; &gt; metric-&gt;SetFixedImageRegion(  fixedImage-&gt;GetBufferedRegion()  );<br>
&gt;&gt; &gt; try<br>
&gt;&gt; &gt; {<br>
&gt;&gt; &gt; metric-&gt;Initialize();<br>
&gt;&gt; &gt; }<br>
&gt;&gt; &gt; catch( itk::ExceptionObject &amp; excep )<br>
&gt;&gt; &gt; {<br>
&gt;&gt; &gt; std::cerr &lt;&lt; &quot;Exception catched !&quot; &lt;&lt; std::endl;<br>
&gt;&gt; &gt; std::cerr &lt;&lt; excep &lt;&lt; std::endl;<br>
&gt;&gt; &gt; return EXIT_FAILURE;<br>
&gt;&gt; &gt; }<br>
&gt;&gt; &gt; transform-&gt;SetScale(1.08438);<br>
&gt;&gt; &gt; transform-&gt;SetAngle(0.154531);<br>
&gt;&gt; &gt; TransformType::TranslationType translation;<br>
&gt;&gt; &gt; translation[0] = -26.6822;<br>
&gt;&gt; &gt; translation[1] = -93.6822;<br>
&gt;&gt; &gt; MetricType::TransformParametersType transformParams =<br>
&gt;&gt; &gt; transform-&gt;GetParameters();<br>
&gt;&gt; &gt; double metricval = metric-&gt;GetValue(transformParams);<br>
&gt;&gt; &gt; return EXIT_SUCCESS;<br>
&gt;&gt; &gt; }<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _____________________________________<br>
&gt;&gt; &gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Visit other Kitware open-source projects at<br>
&gt;&gt; &gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; &gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;&gt; _____________________________________<br>
&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;<br>
&gt; Visit other Kitware open-source projects at<br>
&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;<br>
&gt; Please keep messages on-topic and check the ITK FAQ at:<br>
&gt; <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
&gt;<br>
&gt; Follow this link to subscribe/unsubscribe:<br>
&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br>
</div></div></div></div>
</blockquote></div></div></div><br><br>
</div>
</div><br><br clear="all"><br></div></div>-- <br><div><div></div><div>Pham Sy Quy<br>HCI Lab, Advanced Fusion Technology Department, <br>Room 1211, New Millennium Building<br>Konkuk University, Seoul, Korea<br>
Mobile: +82-10-9800-8104<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Pham Sy Quy<br>HCI Lab, Advanced Fusion Technology Department, <br>Room 1211, New Millennium Building<br>Konkuk University, Seoul, Korea<br>Mobile: +82-10-9800-8104<br>


</div>