[Insight-users] Setting up FEM - Registration parameters

Markus Weigert m.weigert at fz-juelich.de
Thu Apr 6 10:15:19 EDT 2006


Hi Nick,

thanks a lot for your help. I will try it with your values again.
Can you perhaps explain the parameters alpha and gamma
a little bit more detailed for me, since I didn't find information about the real meaning of these parameters.
Nearly all the posts only deal with elasticity and rho.

Another question is:
If I change elasticity to 1.0e4 and Rho to 1.0e4, than the deformations should
even become bigger (I used 1.0e5 and the deformation is already much to high).

Also one has to specify rho and rhoc in the filter, but as far as I remember, rhoC should always
be approx. 1.0 and equals elasticity divided by rho (or vice versa), so why is it specified separately?

Best regards,
Markus


  ----- Original Message ----- 
  From: Nicholas Tustison 
  To: Markus Weigert 
  Cc: insight-users at itk.org 
  Sent: Thursday, April 06, 2006 3:28 PM
  Subject: Re: [Insight-users] Setting up FEM - Registration parameters


  Hi Markus,


  The registration scenario you describe seems reasonably straightforward.  However, there are a couple of items I noticed from the images that you might want to change.  Generally, you want to keep alpha = 0.5 (as opposed to 1.0) so that the solution is stable for the time step that you choose.  The chosen material governs the regularization of your registration results.  The default values that I have are Elasticity = 1.0e4 and Rho = 1.0e4 which give me reasonable registration results.  You should be able to achieve reasonable results using the specified elastic material.  Unfortunately, without running the registration myself, it is difficult to know exactly what the problem is.  


  On a related note, it is interesting that you chose to forgo the .config file.  I actually rewrote the itkFEMRegistrationFilter and plan to include it in an upcoming release along with additional modifications and extensions to the library (including B-spline elements).  The first thing I got rid of was the .config file along with some parameters that weren't being used.


  Nick Tustison 






  On Apr 6, 2006, at 7:36 AM, Markus Weigert wrote:


    Hi,

    after scanning the list on FEM - registration, I still have huge problems 
    to configure the paramters for my specific registration problem with the FEM - method.

    I want to register two 3D MR 256^3 Thorax images with only small deformation.
    The problem is, that however I set the parameters elasticity and rho / rhoc,
    it doesn't deliver any useful results.

    I started with elasticity 100000 (even higher than in the examples), but the image became completely
    deformed. Also, it spends only 2 iterations in the process (has this something to do with
    the energyreductionfactor???) and after the registration, the metric (I use SSD) is much bader then before.
    I think this should not be the case, after what I understood about the theory behind this method.
    Also with elasticity 1000.000, it still gets completely deformed.
    With even higher the deformation decreases of course, but the missregistration of the lungs is never
    caught (see middle of the images at the bottom of this message).

    Please note, that I don't use a config file but set all the parameters manually.
    Also I wonder what's the meaning of the parameters alpha and gamma (changing  these doesn't
    seem to have a great effect on the result).

    Indeed, I call the following methods to setup the FEMRegistrationFilter (public functions),
    while I didn't find a function to set the scaling, which is also used in the config file (is this intended???): 

      m_registrationFilter->SetFixedImage(m_fixedImage);
      m_registrationFilter->SetMovingImage(m_floatingImage);

      m_registrationFilter->DoMultiRes(true);    

      m_registrationFilter->SetMeshPixelsPerElementAtEachResolution(this->m_meshPixPerElement);

      m_registrationFilter->SetNumberOfIntegrationPoints(this->m_numberOfIntegrationPoints);

      m_registrationFilter->SetRho(this->m_rho);

      m_registrationFilter->SetElasticity(this->m_elasticity);
      
      m_registrationFilter->SetGamma(this->m_gamma);
      
      m_registrationFilter->SetWidthOfMetricRegion(this->m_widthOfMetricRegion);
      m_registrationFilter->ChooseMetric((int) this->m_metric);
      m_registrationFilter->SetMaximumIterations(this->m_maxNumberOfIterations,0);

      m_registrationFilter->SetTimeStep(this->m_timestep);
      m_registrationFilter->SetLineSearchMaximumIterations(this->m_maxLineSearchIterations);
      m_registrationFilter->SetEnergyReductionFactor(this->m_energyReductionFactor);
      
      if(m_metric==3) m_registrationFilter->SetDescentDirectionMaximize();
      else{ m_registrationFilter->SetDescentDirectionMinimize();}
      
      m_registrationFilter->SetAlpha(this->m_alpha);
      m_registrationFilter->DoLineSearch(2);
      m_registrationFilter->EmployRegridding(1);
      m_registrationFilter->UseLandmarks(false);
      m_registrationFilter->SetWriteDisplacements(false);

    Also what is about the material properties:
    Does it make sense to change something here??? 

     itk::fem::MaterialLinearElasticity::Pointer m;
      m = itk::fem::MaterialLinearElasticity::New();
      m->GN = 0;                  // Global number of the material
      m->E = m_registrationFilter->GetElasticity();  // Young's modulus -- used in the membrane
      m->A = 1.0;                 // Cross-sectional area
      m->h = 1.0;                 // Thickness
      m->I = 1.0;                 // Moment of inertia
      m->nu = 0.;                 // Poisson's ratio -- DONT CHOOSE 1.0!!
      m->RhoC = this->m_density;  // Density
      
      // Create the element type 
      Element3DType::Pointer e1=Element3DType::New();
      e1->m_mat=dynamic_cast<itk::fem::MaterialLinearElasticity*>( m );
      m_registrationFilter->SetElement(e1);
      m_registrationFilter->SetMaterial(m);


    Additionally, you can find some screenshots which show the problem and the RegistrationFilter
    outputs here:

    http://www.markusweigert.de/images/E10%5E8_FEMRegOutput_iter2.jpg
    http://www.markusweigert.de/images/E10%5E8_FEMRegOutput_iter1.jpg
    http://www.markusweigert.de/images/before_registration.jpg
    http://www.markusweigert.de/images/E10%5E8_FEMRegOutput_iter2.jpg
    http://www.markusweigert.de/images/result_E100000.jpg
    http://www.markusweigert.de/images/result_E1000000.jpg
    http://www.markusweigert.de/images/result_E10000000.jpg


    I hope somebody will have the time to answer at least some of my questions.


    Best regards,
    Markus







    _______________________________________________
    Insight-users mailing list
    Insight-users at itk.org
    http://www.itk.org/mailman/listinfo/insight-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20060406/8cd5f4d1/attachment.htm


More information about the Insight-users mailing list