Code covered by the BSD License  

Highlights from
a function with the simplest form to calculate the mutual information

image thumbnail

a function with the simplest form to calculate the mutual information

by

 

Here is a function with the simplest form to calculate the mutual information between two images.

test_mi
function test_mi
% Test for the function to calculate the MI between two images
% just run it!
 img = imread('peppers.png');
 im2 = img(:,:,2); % green component of the RGB image
 im3 = img(:,:,3); % blue  component of the RGB image
 [h w] = size(im2);
 p2 = im2(h/2-50:h/2+50,w/2-50:w/2+50);         % a patch in the middle of im2
 f = [];
 for t = -50:50
     p3 = im2(h/2-50:h/2+50,t+w/2-50:t+w/2+50); % a patch around the middle of im3
     f = [ f cal_mi(p2,p3)];
 end
 figure,imshow(im2),title('the Green component of the RGB image');
 figure,imshow(im3),title('the Blue component of the RGB image');
 figure,plot(f),title('the MI value between two patchs from the left to right side');
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function f = cal_mi(I1,I2)
% A function with the simplest form to
% compute Mutual Information of two images
% written by HU Xiubing
% Wuhan University,China
%  huxb@whu.edu.cn
size1 = size(I1);
size2 = size(I2);
if  ne(size1,size2)
    error('Please enter the same size images ! ');
end

I1 = I1(:);
I2 = I2(:);

min1 = min(I1); max1 = max(I1);
min2 = min(I2); max2 = max(I2);
N1 = max1 - min1 + 1;  % Grayscale of the image I1 
N2 = max2 - min2 + 1;  % Grayscale of the image I2
  
ht = zeros(N1,N2);     % Joint histogram    
for n = 1:length(I1);   
    ht(I1(n)-min1+1,I2(n)-min2+1) = ht(I1(n)-min1+1,I2(n)-min2+1) + 1;
end
    
ht = ht/length(I1);  % normalized joint histogram
ym = sum(ht );       % sum of the rows of normalized joint histogram
xm = sum(ht');       % sum of columns of normalized joint histogran
    
Hy   =      sum(ym.*log2(ym+(ym==0)));
Hx   =      sum(xm.*log2(xm+(xm==0)));
h_xy =  sum(sum(ht.*log2(ht+(ht==0)))); % joint entropy
    
f = -(Hx+Hy)/h_xy;   % Mutual information

Contact us