[Insight-developers] ImageRegistration2 example revisited

Lorensen, William E (Research) lorensen at crd . ge . com
Wed, 11 Jun 2003 14:33:01 -0400


Lydia,
I have removed the regression test already. Also, I changed
ImageRegistration4 to get consistent answers. I dropped the # of bins and
increased the number of samples. The text should probably reflect these
changes.

Bill

-----Original Message-----
From: Lydia Ng [mailto:lng at insightful . com]
Sent: Wednesday, June 11, 2003 2:22 PM
To: insight-dev-list
Subject: [Insight-developers] ImageRegistration2 example revisited



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. 
Before each registration, a call is made to vnl_sample_reseed 
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 = 0.4, learningRate = 20.0,
numIterations = 200

#registration within 1 pixel   = 39
#registration within 0.5 pixel = 14

---------------
Experiment #2:
Same as #1 but increase the parzenWindow to 1.0

#registration within 1 pixel   = 7
#registration within 0.5 pixel = 4

----------------
Experiment #3:
Same as #2 but reset parzenWindow to 0.4 and
preprocess both fixed and moving images with Gaussian (stddev = 1.0)

#registration within 1 pixel   = 91
#registration within 0.5 pixel = 53

----------------
Experiment #4:
Same as #3 but increase smoothing stdDev to 1.5.

#registration within 1 pixel   = 99
#registration within 0.5 pixel = 72

----------------
Experiment #5:
Same as #4 but increase parzenWindow to 1.0.

#registration within 1 pixel   = 0
#registration within 0.5 pixel = 0

---------------
Experiment #6:
Same as #5 but reset parzenWindow to 1.0 and
decrease learningRate to 10.0

#registration within 1 pixel   = 88
#registration within 0.5 pixel = 76

---------------
Experiment #7:
Same as #6 but increase numIterations to 400

#registration within 1 pixel   = 100
#registration within 0.5 pixel = 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. 

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
_______________________________________________
Insight-developers mailing list
Insight-developers at www . itk . org
http://www . itk . org/mailman/listinfo/insight-developers