<DIV>
<DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">
<DIV>Hi Edi,</DIV>
<DIV>&nbsp;</DIV>
<DIV>I actually went ahead and installed ITK 1.8.0 and tried to integrate the new optimizer. However the program just runs through without doing anything (not even going through any iterations) if I have the following code:</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; typedef itk::LBFGSBOptimizer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OptimizerType;<BR>&nbsp; <BR>&nbsp; typedef itk::MeanSquaresImageToImageMetric&lt; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FixedImageType, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MovingImageType &gt;&nbsp;&nbsp;&nbsp; MetricType;</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; MetricType::Pointer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; metric&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = MetricType::New();<BR>&nbsp; OptimizerType::Pointer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; optimizer&nbsp;&nbsp;&nbsp;&nbsp; = OptimizerType::New();</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;// optimizer-&gt;SetCostFunction( metric.GetPointer() );</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp; const double F_Convergence_Factor&nbsp; = 1e+7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Function value tolerance<BR>&nbsp; const double Projected_G_Tolerance = 1e-5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Proj gradient tolerance <BR>&nbsp; const int&nbsp;&nbsp;&nbsp; Max_Iterations&nbsp;&nbsp; =&nbsp;&nbsp; 100; // Maximum number of iterations</DIV>
<DIV>&nbsp; optimizer-&gt;SetCostFunctionConvergenceFactor( F_Convergence_Factor );<BR>&nbsp; optimizer-&gt;SetProjectedGradientTolerance( Projected_G_Tolerance );<BR>&nbsp; optimizer-&gt;SetMaximumNumberOfIterations( Max_Iterations );<BR>&nbsp; optimizer-&gt;SetMaximumNumberOfEvaluations( Max_Iterations );</DIV>
<DIV><BR>&nbsp; const unsigned int SpaceDimension = 5;</DIV>
<DIV><BR>&nbsp; OptimizerType::BoundValueType lower(SpaceDimension);<BR>&nbsp; OptimizerType::BoundValueType upper(SpaceDimension);<BR>&nbsp; OptimizerType::BoundSelectionType select(SpaceDimension);</DIV>
<DIV><BR>&nbsp; lower.Fill( -5 );<BR>&nbsp; upper.Fill( 5 );<BR>&nbsp; select.Fill( SpaceDimension );</DIV>
<DIV>&nbsp; optimizer-&gt;SetLowerBound( lower );<BR>&nbsp; optimizer-&gt;SetUpperBound( upper );<BR>&nbsp; optimizer-&gt;SetBoundSelection( select );</DIV>
<DIV><BR>However if I uncomment the line:&nbsp;optimizer-&gt;SetCostFunction( metric.GetPointer() );</DIV>
<DIV>then it crashes when it tries to access m_transform within itk::MeanSquaresImageToImageMetric. I am wondering how I can include the cost function (since it doesn't seem to do anything otherwise)&nbsp;and am I doing something else wrong that is causing the optimizer to have no effect. </DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks again and sorry for the repeated questions but I have been trying to get this thing to run for a long time!<BR></DIV>
<DIV>Robert</DIV>
<DIV><BR><B><I>Eduard Schreibmann &lt;eduards@stanford.edu&gt;</I></B> wrote:</DIV>
<BLOCKQUOTE class=replbq style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">
<DIV>
<DIV>Hi Robert.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I think it is a fairlly new adition to ITK, even newer than 1.8 maybe. it appeared&nbsp;suddenly in the latest manual documentation.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Attached is the code from my computer, maybe you can get along without compiling, by just adding itkLBFGSB files to your project (that is compiling it in your oproject rather than in the ITK library). It is not an elegant solution but&nbsp;I think it&nbsp;may work, and anyway it is not a big deal to try this before recompiling ITK. There is also an example of how to set limits. With my images, I had problems with LBFGSB because it was not making many iterations. it took days to find out it is important to use a good BSpline interpolator, so if you have problems with LBFGSB not converging, it may be that you need a good interpolator&nbsp;&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV>Cheers and good luck with the code.</DIV>
<DIV>Edi</DIV>
<DIV>&nbsp;</DIV>
<DIV>Edi<BR><BR></DIV></DIV></BLOCKQUOTE></BLOCKQUOTE></DIV></DIV><p>
                <hr size=1>Do you Yahoo!?<br>
<a href="http://us.rd.yahoo.com/mail_us/taglines/aac/*http://promotions.yahoo.com/new_mail/static/ease.html">Yahoo! Mail Address AutoComplete</a> - You start. We finish.