Hi Yann,<div><br></div><div>If your initialized transform is precise (near perfect?!!) it&#39;s only natural</div><div><br></div><div>that the optimizer would change less. Have you tried to set the minimum</div><div><br></div>
<div>step length to a higher value?</div><div><br></div><div>In the example you provided the metric value is decreasing, isn&#39;t that </div><div><br></div><div>what you want?</div><div><br></div><div>Your fixed and moving images and their intensity distribution also can</div>
<div><br></div><div>effect the quality of the registration, it might be helpful to give us more </div><div><br></div><div>information about your images.</div><div><br></div><div>HTH,</div><div><br></div><div>Dawood</div><div>
<br></div><div><br></div><div>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</div>
<div><br></div><div>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</div>
<div><br></div><div><br></div><div><span class="Apple-style-span" style="font-family: &#39;Times New Roman&#39;; font-size: medium; "><pre>Hi all,

I&#39;m exploring the mattes mutual information metric with the similarity 
transform. I have big problems with the regular step gradient optimizer.

First one, I initialize the transform quite precisely, so only small 
change are required, especially for scale and rotation. But I must put 
the scaling factor to 100 000, for a maximal step length of 2 to obtain 
change around 0.01 for each step. Why is there a x100 between 2/100 000 
(what I expect to be the scaled step length) and the one which really 
append ?

Second one, the optimizer fails to minimize the metrics (the value seems 
to increase), despite the fact that minimizeOn is set, and that I see a 
clear behavior difference when maximizeOn is set.
I&#39;ve played a lot with parameters without significant improvement.
Here is an example :

0   -0.0794786   [1.08213, 0.215013, 142.753, 93.1165, 19.484, -5.38814]
1   -0.0837397   [1.09388, 0.224094, 142.734, 93.1303, 21.0015, -4.08564]
2   -0.0781118   [1.10518, 0.231022, 142.713, 93.1446, 22.5308, -2.79707]
3   -0.07013   [1.11679, 0.230021, 142.688, 93.1515, 23.5889, -1.10016]
4   -0.060149   [1.13054, 0.220847, 142.661, 93.1574, 24.6365, 0.603225]
5   -0.0533438   [1.15086, 0.197135, 142.637, 93.1682, 26.0843, 1.98246]
6   -0.0552559   [1.16682, 0.181277, 142.611, 93.1705, 27.2256, 3.62452]
7   -0.0499306   [1.17806, 0.163796, 142.586, 93.1626, 27.8154, 5.53527]
8   -0.0436633   [1.18673, 0.144479, 142.567, 93.1464, 27.8202, 7.53499]
9   -0.0373628   [1.19785, 0.129059, 142.55, 93.1295, 27.8735, 9.53404]
10   -0.0307262   [1.21034, 0.0999255, 142.53, 93.1149, 28.3516, 11.4756]
11   -0.0280043   [1.21907, 0.0717341, 142.518, 93.0946, 28.3674, 13.4752]
12   -0.0261761   [1.22857, 0.0535265, 142.507, 93.0742, 28.5985, 15.4616]
13   -0.0226728   [1.23642, 0.0331298, 142.5, 93.0514, 28.5777, 17.4612]
14   -0.022181   [1.24189, 0.0185733, 142.495, 93.0282, 28.7283, 19.4553]
15   -0.0190938   [1.25188, -0.00835667, 142.492, 93.0041, 28.7346, 21.455]
16   -0.0196048   [1.25686, -0.0400155, 142.497, 92.9792, 28.4755, 23.4377]
17   -0.0188159   [1.2638, -0.0595771, 142.508, 92.9557, 27.975, 25.3738]
18   -0.0174128   [1.27541, -0.0936444, 142.496, 92.9314, 29.3307, 26.8434]

  I&#39;ve done a deep analysis of the metrics value on my images, and it  
is very regular, so the gradient approach seems to be good. The global 
minimum with exhaustive search is good also.
I try the 1+1 evo optimizer, he is doing much better, but do not reach 
the desired minimum.

I really don&#39;t understand where does this behaviour comes from !

Does anyone have any idea of the step I could have missed up ?

Thanks in advance,

Regards,

Yann


Le 16/06/2011 20:09, asertyuio a écrit :
&gt;<i> Hi ITK Users !
</i>&gt;<i>
</i>&gt;<i> After I solved some problems, I managed to do a &quot;successful&quot; 
</i>&gt;<i> registration on my images, thanks ITK !
</i>&gt;<i> Now I want to raise the question of choosing a metric and an optimizer 
</i>&gt;<i> more adapted to my particular data.
</i>&gt;<i> I confess I&#39;m a bit lost in all the metrics and optimizer choice.
</i>&gt;<i>
</i>&gt;<i> To clearly explain my problem :
</i>&gt;<i> I&#39;m trying to align butterfly wings, that have been already segmented. 
</i>&gt;<i> The segmentation process separates the different colour patches into 
</i>&gt;<i> the wing and labels them. So I have a different colour number for each 
</i>&gt;<i> wing with the RGB value for each too (it is common to have for example 
</i>&gt;<i> one shade of orange for one wing, and both a light and dark orange for 
</i>&gt;<i> another).
</i>&gt;<i> For the moment, I&#39;m dealing with this by keeping only the intensity 
</i>&gt;<i> value on a gray level image and I&#39;m performing on it the registration 
</i>&gt;<i> with 2D similarity transform (that I need to do), the MeanSquares 
</i>&gt;<i> metrics and the regular step gradient optimizer and a mask to consider 
</i>&gt;<i> wing only on metric calculation.
</i>&gt;<i> But now, I&#39;m looking for a metric and optimizer that can take 
</i>&gt;<i> advantage of my segmentation process, and thus could be faster (I&#39;m 
</i>&gt;<i> around 80 steps for about 30s)
</i>&gt;<i>
</i>&gt;<i> There are two major problems with my images to take advantage of the 
</i>&gt;<i> segmentation :
</i>&gt;<i>
</i>&gt;<i> - The first one is that in different wings, the same label doesn&#39;t 
</i>&gt;<i> mean same colour, and on the same wing 2 different labels may 
</i>&gt;<i> correspond to relatively close colours. Therefore, I can&#39;t use the 
</i>&gt;<i> cardinal metric.
</i>&gt;<i>
</i>&gt;<i> - The second one is related to the wing themselves. I must register 
</i>&gt;<i> wings that can vary a lot in colour, with for example a patch that can 
</i>&gt;<i> be black on some wings and yellow on others. To address this, I was 
</i>&gt;<i> thinking using mutual information metric, despite the fact that wings 
</i>&gt;<i> have the same modality.
</i>&gt;<i>
</i>&gt;<i>
</i>&gt;<i> Scale factor is varying between 0.8 to 1.2, rotation between -30° to 
</i>&gt;<i> +30°, and translation less than 50 px, my images are round 300*200 px.
</i>&gt;<i>
</i>&gt;<i> Does it make sense to use mutual information on segmented images ?
</i>&gt;<i> Does anyone know a couple of metrics optimizers that would correspond 
</i>&gt;<i> better to my images ?
</i>&gt;<i> Is there any way of limiting optimizer to avoid obvious 
</i>&gt;<i> misregistration ( like one wing at 90° compare to another ) that 
</i>&gt;<i> happen sometime ?
</i>&gt;<i>
</i>&gt;<i> Thanks a lot for your insights !
</i>&gt;<i>
</i>&gt;<i> Yann</i></pre></span></div>