<div>HI Luis,</div>
<div>Thanks for your prompt reply. Yes, I did set the optimizer (Regular Step Gradient Descent optimizer)&nbsp;as the following way which I forgot to include in last posting.</div>
<div>&nbsp;</div>
<div>&nbsp;optimizer-&gt;SetMaximumStepLength( 0.50000 );<br>&nbsp;optimizer-&gt;SetMinimumStepLength( 0.01 );<br>&nbsp;optimizer-&gt;SetNumberOfIterations( 200 );<br>&nbsp;optimizer-&gt;SetGradientMagnitudeTolerance( 0.01*optimizer-&gt;GetGradientMagnitudeTolerance() );
</div>
<div>&nbsp;</div>
<div>Later on I tried to increase the step lengths as:</div>
<div>&nbsp;</div>
<div>&nbsp;optimizer-&gt;SetMaximumStepLength( 1.000 );</div>
<div>&nbsp;optimizer-&gt;SetMinimumStepLength( 0.05 );<br>&nbsp;</div>
<div>And I had the following metric output:</div>
<div>&nbsp;</div>
<div>0&nbsp;&nbsp; -0.835581&nbsp;&nbsp; [-0.0321978, -0.466639, 0.883861]<br>1&nbsp;&nbsp; -0.840282&nbsp;&nbsp; [0.399061, -0.885096, 1.68318]<br>2&nbsp;&nbsp; -0.837371&nbsp;&nbsp; [0.259052, -0.883767, 2.67333]<br>3&nbsp;&nbsp; -0.824043&nbsp;&nbsp; [0.75875, -0.889684, 2.68965]<br>4&nbsp;&nbsp; -0.829629
&nbsp;&nbsp; [0.55809, -0.881664, 2.83855]<br>5&nbsp;&nbsp; -0.82694&nbsp;&nbsp; [0.679164, -0.884414, 2.80759]<br>6&nbsp;&nbsp; -0.828347&nbsp;&nbsp; [0.623941, -0.882636, 2.8368]<br>7&nbsp;&nbsp; -0.827662&nbsp;&nbsp; [0.566916, -0.881064, 2.86234]</div>
<div>&nbsp;</div>
<div>The only change is the step length but the results are similar to the previous one. By the way for the LBFGSB optimizer I used the following conditions:</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // (1) LBFGSB optimizer<br>&nbsp;&nbsp; OptimizerType::BoundSelectionType boundSelect( transform-&gt;GetNumberOfParameters() );<br>&nbsp;&nbsp; OptimizerType::BoundValueType upperBound( transform-&gt;GetNumberOfParameters() );<br>
&nbsp;&nbsp; OptimizerType::BoundValueType lowerBound( transform-&gt;GetNumberOfParameters() );<br>&nbsp;&nbsp; boundSelect.Fill(&nbsp; 0 );<br>&nbsp;&nbsp; upperBound.Fill(&nbsp; 10.0 );<br>&nbsp;&nbsp; lowerBound.Fill( -10.0 );<br>&nbsp;&nbsp; optimizer-&gt;SetBoundSelection( boundSelect );
<br>&nbsp;&nbsp; optimizer-&gt;SetUpperBound( upperBound );<br>&nbsp;&nbsp; optimizer-&gt;SetLowerBound( lowerBound );<br>&nbsp;&nbsp; optimizer-&gt;SetMaximumNumberOfEvaluations( 200 );<br>&nbsp;&nbsp; optimizer-&gt;SetMaximumNumberOfCorrections( 200 );</div>
<div>&nbsp;</div>
<div>Here I am not clear what you meant for best setting.&nbsp;I thought the conditions I provided were reasonable. Do you see anything obviously different which leads to different results?</div>
<div>&nbsp;</div>
<div>Cheers,</div>
<div>Ming</div>
<div>&nbsp;</div>
<div><span class="gmail_quote">On 5/2/06, <b class="gmail_sendername">Luis Ibanez</b> &lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@kitware.com</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><br>Hi Ming,<br><br><br>Did you set the optimizer to do Minimization or Maximization ?<br>that is, did you used any of the following:
<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimizer-&gt;MaximizeOn()&nbsp;&nbsp;?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimizer-&gt;MaximizeOff()&nbsp;&nbsp;?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimizer-&gt;MinimizeOn()&nbsp;&nbsp;?<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;optimizer-&gt;MinimizeOff()&nbsp;&nbsp;?<br><br>How much overlap did the images have at the end of the run
<br>with the RegularStepNormalized Correlation ?<br><br>Note that the lasts iterations of the run with<br>RegularStepGradientDescent are advancing at very<br>small steps.<br><br>You may want to start the optimizer with a larger initial
<br>value of the StepLength, and to change the default relaxation<br>factor to be 0.7 or 0.9 instead of the default value 0.5.<br><br>In this way, the step length will change to 0.7 of the previous<br>value every time that the gradient changes directions.
<br><br>You will get a lot of insight about the registration process<br>by plotting the trace of the translation in 3D. This will<br>show you how much the Transform is changing at every iteration.<br>This is not clearly conveyed just by looking at the numbers.
<br><br>You will find the 2D version of many of these types of plots<br>in the ITK Software Guide,<br><br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.itk.org/ItkSoftwareGuide.pdf">http://www.itk.org/ItkSoftwareGuide.pdf</a><br><br><br>Note that it is not surprising that you get different
<br>results from different optimizers, but before you attempt<br>to compare the results you should make sure that you are<br>actually using both optimizers in their best settings and<br>conditions. Otherwise it is just a bias and unfair
<br>comparison.<br><br><br><br>&nbsp;&nbsp;Regards,<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp; Luis<br><br><br><br>=================<br>Ming Chao wrote:<br>&gt; Hi,<br>&gt;<br>&gt; When I used Regular Step Gradient Descent optimizer to register two<br>&gt; images I saw an abnormal behavior. The metric value first decreased but
<br>&gt; after some iterations it became larger. See the following output:<br>&gt;<br>&gt; 0&nbsp;&nbsp; -0.835581&nbsp;&nbsp; [-0.00321978, -0.0466639, 0.0883861]<br>&gt; 1&nbsp;&nbsp; -0.836504&nbsp;&nbsp; [-0.00422488, -0.0933436, 0.176817]<br>&gt; 2&nbsp;&nbsp; -0.83737
&nbsp;&nbsp; [-0.00293453, -0.139983, 0.265265]<br>&gt; 3&nbsp;&nbsp; -0.838174&nbsp;&nbsp; [0.000731481, -0.18652, 0.353701]<br>&gt; 4&nbsp;&nbsp; -0.838908&nbsp;&nbsp; [0.00685175, -0.232884, 0.442092]<br>&gt; 5&nbsp;&nbsp; -0.839563&nbsp;&nbsp; [0.015502, -0.278993, 0.530404]<br>&gt; 6&nbsp;&nbsp; -
0.840129&nbsp;&nbsp; [0.0267537, -0.32476, 0.618602]<br>&gt; 7&nbsp;&nbsp; -0.840598&nbsp;&nbsp; [0.0406717, -0.370081, 0.706649]<br>&gt; 8&nbsp;&nbsp; -0.84096&nbsp;&nbsp; [ 0.0573129, -0.414844, 0.794509]<br>&gt; 9&nbsp;&nbsp; -0.84121&nbsp;&nbsp; [0.0767229, -0.458919, 0.882148]<br>&gt; 10&nbsp;&nbsp; -
0.841343&nbsp;&nbsp; [0.0989338, -0.50216, 0.969537]<br>&gt; 11&nbsp;&nbsp; -0.841358&nbsp;&nbsp; [0.123961, -0.544401, 1.05665]<br>&gt; 12&nbsp;&nbsp; -0.841256&nbsp;&nbsp; [0.151799, -0.58545 , 1.14349]<br>&gt; 13&nbsp;&nbsp; -0.841041&nbsp;&nbsp; [0.182419, -0.625084, 1.23004]<br>&gt; 14&nbsp;&nbsp; -
0.840719&nbsp;&nbsp; [0.215761, -0.663034, 1.31634]<br>&gt; 15&nbsp;&nbsp; -0.840298&nbsp;&nbsp; [0.214669, -0.680096, 1.41487]<br>&gt; 16&nbsp;&nbsp; -0.839375&nbsp;&nbsp; [0.216594, -0.696938, 1.51342]<br>&gt; 17&nbsp;&nbsp; - 0.838339&nbsp;&nbsp; [0.221686, -0.713544, 1.6119]<br>&gt; 18&nbsp;&nbsp; -
0.837215&nbsp;&nbsp; [0.230089, -0.729893, 1.7102]<br>&gt; 19&nbsp;&nbsp; -0.836032&nbsp;&nbsp; [0.241937, -0.74596, 1.80819]<br>&gt; 20&nbsp;&nbsp; -0.83482&nbsp;&nbsp; [0.257347, -0.76171, 1.90573]<br>&gt; 21&nbsp;&nbsp; -0.833613&nbsp;&nbsp; [0.276409, - 0.7771, 2.00268]<br>&gt; 22&nbsp;&nbsp; -0.832445
&nbsp;&nbsp; [0.299184, -0.792076, 2.09889]<br>&gt; 23&nbsp;&nbsp; -0.831349&nbsp;&nbsp; [0.325688, -0.806571, 2.19422]<br>&gt; 24&nbsp;&nbsp; -0.830357&nbsp;&nbsp; [0.35589, -0.820502, 2.28853]<br>&gt; 25&nbsp;&nbsp; -0.829494&nbsp;&nbsp; [0.389705, -0.833768, 2.3817]<br>&gt; 26&nbsp;&nbsp; -0.828783
&nbsp;&nbsp; [0.426981, -0.84624, 2.47365]<br>&gt; 27&nbsp;&nbsp; -0.828236&nbsp;&nbsp; [0.467495, -0.857749, 2.56435]<br>&gt; 28&nbsp;&nbsp; -0.827859&nbsp;&nbsp; [0.510938, -0.868055, 2.65383]<br>&gt; 29&nbsp;&nbsp; -0.827633&nbsp;&nbsp; [0.556896, -0.876774, 2.74221]<br>&gt; 30&nbsp;&nbsp; -0.827525
&nbsp;&nbsp; [ 0.60475, -0.883034, 2.8298]<br>&gt; 31&nbsp;&nbsp; -0.827502&nbsp;&nbsp; [0.650812, -0.875321, 2.91822]<br>&gt; 32&nbsp;&nbsp; -0.827512&nbsp;&nbsp; [0.629235, -0.881114, 2.87349]<br>&gt; 33&nbsp;&nbsp; -0.827519&nbsp;&nbsp; [0.603546, -0.883645, 2.83067]<br>&gt; 34&nbsp;&nbsp; -0.827483
&nbsp;&nbsp; [0.620407, -0.880267 , 2.84881]<br>&gt; 35&nbsp;&nbsp; -0.827564&nbsp;&nbsp; [0.608674, -0.882388, 2.84506]<br>&gt; 36&nbsp;&nbsp; -0.827459&nbsp;&nbsp; [0.613038, -0.88246, 2.84059]<br>&gt; 37&nbsp;&nbsp; -0.827529&nbsp;&nbsp; [0.610107, -0.882339, 2.84166]<br>&gt; 38&nbsp;&nbsp; -0.827493
&nbsp;&nbsp; [0.611332, -0.882386, 2.8407]<br>&gt;<br>&gt; However, if I change the optimizer to the LBFGSB optimizer, I got the<br>&gt; following output:<br>&gt;<br>&gt; 0&nbsp;&nbsp; -0.840282&nbsp;&nbsp; [-0.0321978, -0.466639, 0.883861]<br>&gt; 1&nbsp;&nbsp; -
0.840732&nbsp;&nbsp; [0.0493198, -0.53362, 1.01199]<br>&gt; 2&nbsp;&nbsp; -0.840735&nbsp;&nbsp; [0.0592661, -0.540774, 1.03432]<br>&gt; 3&nbsp;&nbsp; -0.840751&nbsp;&nbsp; [0.100359, -0.570829, 1.11035]<br>&gt;<br>&gt; This looks reasonable. The setup for the registration is the following:
<br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;typedef itk::BSplineInterpolateImageFunction&lt;ImageType, double &gt;<br>&gt; InterpolatorType;<br>&gt;&nbsp;&nbsp; typedef itk::ImageRegistrationMethod&lt;ImageType, ImageType &gt;<br>&gt; RegistrationType;
<br>&gt;<br>&gt;&nbsp;&nbsp; typedef<br>&gt; itk::NormalizedCorrelationImageToImageMetric&lt;ImageType,ImageType &gt;<br>&gt; MetricType;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; typedef itk::TranslationTransform&lt; double, Dimension &gt;<br>&gt; TransformType;
<br>&gt;<br>&gt; Can anybody tell me why I have so different results with different<br>&gt; optimizers?<br>&gt;<br>&gt; Thanks,<br>&gt;<br>&gt; Ming<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; ------------------------------------------------------------------------
<br>&gt;<br>&gt; _______________________________________________<br>&gt; Insight-users mailing list<br>&gt; <a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br>&gt; <a href="http://www.itk.org/mailman/listinfo/insight-users">
http://www.itk.org/mailman/listinfo/insight-users</a><br><br><br></blockquote></div><br>