<br>Hi Anja,<br><br>Let me correct a statement from my previous email:<br><br> &quot;  When you say &quot;non-rigid&quot; we assume that you are talking<br>
     about a transformation that doesn&#39;t preserve angles.<br>
     This includes : Affine and Similarity Transforms&quot;<br><br><br>This is not quite correct.<br><br>A better description could be:<br><br>    * A rigid transformation preserve distances<br><br>Therefore Similarity transforms and Affine transforms<br>
are not (necessarily) rigid.<br><br>Similarity transforms, being a combination of rotations, <br>translation and uniform scaling,  will preserve angles,<br>but not distances.<br><br>Affine transforms, being a combination of rotations<br>
translations, non-uniform scaling and shearing, may<br>not preserve angles nor distances. They only map<br>straight lines into straight lines.<br><br><br>      Luis<br><br><br>------------------------------------------------------------------<br>
<div class="gmail_quote">On Sat, Jun 20, 2009 at 10:39 AM, Luis Ibanez <span dir="ltr">&lt;<a href="mailto:luis.ibanez@kitware.com">luis.ibanez@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;">
<br>
Hi Anja,<br>
<br>
What you describe, could be a potential way of implementing<br>
a registration process, but may not be necessarily efficient.<br>
<br>
<br>
You really should identify better the components of a registration<br>
problem.<br>
<br>
<br>
<br>
A) Transform:<br>
<br>
   When you say &quot;non-rigid&quot; we assume that you are talking<br>
   about a transformation that doesn&#39;t preserve angles.<br>
   This includes : Affine and Similarity Transforms.<br>
<br>
<br>
<br>
B) Interpolator:<br>
<br>
   The role of the interpolator is to restore continuity<br>
   on the moving image, so that you can query values in<br>
   non-grid positions. This is needed regardless of the<br>
   type of transform.<br>
<br>
   Unless you are dealing with a Transform limited to<br>
   translations parallel to the image axis moving at<br>
   jumps that are multiple of the pixel spacing and, both<br>
   of your images has the same direction, and their origins<br>
   are separated by an integer multiple of the pixel spacing....<br>
<br>
<br>
<br>
C) The Optimizer itself doesn&#39;t compute the Similarity Metric.<br>
   That&#39;s indeed the role of the Metric classes. The Optimizer<br>
   only chooses the location of the parametric space in which<br>
   the Metric (Cost Function) must be evaluated. The computation<br>
   itself is done by the Metric classes.<br>
<br>
<br>
<br>
D) In the ITK implementation, there is no (explicit) resampling<br>
   of the moving image at every stage of the registration.<br>
<br>
   The reasons for not doing so are:<br>
<br>
   1) It would require extra memory<br>
<br>
   2) The image will degrade (lose high spatial frequencies)<br>
      after passing through a series of multiple resamplings.<br>
<br>
<br>
-------------------------------------------------------------<br>
<br>
<br>
It seems that you are interested in understanding the<br>
implementations of deformable registration in ITK.<br>
<br>
There are three main versions:;<br>
<br>
<br>
1) B-Spline Transforms (standard registration framework)<br>
2) Dense Fields (Demons and its variants which are all PDE-based)<br>
3) FEM (in which the image space is modeled as an elastic material).<br>
<br>
<br>
Are you interested in particular in one of these specific methods ?<br>
<br>
<br>
<br>
   Please let us know,<br>
<br>
<br>
     Thanks<br>
<br>
<br>
        Luis<br>
<br>
<br>
-------------------<div><div></div><div class="h5"><br>
Anja Ende wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello,<br>
<br>
Thanks guys. It really helps.<br>
<br>
So, I am guessing when yoou are going non-rigid registration (say<br>
using free form deformation), then the registration algorithm would<br>
use something like B-splines to control the transformation of the<br>
input image. Then when optimizer computes the similarity matrix, it<br>
would resample the transformed image onto a regular grid and then run<br>
the similarity measure.<br>
<br>
Is this a correct interpretation?<br>
<br>
</blockquote>
</div></div></blockquote></div><br>