[Insight-users] About mutual information and joint histogram

Luis Ibanez luis.ibanez at kitware.com
Fri Jan 13 14:19:06 EST 2006


Hi Fricotin,

Please read the following ITK Wiki page:

    http://www.itk.org/Wiki/ITK_Mutual_Information


Mutual Information *does not* get to an infinite value.


The concept of Mutual Information is how much the
knowledge of one random variable reduce the uncertainty
about another second variable. Since that uncertainty is
not infinite, the reduction cannot be infinite either.


The maximum value that you can expect to get from a
Mutual Information measure is equal to the entropy
of the second random variable.


In a practical case, this can achieved when you take two
identical images and superimpose them with an identity
transform.

In that case, the value of Mutual Information will be
equal to the entropy of the image and it is measured
in "bits".


It is important to keep reminding that "bits" are units
of amount of information, not a measure of memory size nor
a measure of disk space.  Unfortunately the meaning of bits
and bytes have been distorted by its common usage as a
measure of storage capacity.


Please let us know if you have further questions.


    Thanks


       Luis



-------------------
Fricotin Bibi wrote:
>  Hello
> 
> I started to work on the registration framework provided by itk.
> My question is:
> what is the optimal value that can be reached by the metric based on 
> mutual information in itk.
> (like itkMattesMutualInformationImageToImageMetric for exemple)
> 
> The ITK software guide suggest -1 in the figure results (on fig.8.39 
> p387) but I thought Mutual Information was infinity when  2 image are 
> registered (It's Ok for the minus for the minimization)
> 
> Is it because the images are normalized?
> 
> 
> Another question about Joint histogram
> 
> I tried to compile the joint histogram plotter that can be found at 
> Examples/Registration/ImageRegistrationHistogramPlotter.cxx
> and i got the following errors:
> 
> Linking CXX executable JHisto
> CMakeFiles/JHisto.dir/JHisto.o(.gnu.linkonce.t._ZN3itk10Statistics23DenseFrequencyContainer3NewEv+0x59): 
> In function `itk::Statistics::DenseFrequencyContainer::New()! ':
> : undefined reference to 
> `itk::Statistics::DenseFrequencyContainer::DenseFrequencyContainer[in-charge]()'
> CMakeFiles/JHisto.dir/JHisto.o(.gnu.linkonce.t._ZN3itk13ObjectFactoryINS_10Statistics23DenseFrequencyContainerEE6CreateEv+0xd): 
> In function 
> `itk::ObjectFactory<itk::Statistics::DenseFrequencyContainer>::Create()':
> : undefined reference to `typeinfo for 
> itk::Statistics::DenseFrequencyContainer'
> CMakeFiles/JHisto.dir/JHisto.o(.gnu.linkonce.t._ZN3itk13ObjectFactoryINS_10Statistics23DenseFrequencyContainerEE6CreateEv+0x4e): 
> In function 
> `itk::ObjectFactory<itk::Statistics::DenseFrequencyContainer>::Create()':
> : undefined reference to `typeinfo for 
> itk::Statistics::DenseFrequencyContainer'
> CMakeFiles/JHisto.dir/JHisto.o(.gnu.linkonce.t._ZN3itk10Statistics9HistogramIdLj2ENS0_23DenseFrequencyContainerEE10InitializeERKNS_4SizeILj2EEE+0x164): 
> In function `itk::Statistics::Histogram<double, (unsigned)2, 
> itk::Statistics::DenseFrequencyContainer>::Initialize(itk::Size<(unsigned)2> 
> const&)':
> : undefined reference to 
> `itk::Statistics::DenseFrequencyContainer::Initialize(unsigned long)'
> CMakeFiles/JHisto.dir/JHisto.o(.gnu.linkonce.t._ZNK3itk10Statistics9HistogramIdLj2ENS0_23DenseFrequencyContainerEE12GetFrequencyERKm+0x23): 
> In function `itk::Statistics::Histogram<double, (unsigned)2, 
> itk::Statistics::DenseFrequencyContainer>::GetFrequency(unsigned long 
> const&) const':
> : undefined reference to 
> `itk::Statistics::DenseFrequencyContainer::GetFrequency(unsigned long) 
> const'
> CMakeFiles/JHisto.dir/JHisto.o(.gnu.linkonce.t._ZN3itk10Statistics9HistogramIdLj2ENS0_23DenseFrequencyContainerEE17IncreaseFrequencyERKmf+0x2a): 
> In function `itk::Statistics::Histogram<double, (unsigned)2, 
> itk::Statistics::DenseFrequencyContainer>::IncreaseFrequency(unsigned 
> long const&, float)':
> : undefined reference to 
> `itk::Statistics::DenseFrequencyContainer::IncreaseFrequency(unsigned 
> long, float)'
> CMakeFiles/JHisto.dir/JHisto.o(.gnu.linkonce.t._ZN3itk10Statistics9HistogramIdLj2ENS0_23DenseFrequencyContainerEE9SetToZeroEv+0x18): 
> In function `itk::Statistics::Histogram<double, (unsigned)2, 
> itk::Statistics::DenseFrequencyContainer>::SetToZero()':
> : undefined reference to 
> `itk::Statistics::DenseFrequencyContainer::SetToZero()'
> CMakeFiles/JHisto.dir/JHisto.o(.gnu.linkonce.t._ZN3itk10Statistics9HistogramIdLj2ENS0_23DenseFrequencyContainerEE12SetFrequencyERKmf+0x2a): 
> In function `itk::Statistics::Histogram<double, (unsigned)2, 
> itk::Statistics::DenseFrequencyContainer>::SetFrequency(unsigned long 
> const&, float)':
> : undefined reference to 
> `itk::Statistics::DenseFrequencyContainer::SetFrequency(unsigned long, 
> float)'
> collect2: ld a retourné 1 code d'état d'exécution
> make[2]: *** [JHisto] Erreur 1
> make[1]: *** [CMakeFiles/JHisto.dir/all] Erreur 2
> m! ake: *** [all] Erreur 2
> 
> i use a gentoo-based linux distribution and the other examples works well
> gcc vesion is 3.3.5 and itk is 2.4.1
> 
> Any idea??
> 
> ------------------------------------------------------------------------
> Nouveau : téléphonez moins cher avec Yahoo! Messenger ! Découvez les 
> tarifs exceptionnels pour appeler la France et l'international. 
> Téléchargez 
> <http://us.rd.yahoo.com/messenger/mail_taglines/default/*http://fr.beta.messenger.yahoo.com> 
> la version beta.
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> 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