Hi,<br>
<br>
I&#39;ve modified the example DeformableRegistration8.cxx in order to do a
3D DeformableRegistration. This example uses
MattesMutualInformationMetric, BSplineDeformableTransform and
LBFGSBOptimizer.<br>
<br>
I tested the code with a brain phantom generated with Matlab. The
original volume is deformed using Matlab b-spline deformation based on
this routine <a href="http://www.mathworks.com/matlabcentral/fileexchange/20057" target="_blank">http://www.mathworks.com/matlabcentral/fileexchange/20057</a>,
and I want to use the deformable registration of ITK to recover the
deformation. The next link shows two checkerboard of one slice, before
and after the succesful registration: <a href="http://img140.imageshack.us/img140/1831/phantomdeformableregist.png" target="_blank">http://img140.imageshack.us/img140/1831/phantomdeformableregist.png</a>. The original volume is set as the fixed image and the deformed phantom as the moving.<div>
<div><span id="q_1213578ece75bae2_1" class="h4">- Mostra el text citat -</span></div><div class="h5"><br>
<br>
The output of the execution is:<br>
<br>
Starting Registration<br>
0   -0.579387   0 0<br>
0   -0.581355   0 0<br>
0   -0.584345   0 0<br>
0   -0.584345   6.33911e-05 0<br>
1   -0.603649   6.33911e-05 0<br>
1   -0.603649   6.41689e-05 0<br>
2   -0.624884   6.41689e-05 0<br>
2   -0.624884   7.76054e-05 0<br>
3   -0.638071   7.76054e-05 0<br>
3   -0.638071   6.32524e-05 0<br>
4   -0.655438   6.32524e-05 0<br>
4   -0.655438   7.51525e-05 0<br>
5   -0.677776   7.51525e-05 0<br>
5   -0.677776   6.37494e-05 0<br>
6   -0.696669   6.37494e-05 0<br>
6   -0.696669   5.09743e-05 0<br>
7   -0.713613   5.09743e-05 0<br>
7   -0.713613   5.48518e-05 0<br>
... (60 iterations more)<br>
67   -0.854863   4.01611e-05 0<br>
67   -0.854863   4.01611e-05 0<br>
67   -0.854863   4.01611e-05 0<br>
67   -0.854863   4.01611e-05 0<br>
          Probe Tag    Starts    Stops             Time (s)<br>
        Registration           1            1           3289.35<br>
<br></div></div>
Next step was to test the same code with prostate MRI images but the
registration doesn&#39;t work. The original volume is a central region of
MRI to focus the registration on the prostate (<a href="http://img145.imageshack.us/img145/200/mrireal.png" target="_blank">http://img145.imageshack.us/img145/200/mrireal.png</a>),
and the same deformation, that was applied to the phantom test, is used
to deform the original prostate. The goal of the registration is the
same: recovering the deformation. The next link is a checkerboard of
one slice of the volume to show that fixed and moving images look
different enough (<a href="http://img26.imageshack.us/img26/8905/im011.png" target="_blank">http://img26.imageshack.us/img26/8905/im011.png</a>).<div class="im"><br>
<br>
In this test the program the registration stops too early doing only few iterations and the InfinityNormOfProjectedGradient is always zero:<br>
<br>
Starting Registration<br>
0   -0.742878   0 0<br>
0   -0.722791   0 0<br>
0   -0.721167   0 0<br>
0   -0.721134   0 0<br>
0   -0.733701   0 0<br>
0   -0.733701   0 0<br>
0   -0.742878   0 0<br>
0   -0.742878   0.000122748 0<br>
          Probe Tag    Starts    Stops             Time (s)<br>
        Registration           1            1           97.3459<br>
<br></div>
I have tested the registration using different values of bins
(32,64,100,etc), % samples (100, 50, ...), using the original
(0.46875,0.46875,0.46875) and the unitary spacing, different number of
grids (from 5 to 50) and the parameters of the LBFGSBOptimizer are the
following:<div class="im"><br>
<br>
  double costFunctionconvergenceFactor = 1.e7;<br>
  double projectedGradientTolerance = 1e-6;<br>
  int maxNumberOfIterations = 500;<br>
  int maxNumberOfEvaluations = 500 ;<br>
  int maxNumberOfCorrections = 5;<br>
<br></div>
Among other tests, I&#39;ve also changed the metric to MeanSquareMetric to
know if mattes mutual information metric is the problem or, separately,
the fixed and moving image have been binarized to reduce the
information of each image. The output has been the same.<br>
<br>
All the tests seem to show that the problem is the optimizer, but I
don&#39;t know how I can solve it because in some posts in the mailing list
I&#39;ve read that it is the best optimizer for deformable registration.
Should I change it for another one (Regular or LBFGS)? Any other idea?<br>
<br>
Thanks in advance.<br>
<br>
Albert