www.gusucode.com > 《图像配准技术及其Matlab编程实现》--源码程序 > 《图像配准技术及其Matlab编程实现》/match/CalculateMI.m
function mi=CalculateMI(a,b) %参数:a:输入图像a % b:输入图像b % mi:图像a和b的互信息值 %功能:利用一个联合直方图,计算两幅图像的互信息值。 a=double(a); b=double(b); [M,N]=size(a); hab=zeros(256,256); pad=zeros(256,256); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if max(max(a))~=min(min(a)) a=(a-min(min(a)))/(max(max(a))-min(min(a))); else a=zeros(M,N); end if max(max(b))-min(min(b)) b=(b-min(min(b)))/(max(max(b))-min(min(b))); else b=zeros(M,N); end a=double(int16(a*255))+1; b=double(int16(b*255))+1; for i=1:M for j=1:N index_x=a(i,j); index_y=b(i,j); hab(index_x,index_y)=hab(index_x,index_y)+1; end end habsum=sum(sum(hab)); index=find(hab~=0); pab=hab/habsum; Hab=sum(sum(-pad(index).*log2(pab(index)))); pa=sum(pab'); index=find(pa~=0); Ha=sum(sum(-pa(index).*log2(pa(index)))); pb=sum(pab); index=find(pb~=0); Hb=sum(sum(-pb(index).*log2(pb(index)))); mi=Ha+Hb-Hab %CalculateMI('line.bmp','lena.bmp');