[Insight-developers] ImageRegistration2 example revisited
Lydia Ng
lng at insightful . com
Wed, 11 Jun 2003 11:22:00 -0700
This is following up on the issues we have been having with
ImageRegistration2 example.
This example uses:
MutualInformationImageToImageMetric (Viola/Wells)
TranslationTransform
LinearInterpolateImageFunction
GradientDescentOptimizer
The two input images are:
BrainT1SliceBorder20.png (fixed)
BrainProtonDensitySliceBorder20.png (moving)
The two images are misaligned by (13,17) pixels.
I have been playing around with parameters. For each set of parameters,
the registration was performed 100 times.=20
Before each registration, a call is made to vnl_sample_reseed=20
to reseed the random number generator with the current time (Win2K,VC6).
The number of experiments where the results is within 1 pixel and within
0.5 pixel of the true solution was counted.
---------------
Experiment #1:
Using the existing parameters: parzenWindow =3D 0.4, learningRate =3D =
20.0,
numIterations =3D 200
#registration within 1 pixel =3D 39
#registration within 0.5 pixel =3D 14
---------------
Experiment #2:
Same as #1 but increase the parzenWindow to 1.0
#registration within 1 pixel =3D 7
#registration within 0.5 pixel =3D 4
----------------
Experiment #3:
Same as #2 but reset parzenWindow to 0.4 and
preprocess both fixed and moving images with Gaussian (stddev =3D 1.0)
#registration within 1 pixel =3D 91
#registration within 0.5 pixel =3D 53
----------------
Experiment #4:
Same as #3 but increase smoothing stdDev to 1.5.
#registration within 1 pixel =3D 99
#registration within 0.5 pixel =3D 72
----------------
Experiment #5:
Same as #4 but increase parzenWindow to 1.0.
#registration within 1 pixel =3D 0
#registration within 0.5 pixel =3D 0
---------------
Experiment #6:
Same as #5 but reset parzenWindow to 1.0 and
decrease learningRate to 10.0
#registration within 1 pixel =3D 88
#registration within 0.5 pixel =3D 76
---------------
Experiment #7:
Same as #6 but increase numIterations to 400
#registration within 1 pixel =3D 100
#registration within 0.5 pixel =3D 88
-----------------------------------------
In this example, it looks like low-pass filtering the images is very
critical for robustness. We can probably do better on the number within
0.5 pixel if we further reduce the learning rate and continue for more
iterations.=20
NB: In the multi-resolution example low-pass filtering is done
implicitly when creating the downsampled images.
I think I will modify the example in the software guide to include the
low-pass filtering. Since this is meant to be "simple" example, I will
probably just stick to one learning rate.
In any case, this will not be a good example to regression test using
image differences. I will also add a note in the software guide to say
due to the difference in the random number generator that the actual
results a user get might be different and in some cases may get stuck in
a local minima.
- Lydia