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]] ] ] ]