⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mutualinformation.m

📁 matlab Mutual information 源代码
💻 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 + -