[Insight-users] SetMaxIterations(0) still computes
Emma Ryan
eryanvtk at yahoo.com
Thu Aug 9 01:35:23 EDT 2007
Hi,
I'm trying to debug my rigid registration program and the first step is to reduce the number of iterations.
So I set it to 0, but when I execute my program it still shows me several iterations. Any clue as to why this might be happening ?
Here is the output of the optimizer (segment 1). As you can see, NumberOfIterations = 0 . The StopCondition which I thought would be 0 is 5. So based on this and other experiments, I have a few questions.
1. Shouldn't the StopCondition be 0 ?
2. If optimizer->SetNumberOfIterations(0), then what do the following iterations represent and where do they come from ?
3. Also, it I set the NumberOfIterations to some otehr number such as 100000, it still performs 500 iterations (the default value from the example programs)
4. The Mean Square error metric that I compute on Binarized input images is the same as that computed on grayscale images. So what I am doing here is that I convert the grayscale images to binary. ie. Every tissue, except bone is black. Then I use these binary images for registration. The metric value returned by the registration process is compared against the metric value obtained by applying the same transform on original grayscale images and checking the mean squared error. Surprisingly these two values are EXACTLY the same. I expect them to be different for obvious reasons.
The way I compute the metric on the original grayscale images is shown below under segment 2
What is going on ?
Any clue ?
Thanks in advance
Emma
SEGMENT 1
---------------
VersorRigid3DTransformOptimizer (019220B8)
RTTI typeinfo: class itk::VersorRigid3DTransformOptimizer
Reference Count: 2
Modified Time: 874
Debug: Off
Observers:
none
InitialPosition: []
CurrentPosition: []
Scales: [1, 1, 1, 0.001, 0.001, 0.001]
MaximumStepLength: 0.2
MinimumStepLength: 0.001
RelaxationFactor: 0.5
GradientMagnitudeTolerance: 0.1
NumberOfIterations: 0
CurrentIteration: 0
Value: 0
Maximize: 0
CostFunction: (None)
CurrentStepLength: 0
StopCondition: 5
Gradient: []
0 1976.47 [0.000460224, -0.0157202, -0.041473, -6.58714, -9.17326, 0.231981]
1 669.48 [0.00152886, 0.00402301, -0.0345613, -6.60421, -9.36806, 0.229234]
2 576.079 [-0.000710302, -0.0100887, -0.0583703, -6.5576, -9.55443, 0.227974
]
3 895.329 [0.0024751, 0.017149, -0.0188799, -6.6526, -9.70157, 0.236332]
4 1454.49 [0.000779181, 0.00262768, -0.0415692, -6.57818, -9.73974, 0.226865
]
5 208.619 [-0.000462126, -0.00352645, -0.0488536, -6.56913, -9.83714, 0.2190
21]
6 320.494 [0.00156166, 0.00864248, -0.0314357, -6.61138, -9.91627, 0.207684]
7 724.278 [0.000322199, -0.00121238, -0.0455856, -6.58293, -9.93788, 0.20247
4]
8 143.422 [0.000259716, 0.00266556, -0.0399937, -6.59857, -9.98223, 0.192322
]
9 223.3 [-0.000310048, -0.004876, -0.0507685, -6.57875, -10.018, 0.180773]
10 419.74 [0.00029441, 5.14277e-005, -0.0436893, -6.59453, -10.026, 0.177275
]
1
.......
SEGMENT 2
MetricType::Pointer metricOrig = MetricType::New();
metricOrig->SetInterpolator(interpolator);
metricOrig->SetTransform(transform);
metricOrig->SetFixedImage(fixedImageReaderOrig->GetOutput());
metricOrig->SetMovingImage(movingImageReaderOrig->GetOutput());
metricOrig->SetTransformParameters(finalParameters);
MetricType::TransformParametersType finalParam = registration->GetLastTransformParameters();
std::cout<<" MetricOnOriginalImage = "<<metric->GetValue(finalParam)<<std::endl;
____________________________________________________________________________________
Moody friends. Drama queens. Your life? Nope! - their life, your story. Play Sims Stories at Yahoo! Games.
http://sims.yahoo.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20070808/5c247d5e/attachment-0001.html
More information about the Insight-users
mailing list