[Insight-users] parameters of viola & wells mutual information metric

Luis Ibanez luis.ibanez at kitware.com
Thu Oct 21 11:03:07 EDT 2004


Hi Kristina,


Thanks for pointing this out.

The potential problem between the Mutual Information
metric and the Kernels that return negative values
has been logged as Bug entry # 1267

http://www.itk.org/Bug/bug.php?op=show&bugid=1267&pos=0

The code in the .txx file has now been modified in
order to check for negative values, and if they
appear, their log() contributions are ignored.

This fix has been commited to the CVS repository.
http://www.itk.org/cgi-bin/viewcvs.cgi/Code/Algorithms/itkMutualInformationImageToImageMetric.txx?root=Insight&sortby=date&r2=1.52&r1=1.51

Note that the fact that polynomial kernels can return
negative values, makes them suspicious for being used
in the estimation of the Entropies...


Please update your CVS checkout and let us know if
you encounter any other problem.


    Thanks


      Luis


--------------------------
Kristina Grunewald wrote:

> Hi Luis,
> 
> thanks for your reply.
> First of all I didn't call GetValueAndDerivative() but GetValue().
> I have now reduced the number of sampling points to less than 200.
> Using the gaussian kernel takes 0.015 sec per method call.
> Using a bspline kernel  of
> order 0     0.005 sec
> order 1     0.01 sec
> order 2     0.016 sec
> order 3     0.02 sec
> So the computation time is acceptable fast now, but the results are not 
> satisfactory.
> Anyway, I will probably use another metric.
> 
> One question remains though:
> I also tried to employ a BSplineDerivativeKernelFunction.
> This didn't work at all.
> This is due to the fact that an invalid operation is conducted in line 
> 215 of itkMutualInformationImageToImageMetric.txx.
> dLogSumFixed -= log( dSumFixed );
> dSumFixed is often negative (it is the sum of the kernel evaluations, 
> that are negative in most cases). There should at least be a check for 
> that.
> 
> Is this kernel function not intended to be used with the viola & wells 
> metric?
> 
> Thanks,
> Kristina
> 
> 
> 
> 
> Luis Ibanez wrote:
> 
>>
>> Hi Kristina,
>>
>> In general terms, the computation time of one GetValueAndDerivatives()
>> call of the MutualInformation metric, is proportional to he number of
>> Sampling points.
>>
>> Note that, it has been shown both theoretically and experimentally
>> that the number of sampling points is almost irrelevant for the
>> results of registration based on Mutual Information.
>>
>> So, in principle, you want to experiment by reducing the number of
>> sampling points in this metric.
>>
>>
>> Note that your choice of the KernelFunction is also critical for
>> the run-time performance of this metric. Did you found the BSpline
>> Kernel to be faster than the default GaussianKernel ??
>>
>>
>> Please let us know,
>>
>>
>>    Thanks
>>
>>
>>      Luis
>>
>>
>>
>> -------------------------
>> Kristina Grunewald wrote:
>>
>>> Hello,
>>>
>>> I am translating an image over another. I now want to compute the 
>>> values of the MutualInformationImageToImageMetric at 16 different 
>>> positions.
>>> It is about 2 3d MR images.
>>> FI:
>>>  size:    192x256x32
>>>  spacing: 1.875x1.875x5.0
>>> MI:
>>>  size:    256x256x30
>>>  spacing: 1.5625x1.5625x6.0
>>>
>>> I therefore normalised the 2 images, and then set the moving and the 
>>> fixed image standard deviation to 0.4 as proposed.
>>> As kernel function I use a BSplineKernelFunction of spline order 3.
>>> Then I use 1% of the pixels of the larger of the 2 images.
>>> This might of course not be enough but my question aims at sth. else.
>>> I wonder about the computing time.
>>> Computing these 16 values takes about 45 minutes.
>>> I am not really translating the mi, i.e. I am not resampling it, I am 
>>> just changing the parameters I pass the metric->GetValue() method.
>>> Employing a gaussian kernel does't make a difference, it runs for ages.
>>>
>>> Doing exactly the same with the mattes metric, it goes a lot faster. 
>>> But there I have the possiblity to set histogram bins.
>>> Computing 6400 values with 1% of the pixels and 10 histogram bins 
>>> takes less than 10 minutes and gives me a reasonable result.
>>>
>>> What could cause this huge difference in computing time?
>>> Or am I applying the metric wrongly?
>>>
>>> Thanks,
>>> Kristina
>>>
>>>
>>> _______________________________________________
>>> Insight-users mailing list
>>> Insight-users at itk.org
>>> http://www.itk.org/mailman/listinfo/insight-users
>>>
>>>
>>
>>
>>
>>
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
> 
> 






More information about the Insight-users mailing list