[Insight-users] MultiResMIRegistration - QuaternionRigid 2 Affine (3)

Christos Panagiotou C.Panagiotou at cs.ucl.ac.uk
Tue, 23 Mar 2004 00:23:52 +0000


Dear Luis

thanks once again for your very detailed response
I will try and implement you suggestions as i am very interested to see 
their results.

I would like to ask some further questions just to clarify some things:
what i ve succeeded to implement at this point is have the volumes 
centered and
rotated (this is probably due to the effects of the centerer. I ve 
"played" with the tunning parameters
of the registration and I can see some scaling effects (it looks more 
like isotropic scaling) however i dont seem to
get and direction specific scaling. For example the optical volume is 
smaller in size and narrower in the x-axis.
After the centering of the volumes i ve tried various learning rates, 
standard deviations, iterations and even number of samples
(even if you suggest 50 - 80 is enough) and the registration output 
somehow registers either the top of the skulls in both volumes (without 
however
expanding the x-axis of the small volume to "match" the whole extend of 
the skull in the bigger one)
OR it moves the smaller volume (OT) and registers the front part of the 
head (fase) (registers the noses and the forehead :) ).
For a better result I expect an unisotropic scaling in the x-axis so the 
back of the OT volume would expand to fit the back of the skull in the 
MRI volume.
However I wouldn't want to force this x-axis scaling by myself.

Is this a problem of chosing the tunning parameters? if i dramaticaly 
increase the number of samples would this give me a better result?
I tried something like 1000 however i get the exception of "all points 
mapped outside of the volume" even if i use the SAME learning
rates, iterations, standard deviations and shrink levels with a working 
example which differs only in the number of samples.

Anyway at this moment I would like to try and implement what you ve 
suggested and come back with more accurate questions...

At the end of the day my goal is to achieve a deformable registration 
between the two volumes, however I ask all these as I try to
get familiar and have aceptable results with the affine version before i 
move to the deformable one.

Thank you very much for your replies and your tolerance

Regards
Christos






Luis Ibanez wrote:

>
> Hi Christos,
>
>
> You are right, I overlooked the fact that you are using
> the code of the MultiResMIRegistration application, and
> this application already takes care of repositioning the
> image origins. So, you don't really need the CenteredAffine
> transform or the CenteredTransformInitializer in this case.
>
> If you already managed to register for translation and
> orientation, what you can do now is to take the resulting
> parameters of your current registration and multiply all
> the components in the Matrix (not in the translation vector)
> with a values representing the expected scaling.  Notice
> that the transform is the one mapping coordinates from the
> fixed image (MRI) to the moving image (your OT).  So you
> probably want to multiply by a value such as 0.8 or 0.7.
>
> Also, in order to disable the translations you can use a
> translation scaling vector with large values for the
> components of the translation vector (components 10, 11
> and 12).  You could set them to 10.0 for example.  This
> will result in those components being attenuated during
> the optimization cycle.
>
>
> Note that you could also (in this second run), replace the
> AffineTransform with the ScaleTransform and focus exclusively
> in scaling the image.  For this purpose it may be more convenient
> to use the resampled moving image resulting from the current
> registration in which you already succeed in correcting for
> translation and rotation.
>
>
> When optimizing for scaling you have to keep in mind that
> learning rates result in values being added to the scaling
> parameters (not multiplied with them), so you don't want
> to use any large step like "1.0" which in terms of scaling
> means that you can initialize with scaling 1.0, and in the
> next iteration try: 1.0 + 1.0 = 2.0 as scale factor, which
> be too much of a sudden change.
>
>
>
>
>   Regards,
>
>
>
>      Luis
>
>