Re: mutual information of red and green channel

• To: mathgroup at smc.vnet.net
• Subject: [mg81327] Re: mutual information of red and green channel
• From: dh <dh at metrohm.ch>
• Date: Wed, 19 Sep 2007 05:32:24 -0400 (EDT)
• References: <fcnljv\$sc3\$1@smc.vnet.net>

```
Hy,

to prevent zero divide errors, you can e.g. preload every bin with a

small number.

hope this helps, Daniel

vickyisai at gmail.com wrote:

> Hello

>

> I am using the following code to calculate mutual information of red

> and green channel of an image.

>

> I am calculating Ixy= Sum(i)Sum(j) P(REDi,GREENj) Log[P(REDi,GREENj)/

> P(REDi)/P(GREENj)  ]

>

> (that is this formula

> )

>

> I am getting an error of  "Indeterminate expression 0(-=E2=88=9E) encountered.

> "

>

> I believe I am getting this because I am taking Probability of Redi

> from a histogram that I have computed (value of REDi divided by total

> no of pixels ....as my probability of REDi. ame for GREENj

> But that histogram has 0 at some places which is leading to divide by

> zero.

>

> (i plotted that histogram to check that)

>

> How should I calculated mutual information of red and green channel of

> an image.

>

> ( I use Mathematica 5.2 and dont have image processing package)

> Thank You

>

> Code is below:

> --------------------------------------------------------------------------

> image=Import["c:/fish.ppm"];

> (* Show[image]; *)

>

>

>

> part=image[[1,1]];

>

> red=part[[All,All,1]];

>

> histRed=Table[0,{256}];

>

> For[i=1,i<Dimensions[red][[1]],++i,

>   For[j=1,j<Dimensions[red][[2]],++j,

>     indxr=Floor[red[[i,j]]]+1;

>     histRed[[indxr]]=histRed[[indxr]]+1;

>     ]

>   ]

> (* histR=ListPlot[histRed,PlotJoined=EF=94=A2True]; *)

>

> green=part[[All,All,2]];

> histGreen=Table[0,{256}];

>

> For[i=1,i<Dimensions[green][[1]],++i,

>   For[j=1,j<Dimensions[green][[2]],++j,

>     indxg=Floor[green[[i,j]]]+1;

>     histGreen[[indxg]]=histGreen[[indxg]]+1;

>     ]

>   ]

> (* histG=ListPlot[histGreen,PlotJoined=EF=94=A2True]; *)

>

>

> (* Joint Prob. Matrix *)

> joinRG=Table[0,{256},{256}];

>

> For[i=1,i<Dimensions[red][[1]],++i,

> 	For[j=1,j<Dimensions[green][[2]], ++j,

> 		idx1=Floor[red[[i,j]]]+1;

> 		idx2=Floor[green[[i,j]]]+1;

> 		joinRG[[idx1,idx2]]=joinRG[[idx1,idx2]]+1;

> 	]

> ]

>

> (*  Ixy= Sum(i)Sum(j) P(xi,yj) Log[P(xi,yj)/P(xi)/P(yj) *)

>

> For[i=1,i<Dimensions[histRed][[1]],++i,

> 	For[j=1,j<Dimensions[histGreen][[1]],++j,

> 		Ixy = Ixy + joinRG[[i,j]] / 65536 * Log[2 , ,joinRG[[i,j]] /

> histRed[[i]] / histGreen[[j]]   ]

> 	]

> ]

>

>

```

• Prev by Date: Supercomputing Engine for Mathematica (SEM) now available
• Next by Date: Re: SWF runs to fast
• Previous by thread: mutual information of red and green channel
• Next by thread: Re: mutual information of red and green channel