[Insight-users] MultiResMIRegistration

Christos Panagiotou C.Panagiotou at cs.ucl.ac.uk
Mon Jun 7 01:19:45 EDT 2004


Dear Luis

according to a previous suggestion of yours the translation scale in registration of volumes, using ITK should be equal to the following:

1.0 / 10 * sqrt(x^2+y^2+z^2) where 10 is a "magic factor"
and x,y,z are the dimensions of the volume with the largest dimensions

i have the following two implementation/testing questions regarding the above:

In MultiResMIRegistration/MIMApplicationBase.txx 

at the end of the .txx file we can find the following lines of code:

  double scale = 1.0 / vnl_math_sqr( m_Parser->GetTranslationScale() );              
  m_Registrator->SetTranslationScale( scale );

1.first of all the "magic factor" 10x is missing
2.from the sample inputs found in the application i would quote for example the SampleInputs/PracPETToPD.txt where the max dimensions are 256x256x26 (the second is 128x128x15)

however in this sample input file the choice of the translation scale is "320" 

well 256^2+256^2+256^2 = 131748
and its square root is 362.9711
its almost like doing sqrt(sqrt(256^2+256^2+26^2))


anyway the 3 parameters of the transformation matrix which represent translations are set to "scale" as calculated above

A. is there a problem with MIMApplicationBase.txx way of calculating the scale?
B. what happens with the sample inputs examples? the input is 320 however shouldn't be 131748?
C. how these examples worked in the first place if there is a problem in the above
D. well generaly should people play with the translation scale or should it be fixed always to 1.0 / 10 * sqrt(x^2+y^2+z^2) ?

---------

and something else

well i ve tried the application already in medical data and has given me some good results however i need to test it for simpler examples.

i ve tried to register a binary cube against a binary paralelogram (background 0, shape (filled) - not just the shell) 255) however the results are almost there
the cube deforms to something like a sheared paralelogram.

the above is not a multi-modal registration but the algorithm should be able to cope with it with any choice of optimizer and metric implementation (viola or mattes)
i ve also tried to "simulate" multi-modality by applying different smoothing-filters to the shapes but i could not get any better results.

E. could you suggest me some simple tests that i can test the algorithm on?
F. as you ve told me the mutual info metrics are very noisy. Well they are noisy and most of the time they look like very very dense dirac-functions (even in tests i did on medical data - which worked well). what i plot is the metric->GetValue() vector against iterations.

is there something else that i could do so i would see the expected curve? i mean for my medical tests - which worked ok,the curve should have looked like an ROC curve (maximization of MI metric) but it looks like dirac, so i cannot really use it to optimize my parameters.

a recent answer of yours in the above was: 

"Note that you should differentiate if the metric plots are
noisy because the metric itself is noisy in the parametric
space or because the path that the optimizer is walking is
so random that the metric picks values from very different
locations and therefore generates and uncorrelated pattern
when you plot metric values versus iterations."

do you mean the derivative values returned by the getValueAndDerivative() method of the metric?


sorry for the long post
thanks again
christos








More information about the Insight-users mailing list