|
[Date Index]
[Thread Index]
[Author Index]
mutual information of red and green channel
- To: mathgroup at smc.vnet.net
- Subject: [mg81274] mutual information of red and green channel
- From: vickyisai at gmail.com
- Date: Tue, 18 Sep 2007 00:40:54 -0400 (EDT)
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:
Is RealTime3D back?
Next by Date:
Re: Defining a Function with an Indeterminate Number of Arguments
Previous by thread:
Re: Is RealTime3D back?
Next by thread:
Re: mutual information of red and green channel
|