[Insight-users] Multi-resolution deformable registration
Luis Ibanez
luis . ibanez at kitware . com
Thu, 27 Nov 2003 22:11:33 -0500
Hi Corinne,
A) When you use the multi-resolution option you should set
the paramters in the following lines:
% ---------------------------------------------------------
% Parameters for the single- or multi-resolution techniques
% ---------------------------------------------------------
1 % Number of levels in the multi-res pyramid (1 = single-res)
1 % Highest level to use in the pyramid
1 1 % Scaling at lowest level of pyramid
Let's say that you want a pyramid of three levels with images that
are scaled by 1X, 2X, 4X. Note that the pyramid is preset for
generating power of 2 for the scaling. That is, every level is
alway half size of the previous one.
The data that you need to setup in the configuration file
will look like:
% ---------------------------------------------------------
% Parameters for the single- or multi-resolution techniques
% ---------------------------------------------------------
3 % Number of levels in the multi-res pyramid (1 = single-res)
3 % Highest level to use in the pyramid
4 4 % Scaling at lowest level of pyramid
You will find details on how these parameters are used
in the registration process by looking at the code in
Insight/Code/Algorithms/itkFEMRegistrationFilter.txx
on the method MultiResSolve() line 1812.
Just like Tchaikovsky's symphony,... pure coincidence :-)
B) The code that parses the configuration file for the
deformable FEMRegistration algorithm is available in
Insight/Code/Algorithms/itkFEMRegistrationFilter.txx
in the method ReadConfigFile() lines 336-543.
The configuration file line concerning your question
"0 0.99 % Similarity metric (0=mean sq, 1 = ncc,
2=pattern int,> 3=MI, 5=demons)
is parsed in code lines 427-430.
The first code is an identified of the image metric
used for comparing the matching between block of the
fixed and moving images. You will find descriptions
of this metrics in the SoftwareGuide
http://www . itk . org/ItkSoftwareGuide . pdf
Section 8.9, pdf-pages 308-313.
If you are doing same-modality registration you should
be fine with 0= mean squares metric.
If your are doing multi-modality registration you should
go with 3= Mutual Information (MI).
The second value on the line = 0.99 is actually not being
used. It was intended to normalize the gradients of the
metrics. The reason for doing so is that the metrics have
different dynamic ranges. For example mean squares goes
from zero to any positive value, Mutual Information goes
from zero to one, Normalized correlation goes from -1 to zero.
There is room for improvement in this region of the code...
In the meantime, simply ignore the second parameter.
C) About the encoding of the deformation field, this also
have room for improvement. I agree with you in that it
should carry over the origin and spacing of the fixed
image.
This has just been fixed by adding the lines
m_Field->SetSpacing( m_FixedImage->GetSpacing() );
m_Field->SetOrigin( m_FixedImage->GetOrigin() );
to the method InitializeField() in itkFEMRegistrationFilter.txx
lines 1055.
D) The displacement field also should be output in a single
multi-component image with format
XYZXYZXYZ....
instead of the current approach of sending N images
each one with one of the vector components of the deformation
field.
If we output the image as above, you could use the free
and open source program ParaView (www.paraview.org) in order
to visualize the displacement vector field.
Curiously enough, it is easier to write the multi-component
image than to write the separate components. The code has
just been added by creating the new method
WriteDisplacementFieldMultiComponent()
It invocation was also added to the DeformableRegistration1.cxx
example in Insight/Examples/Registration
Note that by default we are writing the field to a file
named
"VectorDeformationField.mhd"
This is a MetaImage format file. It would be more elegant to
get this name from the configuration file...
Please let us know if you find any problems or you have
further comments. Feedback from users is fundamental for
improving the quality and usefulness of the toolkit.
Thanks a lot,
Luis
------------------------
Corinne Mattmann wrote:
> Hi,
>
> I'm trying to deformably register two 3D images: I began with the
> example "DeformableRegistration1.cxx" (femregistrationfilter) and the
> config-file "FiniteElementRegistrationParameters1.txt" and changed it
> successfully to 3D. At the moment I'm adapting the parameters and trying
> to use the multi-resolution option and there were two questions arising
> to which I can't find an answer:
> - I would like to play with the shrink factors between the different
> resolution-levels. Where can I set these values?
> - Why does the following line in the config-file have two parameters and
> what do they stand for?
> "0 0.99 % Similarity metric (0=mean sq, 1 = ncc, 2=pattern int,
> 3=MI, 5=demons)"
>
> Thanks for your answers,
> Corinne
>
> Another thing: The deformation field I get out of the filter has a
> spacing of 1 in all three directions and origin 0, although my original
> image had other values. Is there a reason to output the deformation
> field like this?
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk . org
> http://www . itk . org/mailman/listinfo/insight-users
>