|
[Date Index]
[Thread Index]
[Author Index]
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
> http://upload.wikimedia.org/math/c/b/b/cbb518be041b820958181a932a5cd4ff.png
> )
>
> 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
|