[Insight-users] Setting up FEM - Registration parameters

Nicholas Tustison ntustison at gmail.com
Thu Apr 6 10:38:30 EDT 2006


Alpha is used solely by the solver routine  
(itkFEMSolverCrankNicolson) and determines the relative weighting of  
previous solutions in calculating the current solution.  Perhaps  
looking  at the header of the specified class will give you more  
insight.  Gamma is used in a single place in the registration filter  
for updating the current solution.  I'd have to ask my colleague  
(who, unfortunately, is not here at the moment) regarding it's use.   
However, I do know that the default value should be 1.0 and that  
should be adequate for most applications.

You're right about the elasticity and rho parameters.  Try altering  
the time step for that could have a similar effect.   Regarding RhoC  
--- it is used only in the material class.  I'll have to look closer  
to see if we can dispense with its specification and simply derive it  
from Rho and E.

Nick


On Apr 6, 2006, at 10:15 AM, Markus Weigert wrote:
> 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:2PM
> 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/a3bb2f33/attachment.htm


More information about the Insight-users mailing list