<br>Hi Motes,<br><br>Another reason why running 10 times 10 iterations may give <br>your better results is that the RegularStepGradientDescent<br>optimizer decreases the size of the step length at ever occasion<br>in which the gradient changes direction. As a consequence is<br>
very likely that when you run 100 iterations in a single run, the<br>steps of the final 20 to 40 iterations are not doing much at all.<br><br>Karthik&#39;s explanation is also a very likely reason. Reinitializing<br>the collection of sample points may have something to do with<br>
the result difference in the results.<br><br>You could identify they source by adding to your command <br>observer a print out of the optimizer step length, and by running<br>a second registration using All the pixels in the image, instead<br>
of a sub-sampled collection.<br><br><br>      Regards,<br><br><br>            Luis<br><br><br>---------------------------------------------------------------------------------------<br><div class="gmail_quote">On Wed, Aug 12, 2009 at 4:29 AM, motes motes <span dir="ltr">&lt;<a href="mailto:mort.motes@gmail.com">mort.motes@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br><br><div class="gmail_quote"><div class="im">On Wed, Aug 12, 2009 at 7:16 AM, Karthik Krishnan <span dir="ltr">&lt;<a href="mailto:karthik.krishnan@kitware.com" target="_blank">karthik.krishnan@kitware.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
What metric ? <br><br>There could be several reasons. Perhaps you should print out the transform at each iteration.<br><br>Re-initializing a mattes metric in the latter case means that before each sub-registration step, a fresh random set of samples are picked. This is not the case in the former. (You can set the samples yourself to avoid this).<br>


<br>Also some examples may use a linear interpolator during the registration, but a slower and better interpolator (BSplineInterpolator) at the final resampling step. Re-running the example would then &quot;smooth&quot; the image at the end of each registration.<br>


<br></blockquote></div><div><br><br>Sorry here is some more info on the components that I use:<br><br><br>  typedef double                                                                                                                           CoordinateRepType;<br>

  static const unsigned int SpaceDimension = 2;<br>  static const unsigned int SplineOrder = 3;<br>  typedef itk::BSplineDeformableTransform&lt;CoordinateRepType, SpaceDimension, SplineOrder &gt;      TransformType;<br>  typedef itk::RegularStepGradientDescentOptimizer                                                                       OptimizerType;<br>

  typedef itk::MeanSquaresImageToImageMetric&lt;FixedImageType, MovingImageType&gt;                      MetricType;<br>  typedef itk:: LinearInterpolateImageFunction&lt;MovingImageType, double&gt;                                        InterpolatorType;<br>

<br><br><br>So each time 10 iterations has been made the below &#39;run&#39; method is called where the transform is updated with the &#39;finalParameters&#39; from the previous execution:<br><br><br><br>// Setting up the BSpline transform.<br>

<br>ParametersType parameters(numberOfBSplineParameters);<br>parameters.Fill(0.0);<br><br>// Setting up the optimizer.<br>...<br><br>...<br>// Starting the 10*10 iterations<br>    for (int i=0; i&lt;runs; i++) {<br>      // Run the registration for &#39;iteration_interval&#39; iterations.<br>

      run(parameters);<br>      writeRegisteredImage(parameters, i);<br>    }<br>....<br><br><br>  int run(ParametersType &amp; parameters) {<br>        transform-&gt;SetParameters(parameters);<br>        registration-&gt;SetInitialTransformParameters(transform-&gt;GetParameters());<br>

<br>    // Add time and memory probes<br>    itkProbesCreate();<br>    std::cout &lt;&lt; std::endl &lt;&lt; &quot;[INFO]::Starting Registration&quot; &lt;&lt; std::endl;<br>    try { <br>      itkProbesStart(&quot;Registration&quot;);<br>

      registration-&gt;Update();<br>      itkProbesStop(&quot;Registration&quot;);<br>    }<br>    catch( itk::ExceptionObject &amp; err ) { <br>      std::cerr &lt;&lt; &quot;ExceptionObject caught !&quot; &lt;&lt; std::endl;<br>

      std::cerr &lt;&lt; err &lt;&lt; std::endl; <br>      return EXIT_FAILURE;<br>    }<br><br>    // Update the finalParameters.<br>    parameters = registration-&gt;GetLastTransformParameters();<br><br>    // Write the final parameters to disk<br>

    //writeFinalTransformParameters(finalParameters);<br><br>    // Report the time and memory taken by the registration<br>    itkProbesReport(std::cout);<br>    return EXIT_SUCCESS;<br><br>  }<br><br><br>I never change the optimizer during these runs, only the transform.<br>

<br><br><br><br><br><br> </div><div><div></div><div class="h5"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br><br><br><div class="gmail_quote">
<div><div></div><div>
On Tue, Aug 11, 2009 at 6:52 PM, motes motes <span dir="ltr">&lt;<a href="mailto:mort.motes@gmail.com" target="_blank">mort.motes@gmail.com</a>&gt;</span> wrote:<br></div></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

<div><div></div><div>
I am running a modified version of the 2D BSplineDeformableTransform registration example.<br><br>If I run it for 100 iterations straight I get the following final metric value and time:<br><br>...<br>...<br>Current iteration = 99<br>



Metric value = 523.29<br><br>[INFO]::Write last Transform Parameters<br>          Probe Tag    Starts    Stops             Time (s)<br>        Registration           1            1           760.658<br><br><br><br><br><br>



<br>Now If I run it as 10*10 iterations where I pass the finalTransformParameters as input to the transform after each of the 10 iterations I get:<br><br><br><br>Current iteration = 9<br>Metric value = 330.641<br><br>          Probe Tag    Starts    Stops             Time (s)<br>



        Registration           1            1           72.7789<br><br><br><br><br><br><br><br>The total time for the 10*10 approach is:<br><br>        Registration           1            1            71.379<br>        Registration           1            1           71.2781<br>



        Registration           1            1           71.3366<br>        Registration           1            1           71.0148<br>        Registration           1            1           71.0298<br>        Registration           1            1           71.2541<br>



        Registration           1            1           71.8186<br>        Registration           1            1           71.0167<br>        Registration           1            1           73.3319<br>        Registration           1            1           72.7789<br>



<br>total:                                                         716,2085<br><br><br>So the quality is about a factor 523.29/330.641 = 1.583 better and about 44 seconds faster.<br><br>Any ideas on why performing 10*10 iterations give such a better result than performing 100 iterations straight?<br>



<br><br>Below is the complete print of both test. First the 100 iterations straight and then the 10*10 iterations:<br><br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 1250.41<br><br>Current iteration = 1<br>



Metric value = 1052.62<br><br>Current iteration = 2<br>Metric value = 998.251<br><br>Current iteration = 3<br>Metric value = 988.934<br><br>Current iteration = 4<br>Metric value = 939.29<br><br>Current iteration = 5<br>Metric value = 928.959<br>



<br>Current iteration = 6<br>Metric value = 886.587<br><br>Current iteration = 7<br>Metric value = 878.586<br><br>Current iteration = 8<br>Metric value = 839.342<br><br>Current iteration = 9<br>Metric value = 836.203<br>


<br>
Current iteration = 10<br>Metric value = 817.779<br><br>Current iteration = 11<br>Metric value = 802.519<br><br>Current iteration = 12<br>Metric value = 785.766<br><br>Current iteration = 13<br>Metric value = 774.242<br>


<br>
Current iteration = 14<br>Metric value = 754.812<br><br>Current iteration = 15<br>Metric value = 743.522<br><br>Current iteration = 16<br>Metric value = 737.235<br><br>Current iteration = 17<br>Metric value = 728.559<br>


<br>
Current iteration = 18<br>Metric value = 717.322<br><br>Current iteration = 19<br>Metric value = 705.742<br><br>Current iteration = 20<br>Metric value = 700.79<br><br>Current iteration = 21<br>Metric value = 700.665<br><br>



Current iteration = 22<br>Metric value = 690.481<br><br>Current iteration = 23<br>Metric value = 689.587<br><br>Current iteration = 24<br>Metric value = 682.805<br><br>Current iteration = 25<br>Metric value = 681.994<br>


<br>
Current iteration = 26<br>Metric value = 677.302<br><br>Current iteration = 27<br>Metric value = 675.799<br><br>Current iteration = 28<br>Metric value = 670.539<br><br>Current iteration = 29<br>Metric value = 669.862<br>


<br>
Current iteration = 30<br>Metric value = 665.488<br><br>Current iteration = 31<br>Metric value = 664.107<br><br>Current iteration = 32<br>Metric value = 659.459<br><br>Current iteration = 33<br>Metric value = 658.766<br>


<br>
Current iteration = 34<br>Metric value = 655.056<br><br>Current iteration = 35<br>Metric value = 653.779<br><br>Current iteration = 36<br>Metric value = 649.939<br><br>Current iteration = 37<br>Metric value = 648.844<br>


<br>
Current iteration = 38<br>Metric value = 645.275<br><br>Current iteration = 39<br>Metric value = 644.185<br><br>Current iteration = 40<br>Metric value = 640.996<br><br>Current iteration = 41<br>Metric value = 639.828<br>


<br>
Current iteration = 42<br>Metric value = 636.705<br><br>Current iteration = 43<br>Metric value = 635.562<br><br>Current iteration = 44<br>Metric value = 632.591<br><br>Current iteration = 45<br>Metric value = 631.601<br>


<br>
Current iteration = 46<br>Metric value = 628.668<br><br>Current iteration = 47<br>Metric value = 627.825<br><br>Current iteration = 48<br>Metric value = 625.127<br><br>Current iteration = 49<br>Metric value = 624.047<br>


<br>
Current iteration = 50<br>Metric value = 621.346<br><br>Current iteration = 51<br>Metric value = 620.275<br><br>Current iteration = 52<br>Metric value = 617.845<br><br>Current iteration = 53<br>Metric value = 616.837<br>


<br>
Current iteration = 54<br>Metric value = 614.049<br><br>Current iteration = 55<br>Metric value = 612.977<br><br>Current iteration = 56<br>Metric value = 610.341<br><br>Current iteration = 57<br>Metric value = 609.481<br>


<br>
Current iteration = 58<br>Metric value = 606.853<br><br>Current iteration = 59<br>Metric value = 605.766<br><br>Current iteration = 60<br>Metric value = 602.988<br><br>Current iteration = 61<br>Metric value = 601.962<br>


<br>
Current iteration = 62<br>Metric value = 599.225<br><br>Current iteration = 63<br>Metric value = 598.164<br><br>Current iteration = 64<br>Metric value = 595.356<br><br>Current iteration = 65<br>Metric value = 594.261<br>


<br>
Current iteration = 66<br>Metric value = 591.51<br><br>Current iteration = 67<br>Metric value = 590.453<br><br>Current iteration = 68<br>Metric value = 587.536<br><br>Current iteration = 69<br>Metric value = 586.469<br><br>



Current iteration = 70<br>Metric value = 583.695<br><br>Current iteration = 71<br>Metric value = 582.713<br><br>Current iteration = 72<br>Metric value = 579.95<br><br>Current iteration = 73<br>Metric value = 578.899<br><br>



Current iteration = 74<br>Metric value = 576.22<br><br>Current iteration = 75<br>Metric value = 575.275<br><br>Current iteration = 76<br>Metric value = 572.503<br><br>Current iteration = 77<br>Metric value = 571.669<br><br>



Current iteration = 78<br>Metric value = 568.888<br><br>Current iteration = 79<br>Metric value = 568.318<br><br>Current iteration = 80<br>Metric value = 565.322<br><br>Current iteration = 81<br>Metric value = 564.652<br>


<br>
Current iteration = 82<br>Metric value = 561.529<br><br>Current iteration = 83<br>Metric value = 561.349<br><br>Current iteration = 84<br>Metric value = 558.059<br><br>Current iteration = 85<br>Metric value = 557.616<br>


<br>
Current iteration = 86<br>Metric value = 554.179<br><br>Current iteration = 87<br>Metric value = 553.638<br><br>Current iteration = 88<br>Metric value = 550.255<br><br>Current iteration = 89<br>Metric value = 549.459<br>


<br>
Current iteration = 90<br>Metric value = 545.765<br><br>Current iteration = 91<br>Metric value = 544.212<br><br>Current iteration = 92<br>Metric value = 540.783<br><br>Current iteration = 93<br>Metric value = 538.406<br>


<br>
Current iteration = 94<br>Metric value = 535.319<br><br>Current iteration = 95<br>Metric value = 532.849<br><br>Current iteration = 96<br>Metric value = 530.019<br><br>Current iteration = 97<br>Metric value = 527.351<br>


<br>
Current iteration = 98<br>Metric value = 525.077<br><br>Current iteration = 99<br>Metric value = 523.29<br><br>[INFO]::Write last Transform Parameters<br>          Probe Tag    Starts    Stops             Time (s)<br>        Registration           1            1           760.658<br>



[INFO]::Registration completed!<br><br><br><br><br><br>------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>



<br><br><br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 1250.41<br><br>Current iteration = 1<br>Metric value = 1052.62<br><br>Current iteration = 2<br>Metric value = 998.251<br><br>Current iteration = 3<br>



Metric value = 988.934<br><br>Current iteration = 4<br>Metric value = 939.29<br><br>Current iteration = 5<br>Metric value = 928.959<br><br>Current iteration = 6<br>Metric value = 886.587<br><br>Current iteration = 7<br>Metric value = 878.586<br>



<br>Current iteration = 8<br>Metric value = 839.342<br><br>Current iteration = 9<br>Metric value = 836.203<br><br>          Probe Tag    Starts    Stops             Time (s)<br>        Registration           1            1            71.379<br>



[INFO]::Registered image saved!<br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 817.779<br><br>Current iteration = 1<br>Metric value = 911.784<br><br>Current iteration = 2<br>Metric value = 786.9<br>



<br>Current iteration = 3<br>Metric value = 823.547<br><br>Current iteration = 4<br>Metric value = 764.919<br><br>Current iteration = 5<br>Metric value = 787.627<br><br>Current iteration = 6<br>Metric value = 735.425<br>


<br>
Current iteration = 7<br>Metric value = 753.176<br><br>Current iteration = 8<br>Metric value = 713.713<br><br>Current iteration = 9<br>Metric value = 725.794<br><br>          Probe Tag    Starts    Stops             Time (s)<br>



        Registration           1            1           71.2781<br>[INFO]::Registered image saved!<br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 694.506<br><br>Current iteration = 1<br>Metric value = 844.985<br>



<br>Current iteration = 2<br>Metric value = 695.623<br><br>Current iteration = 3<br>Metric value = 725.924<br><br>Current iteration = 4<br>Metric value = 678.204<br><br>Current iteration = 5<br>Metric value = 717.822<br>


<br>
Current iteration = 6<br>Metric value = 667.199<br><br>Current iteration = 7<br>Metric value = 694.74<br><br>Current iteration = 8<br>Metric value = 649.602<br><br>Current iteration = 9<br>Metric value = 672.77<br><br>          Probe Tag    Starts    Stops             Time (s)<br>



        Registration           1            1           71.3366<br>[INFO]::Registered image saved!<br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 637.146<br><br>Current iteration = 1<br>Metric value = 816.554<br>



<br>Current iteration = 2<br>Metric value = 659.315<br><br>Current iteration = 3<br>Metric value = 684.975<br><br>Current iteration = 4<br>Metric value = 645.472<br><br>Current iteration = 5<br>Metric value = 674.427<br>


<br>
Current iteration = 6<br>Metric value = 627.892<br><br>Current iteration = 7<br>Metric value = 651.59<br><br>Current iteration = 8<br>Metric value = 611.565<br><br>Current iteration = 9<br>Metric value = 630.496<br><br>          Probe Tag    Starts    Stops             Time (s)<br>



        Registration           1            1           71.0148<br>[INFO]::Registered image saved!<br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 597.433<br><br>Current iteration = 1<br>Metric value = 778.622<br>



<br>Current iteration = 2<br>Metric value = 610.481<br><br>Current iteration = 3<br>Metric value = 653.762<br><br>Current iteration = 4<br>Metric value = 588.401<br><br>Current iteration = 5<br>Metric value = 641.37<br><br>



Current iteration = 6<br>Metric value = 566.543<br><br>Current iteration = 7<br>Metric value = 604.455<br><br>Current iteration = 8<br>Metric value = 551.011<br><br>Current iteration = 9<br>Metric value = 574.794<br><br>


          Probe Tag    Starts    Stops             Time (s)<br>
        Registration           1            1           71.0298<br>[INFO]::Registered image saved!<br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 531.244<br><br>Current iteration = 1<br>Metric value = 674.44<br>



<br>Current iteration = 2<br>Metric value = 526.883<br><br>Current iteration = 3<br>Metric value = 553.249<br><br>Current iteration = 4<br>Metric value = 490.66<br><br>Current iteration = 5<br>Metric value = 522.099<br><br>



Current iteration = 6<br>Metric value = 482.033<br><br>Current iteration = 7<br>Metric value = 505.727<br><br>Current iteration = 8<br>Metric value = 461.877<br><br>Current iteration = 9<br>Metric value = 480.441<br><br>


          Probe Tag    Starts    Stops             Time (s)<br>
        Registration           1            1           71.2541<br>[INFO]::Registered image saved!<br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 445.601<br><br>Current iteration = 1<br>Metric value = 610.837<br>



<br>Current iteration = 2<br>Metric value = 462.224<br><br>Current iteration = 3<br>Metric value = 485.76<br><br>Current iteration = 4<br>Metric value = 434.521<br><br>Current iteration = 5<br>Metric value = 464.248<br><br>



Current iteration = 6<br>Metric value = 426.544<br><br>Current iteration = 7<br>Metric value = 441.414<br><br>Current iteration = 8<br>Metric value = 408.767<br><br>Current iteration = 9<br>Metric value = 414.533<br><br>


          Probe Tag    Starts    Stops             Time (s)<br>
        Registration           1            1           71.8186<br>[INFO]::Registered image saved!<br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 393.686<br><br>Current iteration = 1<br>Metric value = 594.624<br>



<br>Current iteration = 2<br>Metric value = 395.791<br><br>Current iteration = 3<br>Metric value = 442.752<br><br>Current iteration = 4<br>Metric value = 371.636<br><br>Current iteration = 5<br>Metric value = 400.695<br>


<br>
Current iteration = 6<br>Metric value = 357.976<br><br>Current iteration = 7<br>Metric value = 390.926<br><br>Current iteration = 8<br>Metric value = 357.633<br><br>Current iteration = 9<br>Metric value = 373.616<br><br>


          Probe Tag    Starts    Stops             Time (s)<br>
        Registration           1            1           71.0167<br>[INFO]::Registered image saved!<br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 345.033<br><br>Current iteration = 1<br>Metric value = 566.574<br>



<br>Current iteration = 2<br>Metric value = 349.902<br><br>Current iteration = 3<br>Metric value = 412.93<br><br>Current iteration = 4<br>Metric value = 329.867<br><br>Current iteration = 5<br>Metric value = 394.653<br><br>



Current iteration = 6<br>Metric value = 321.353<br><br>Current iteration = 7<br>Metric value = 376.426<br><br>Current iteration = 8<br>Metric value = 309.734<br><br>Current iteration = 9<br>Metric value = 354.27<br><br>          Probe Tag    Starts    Stops             Time (s)<br>



        Registration           1            1           73.3319<br>[INFO]::Registered image saved!<br><br>[INFO]::Starting Registration<br>Current iteration = 0<br>Metric value = 300.254<br><br>Current iteration = 1<br>Metric value = 522.97<br>



<br>Current iteration = 2<br>Metric value = 318.137<br><br>Current iteration = 3<br>Metric value = 386.045<br><br>Current iteration = 4<br>Metric value = 316.046<br><br>Current iteration = 5<br>Metric value = 381.835<br>


<br>
Current iteration = 6<br>Metric value = 300.562<br><br>Current iteration = 7<br>Metric value = 354.384<br><br>Current iteration = 8<br>Metric value = 286.474<br><br>Current iteration = 9<br>Metric value = 330.641<br><br>


          Probe Tag    Starts    Stops             Time (s)<br>
        Registration           1            1           72.7789<br><br><br><br><br><br>
<br></div></div>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at: <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><font color="#888888"><br><br clear="all"><br>-- <br>Karthik Krishnan<br>R&amp;D Engineer,<br>Kitware Inc.<br>Ph: 518 881 4919<br>Fax: 518 371 4573<br>
</font></blockquote></div></div></div><br>
<br>_____________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at<br>
<a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ITK FAQ at: <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
<br></blockquote></div><br>