📄 mutualinformation.m
字号:
%%%
%%% MUTUALINFORMATION: compute the mutual information between two images
%%% mutualinformation( im1, im2 )
%%% im1: grayscale or color image, or 1-D signal
%%% im2: must be same size as im1
%%% Hany Farid; Image Science Group; Dartmouth College
%%% 9.27.06
function[ MI ] = mutualinformation( im1, im2 )
if( size(im1) ~= size(im2) )
fprintf( 'images must be same size... aborting\n' );
MI = -1;
return;
end
bins = [0:8:255];
N = length(bins);
%%% JOINT HISTOGRAM
joint = zeros( N, N );
X1 = im1(:);
X2 = im2(:);
maxval = max( [X1 ; X2] );
X1 = round( X1 * (N-1)/maxval ) + 1;
X2 = round( X2 * (N-1)/maxval ) + 1;
for k = 1 : length(X1)
joint( X1(k), X2(k) ) = joint( X1(k), X2(k) ) + 1;
end
joint = joint / sum(joint(:));
%%% MARGINALS
NX2 = sum( joint );
NX1 = sum( joint' );
%%% MUTUAL INFORMATION
MI = 0;
for i = 1 : N
for j = 1 : N
if( joint(i,j)>eps & NX1(i)>eps & NX2(j)> eps )
MI = MI + joint(i,j) * log( joint(i,j)/(NX1(i)*NX2(j)) );
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -