[Insight-users] Optimizer reproducibility
Jan Schreiber
Jan.Schreiber at umit.at
Wed Apr 6 10:09:46 EDT 2005
Hi,
for the registration of 2d x-ray images, I am using a combination of
itk::CenteredAffineTransform< double, 2 > TransformType;
itk::RegularStepGradientDescentOptimizer OptimizerType;
itk::LinearInterpolateImageFunction< MovingImageType, double >
InterpolatorType;
itk::MultiResolutionImageRegistrationMethod< FixedImageType,
MovingImageType > RegistrationType;
itk::RecursiveMultiResolutionPyramidImageFilter< FixedImageType,
FixedImageType > FixedImagePyramidType;
itk::RecursiveMultiResolutionPyramidImageFilter< MovingImageType,
MovingImageType > MovingImagePyramidType;
itk::MattesMutualInformationImageToImageMetric< FixedImageType,
MovingImageType > MetricType;
itk::ImageMaskSpatialObject<2> MaskType;
Strangely, I get different results when performing the registration
several times.
More in detail:
* When starting the application and executing the registration process,
restarting the application and doing the registration again, produces
the same results. *fine*
* When starting the registration, executing the registration and
executing it again without a restart, I get different results.
*frightening*
-> Having not initialized everything?
I wrote a little test program, that instantiates and loads the images,
instantiates my registration class and executes the registration -
several times. Every time, the images and registration are instantiated
with ::New() and the images are freshly loaded - I get different
results. *frustrating*
Can anyone explain that?
Is it a subject of optimizer initialization? - Can I influence it?
The metric value of the first registration is not the smallest - so it
seams to be a local minimum only...
I would be very glad for any hints to get a reproducible registration
with a more reliable minimum found by the optimizer.
Thanks in advance,
Jan
P.S.: the Doxygen Documentation
http://www.itk.org/Doxygen16/html/classitk_1_1MattesMutualInformationImageToImageMetric.html
tells in the detailed description, that "The method GetValue() computes
of the mutual information..." but the ItkSoftwareGuide-2-0-0 says that
the MattesMutualInformationImageToImageMetric "computes the negative
mutual information"...
More information about the Insight-users
mailing list