Hi All, <br><br>As a newbie, I am running to an issue of how to use Demons registration correctly.  With ITK4.2, I modified the example &quot;DeformableRegistration16.cxx&quot; for 3D cases.  However, CommandIterationUpdate always prints out random metric values like 1.79769e+308. Here is part of my code:<br>
----------------------------------------------------------------------------------------------------------------------------------<br>    // Histogram matching<br>    typedef itk::HistogramMatchingImageFilter&lt;ImageType, ImageType&gt;    MatchingFilterType;<br>
    MatchingFilterType::Pointer vMatcher = MatchingFilterType::New();<br>    vMatcher-&gt;SetInput(vMovImage);<br>    vMatcher-&gt;SetReferenceImage(vFixImage);<br>    vMatcher-&gt;SetNumberOfHistogramLevels(1024);<br>    vMatcher-&gt;SetNumberOfMatchPoints(7);<br>
    vMatcher-&gt;ThresholdAtMeanIntensityOn();<br>    vMatcher-&gt;Update();<br><br>    //- Setup the deformation field and filter<br>    typedef itk::Vector&lt;float, 3&gt;            VectorPixelType;<br>    typedef itk::Image&lt;VectorPixelType, 3&gt;    DisplacementFieldType;<br>
    typedef itk::DemonsRegistrationFilter&lt;ImageType, ImageType, <br>                            DisplacementFieldType&gt;    RegistrationFilterType;<br>    RegistrationFilterType::Pointer vFilter = RegistrationFilterType::New();<br>
    vFilter-&gt;SetStandardDeviations(5.0);<br><br>    //- Create the Command observer and register it with the registration filter.<br>    CommandIterationUpdate::Pointer observer = CommandIterationUpdate::New();<br>    vFilter-&gt;AddObserver( itk::IterationEvent(), observer );<br>
<br><br>    //- Use multiresolution scheme<br>    typedef itk::MultiResolutionPDEDeformableRegistration&lt;ImageType,<br>        ImageType, DisplacementFieldType&gt;        MultiResRegistrationFilterType;<br><br>    MultiResRegistrationFilterType::Pointer vRegistration =    MultiResRegistrationFilterType::New();<br>
<br>    vRegistration-&gt;SetRegistrationFilter(vFilter);<br>    vRegistration-&gt;SetNumberOfLevels(4);<br>    vRegistration-&gt;SetFixedImage(vFixImage);<br>    vRegistration-&gt;SetMovingImage(vMatcher-&gt;GetOutput());<br>
    unsigned int nIterations[4] = {40, 40, 32, 32};<br>    vRegistration-&gt;SetNumberOfIterations(nIterations);<br><br>    //- Create the Command observer and register it with the registration filter.<br>    CommandResolutionLevelUpdate::Pointer vLevelObserver = CommandResolutionLevelUpdate::New();<br>
    vRegistration-&gt;AddObserver(itk::IterationEvent(), vLevelObserver);<br><br>    //- Apply the registration filter<br>    try<br>    {<br>        vRegistration-&gt;Update();<br>    }<br>    catch( itk::ExceptionObject &amp; excp )<br>
    {<br>        std::cerr &lt;&lt; excp &lt;&lt; std::endl;<br>        return false;<br>    }<br>----------------------------------------------------------------------------------------------------------------------------------<br>
<br>Am I wrong with anything? Thanks!<br><br>