《MATLAB互信息函数.docx》由会员分享,可在线阅读,更多相关《MATLAB互信息函数.docx(2页珍藏版)》请在三一文库上搜索。
1、MATLAB互信息函数function mi,mi1=CalculateMI(a,b,gray_level,normalization)%,a_nogray,b_nogray)%参数 :a-输入图像 ab-输入图像bmi-图像 a 与b 互信息值normalization-就是否归一化互信息值,默认0 不归一化功能 :利用一个联合直方图,计算两幅图像的互信息值% if nargin 6% b_nogray = ;% end% if nargin 5% a_nogray = ;% endif nargin 4 | isempty(normalization)normalization = 0;e
2、ndif nargin 255 %保证图像为8 位灰度图a = a/max(max(a)*255;endif max(max(b) 255b = b/max(max(b)*255;endif gray_level = 256%当灰度等级不为256 时a = a/max(max(a)*gray_level;b = b/max(max(b)*gray_level;endM,N=size(a);hab=zeros(gray_level,gray_level);if max(max(a)=min(min(a)a=(a-min(min(a)/(max(max(a)-min(min(a);elsea=ze
3、ros(M,N);MATLAB互信息函数endif max(max(b)=min(min(b)b=(b-min(min(b)/(max(max(b)-min(min(b);elseb=zeros(M,N);enda=double(int16(a*(gray_level-1)+1;b=double(int16(b*(gray_level-1)+1;for i=1:Mfor j=1:Nindex_x=a(i,j);index_y=b(i,j);hab(index_x,index_y)=hab(index_x,index_y)+1;endendhabsum=M*N;% if isempty(a_no
4、gray)% hab(1:a_nogray+1,:) = 0;% end% if isempty(b_nogray)% hab(:,b_nogray+1) = 0;% end%index=find(hab=0);pab=hab/habsum; Hab=sum(sum(-pab(index) 、 *log2(pab(index); pa=sum(pab);index=find(pa=0); Ha=sum(-pa(index)、 *log2(pa(index); pb=sum(pab);index=find(pb=0); Hb=sum(-pb(index) 、 *log2(pb(index); if normalization = 1mi = (Ha+Hb)/Hab;elsemi=Ha+Hb-Hab;endmi1 = (Ha+Hb)/Hab;