Fwd: [Insight-users] Setting up FEM - Registration parameters
Nicholas Tustison
ntustison at gmail.com
Thu Apr 6 09:40:58 EDT 2006
> 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/a0ecf684/attachment.htm
More information about the Insight-users
mailing list