Almost all registration methods check if they&#39;ve been halted/aborted after every iteration and then return with the last computed parameters.<br><br>The base class itk::FiniteDifferenceImageFilter &#39;s GenerateData() method looks like this :
<br><br>while (!this-&gt;Halt())<br>{<br>&nbsp; // Do interation<br>}<br><br>You will just need to override this method in your registration method to check for some flag, just like PDEDeformableRegistration::StopRegistration() does .
<br><br><br>-- <br>Karthik Krishnan<br>R&amp;D Engineer,<br>Kitware Inc.<br><br><div><span class="gmail_quote">On 11/11/07, <b class="gmail_sendername">Monica Hernandez</b> &lt;<a href="mailto:mhg@unizar.es">mhg@unizar.es
</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Dear ITK users,<br><br>I am working with a child class of a PDEDeformableRegistrationFilter
<br>that uses a sum of squared differences of the images for the energy<br>metric. I would like to stop registration when some condition on the<br>energy curve is hold. In order to do that, my idea was to create a<br>Command Observer in order to track the energy values and see if my
<br>condition holds and stop registration by invoking stopping registration<br>methods. The code would look like something like this<br><br>void Execute(const itk::Object * object, const itk::EventObject &amp; event)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const MyPDERegistrationFilterType * filter = dynamic_cast&lt;<br>const MyPDERegistrationFilterType * &gt;( object ) ;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( cond )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout &lt;&lt; &quot;Stopping algorithm at iteration &quot; &lt;&lt;
<br>filter-&gt;GetElapsedIterations() - 1 &lt;&lt; &quot;. Condition holds.&quot; &lt;&lt;endl;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Here I would like to invoke to a method stopping registration<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>Can registration classes at ITK be &quot;externally&quot; stopped?
<br>If so, what is the correct way of doing that?<br>If not, what could be an alternative way?<br><br>Thank you very much in advance.<br>Monica Hernandez.<br><br>_______________________________________________<br>Insight-users mailing list
<br><a href="mailto:Insight-users@itk.org">Insight-users@itk.org</a><br><a href="http://www.itk.org/mailman/listinfo/insight-users">http://www.itk.org/mailman/listinfo/insight-users</a><br></blockquote></div>